Changes between Initial Version and Version 1 of Release/2.4.0-News


Ignore:
Timestamp:
Dec 14, 2018, 1:32:48 PM (5 years ago)
Author:
Even Rouault
Comment:

2.4.0 news page

Legend:

Unmodified
Added
Removed
Modified
  • Release/2.4.0-News

    v1 v1  
     1= GDAL/OGR 2.4.0 Release Notes =
     2
     3== In a nutshell... ==
     4
     5 * New GDAL drivers:
     6   - BYN: read/write support for Natural Resources Canada's Geoid binary format
     7   - EEDAI: read-only driver for Google Earth Engine Data API
     8   - IGNFHeightASCIIGrid: read-only driver to read IGN-France height correction ASCII grids
     9   - NGW: NextGIS Web read-only driver
     10   - NTv1: read-only driver for NTv1 datum shift grids
     11 * New OGR drivers:
     12   - EEDA: read-only driver for Google Earth Engine Data API
     13   - GeoJSONSeq: read/creation support of new-line or record-separator separated GeoJSON features (#378)
     14   - NGW: NextGIS Web read-write driver
     15 * Improved drivers:
     16   - BAG: add read support for variable-resolution grids, and write support for single-resolution grids
     17   - GTiff driver: add Lerc and WebP codecs
     18   - PostgisRaster: add support for out-db rasters
     19   - RMF
     20   - MSSQLSpatial
     21 * RFC 72: Make GDAL Python autotest suite use pytest framework
     22 * Add /vsihdfs/ virtual file system handler for Hadoop File System (via libhdfs)
     23 * Add /vsiwebhdfs/ read-write virtual file system for Web Hadoop File System REST API
     24 * gdal_contour rewriting: speed optimizations and capability to compute polygon isosurfaces.
     25 * Remove PHP and Ruby bindings.
     26 * Continued code linting in C++, Python scripts, Shell scripts and autotest
     27
     28== Backward compatibility issues ==
     29 * The value of COMPRESSION_ZSTD used for ZStd-in-TIFF compression has been changed. ZStd-compressed TIFF files produced by GDAL 2.3.0 will not be readable
     30
     31== GDAL/OGR 2.4.0 - General Changes ==
     32
     33Build(Unix):
     34 * configure: error out when --enable-pdf-plugin is used with --with-libtool since frmts/pdf/GNUmakefile isn't ready for that (#556)
     35 * Fix compilation in C++17 mode with older ogdi headers
     36 * Fix the datadir in gdal.pc.
     37 * re-install cpl_vsi_error.h
     38 * update GRASS drivers to support GRASS 7.4.0 (#639, #633)
     39 * configure: use CXXFLAGS when CXX is used (#693)
     40 * GNUmakfile: fix dependency of install target (#707)
     41 * configure: fix 12 bit JPEG-in-TIFF support (#716)
     42 * configure: Remove additionnal '$' in front of '${CXX}' to fix ECW5 detection
     43 * configure: use ogdi.pc if available
     44 * Set minimum pkg-config version to 0.21
     45 * fix potential link errors when using internal libgif and internal libpng but headers of those libraries are available in the system in different versions than our internal ones (#938)
     46
     47Build(Windows):
     48 * nmake.opt: allow install into paths with spaces
     49 * MBTiles driver: fix issue in Makefile
     50 * Fix HDF4 Plugin build for Visual C++ (#624)
     51 * NMAKE: copy gdal pdb to $(LIBDIR) in libinstall target
     52 * NMAKE: Enable friendlier static library builds to allow an external `DLLBUILD = 0`
     53 * nmake.opt: allow DEBUG=0 to be set (#703)
     54 * Do not include DllMain() in static library builds
     55 * add support for JPEGLS driver
     56
     57All:
     58 * Add support for Poppler 0.64, 0.69, 0.71
     59 * avoid compilation error when compiling GMT's gmtdigitize.c that defines _XOPEN_SOURCE to empty (#590)
     60 * Fix build against PDFium (#612)
     61 * Add support for MySQL 8.0
     62
     63== GDAL 2.4.0 - Overview of Changes ==
     64
     65Port:
     66 * Add multi-threaded compression to /vsigzip/ and /vsizip/
     67 * /vsizip/: create ZIP64 when needed
     68 * /vsizip/: encode filename in Unicode when needed also in local file header
     69 * /vsigzip/: allow seeking to beginning of file, despite decompression error
     70 * /vsicurl/: extend retry logic to HTTP 500 and HTTP 400 with RequestTimeout, emit a CE_Warning if code != 400 and != 404
     71 * /vsicurl/: fix parsing of HTML file listing that got broken in GDAL 2.3.0
     72 * /vsicurl/ and derived: implement a LRU cache for file properties (instead of ever growing cache)
     73 * /vsicurl/ and derived: implement a LRU cache for directory content listing
     74 * /vsicurl/: make GetCurlMultiHandleFor() more thread-safe
     75 * HTTP: added curl cookiefile and cookiejar variables (fixes #1000)
     76 * /vsioss/: fix support of filenames with spaces
     77 * /vsizip/: output explicit error message when encountering a unsupported file compression method
     78 * /vsis3/: fix VSIStatL() on a directory (#603)
     79 * /vsis3/: take into account AWS_CONTAINER_CREDENTIALS_RELATIVE_URI for ECS instances (#673)
     80 * /vsis3/: honour CPL_VSIL_CURL_ALLOWED_EXTENSIONS configuration option (#995)
     81 * /vsis3/: ignores files with GLACIER storage class in directory listing, unless CPL_VSIL_CURL_IGNORE_GLACIER_STORAGE=NO
     82 * /vsiaz/: support BlobEndpoint element in AZURE_STORAGE_CONNECTION_STRING such as found in Azurite (#957)
     83 * Add a VSICurlPartialClearCache(const char* filenameprefix) function to partially clear the /vsicurl/ and related caches; and bind it to SWIG
     84 * Add VSISync() to synchronize source and target files/directories
     85 * /vsitar/: support headers with fields using star base-256 coding (#675)
     86 * Add VSIOpenDir/VSIGetNextDirEntry/VSICloseDir and provide efficient recursive implementation for /vsis3/, /vsigs/, /vsioss/ and /vsiaz/
     87 * Detect Amazon EC2 instances that use the newer hypervisor. Deprecates CPL_AWS_CHECK_HYPERVISOR_UUID and replaces with CPL_AWS_AUTODETECT_EC2
     88 * CPLString class: rework visibility of exported symbols for Visual Studio (rework of #321) (#636)
     89 * CPLGetPhysicalRAM(): take into account cgroup limitation (Docker use case), and rlimit (#640)
     90 * CPLGetNumCPUs(): take into account cgroup limitation.
     91 * ODBC: Improve Fetch() error handling.
     92 * ODBC: get multiple ODBC error messages.
     93 * ODBC: Fetch wide-char strings on UNIX (#839)
     94 * Fix buffer overflow in GDALDefaultCSVFilename with GDAL_NO_HARDCODED_FIND (#683)
     95 * VSIZipFilesystemHandler::Open: Fix leaks of poVirtualHandle (#699)
     96 * Fix date-time formatting for /vsigs/, /vsiaz/ and /vsioss/ protocols with non-C locales
     97 * CPLQuadTreeGetAdvisedMaxDepth(): avoid int overflow. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9248
     98 * CPLJSonStreamingParser: make it error on invalid array constructs (#970)
     99 * Add a GDAL_HTTPS_PROXY configuration option to selectively setup proxy for https only connections (#972)
     100 * Add template class CPLAutoClose (#952)
     101 * Make VSIToCPLError() handle the generic VSIE_AWSError (#1007)
     102 * Propagate error handler user data correctly (#1098)
     103 * CPLOpenSSLCleanup(): reset callbacks to nullptr to avoid potential segfault
     104
     105Core:
     106 * SetStatistics(): write a STATISTICS_APPROXIMATE=YES metadata item if bApproxOK=true, and take it into account in GetStatistics() (trac #4857, trac #4576)
     107 * Add percentage of valid pixels to metadata when computing raster band statistics (#698)
     108 * Overview creation: avoid creating too many levels, and fix related heap buffer overflow (#557,#561)
     109 * Overview: fix wrong computation of source pixel indices for AVERAGE and pixel-interleave bands
     110 * Lanczos rasterio/overview/warp: do not compute target pixel if there are too many missing source pixels, to avoid weird visual effects depending on if valid source pixels match positive or negative kernel weights
     111 * Overview / RasterIO resampling: do not use nodata value as a valid output value
     112 * RawRasterBand: only accept VSILFILE*
     113 * Add alpha mask flag for alpha band in Uint16 One band dataset (#742)
     114 * GetMaskBand(): do not use a GDALNoDataMaskBand when nodata value is out of range (#754)
     115 * Pleiades metadata reader: Add more strict check (#431)
     116 * Statistics/minmax computation: on a float32 raster, be more tolerant when the nodata is slightly larger than +/- FLOAT_MAX
     117 * GDALNoDataMaskBand: improve performance in downsampling cases
     118 * GDALDestroy(): no longer call it automatically on GCC/CLang (non-MSVC) builds
     119 * GDALGetJPEG2000Structure(): avoid excessive memory allocation. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8268
     120 * Implement GDALAllValidMaskBand::ComputeStatistics(). Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9309
     121 * PAMDataset: avoid illegal down_cast to GDALPamRasterBand. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9358
     122 * GDALOpenEx(): improve anti recursion detection. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9391
     123 * GDALResampleChunk32R_Convolution: avoid invalid left shift. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9477
     124 * Gauss resampling: fix potential read heap buffer overflow in corner cases. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9783
     125 * GDALDefaultOverviews::OverviewScan(): avoid potential infinite recursion. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10153
     126 * GDALPamRasterBand::CloneInfo(): do not clone empty RAT
     127
     128Algorithms:
     129 * OpenCL wrapper: fix memory leak
     130 * Warper: add complex nodata handling in average/min/max modes
     131 * TPS solver: improve numerical stability, for non Armadillo builds, for points not centered on (0,0)
     132 * GCP polynomial interpolation: fix bug where worst_oultier always assumed polynomial order 2
     133 * GCP polynomial interpolation: fix bug where remove_ouliers used the parameters of the reverse transformation
     134 * GDALGridLinear(): speed-up search of triangle for points outside of the triangulation
     135 * gdal_grid linear: avoid artifacts with degenerate triangles (#638)
     136 * GDALPansharpenOperation::Initialize(): validate value of GDAL_NUM_THREADS (CID 1393944)
     137 * GDALFillNodata(): add NODATA option
     138 * GDALDEMProcessing(): fix null pointer dereference if psOptionsIn == nullptr (#931)
     139
     140Utilities:
     141 * gdal_translate: make -stats option work with -co COPY_SRC_OVERVIEWS=YES (#792)
     142 * gdal_translate: fix RPC correction when using -srcwin with negative offsets (#827)
     143 * gdalwarp: automatically enable SKIP_NOSOURCE=YES when it is safe to do so
     144 * gdalwarp: make -crop_to_cutline stick to source pixel boundaries when no raster reprojection is involved, to avoid unnecessary resampling or resolution change
     145 * gdalwarp -r average: better deal with south-up oriented datasets (#778)
     146 * gdalwarp: improve robustness of computation of source raster window for a given target raster window (#862)
     147 * gdalwarp: allow to create bottom-up grid with -te xmin ymax ymin ymin
     148 * gdalwarp: fix crash when warping on an existing dataset with less bands as needed
     149 * gdal_contour: speed optimizations and capability to compute polygon isosurfaces.
     150 * gdal_contour: add amin and amax parameter for gdal_contour to be used with option -p
     151 * gdal_contour: avoid out-of-memory situation (#594)
     152 * gdal_contour: fix GDAL 2.3 regression with fixed interval contouring that resulted in discontinuities in contour lines (#889)
     153 * gdal_merge.py: deal with NaN values
     154 * gdal_retile.py: fix rounding issues when computing source and target regions (#670)
     155 * gdal_calc.py: add --optfile switch
     156 * gdal2tiles: fix wrong computation of min zoom level in some cases (#730)
     157 * gdal2tiles: add -x option for skipping transparent tile generation
     158 * gdal2tiles: fix performance issue by caching source dataset; GDALAutoCreateWarpedVRT()
     159 * gdal2tiles: fix issue with out-of-range nodata values (#770)
     160 * gdal2tiles: restore GDAL < 2.3 behaviour when output directory is not explicitly specified (#795)
     161 * gdal2tiles: fix --force-kml (#809)
     162 * gdal_edit.py: add -setstats to set "fake" statistics (#819)
     163 * gdal_edit.py: add -unsetrpc option to gdal_edit.py, and fix GTiff driver to be able to clear RPC
     164 * gdal_grid: fix -clipsrc from a vector datasource (broken at least since GDAL 2.1)
     165 * gdalenhance: avoid potential nullptr dereference (CID 1394096)
     166 * make sure that --config is early evaluated for config options such as CPL_VSIL_CURL_CHUNK_SIZE that are read early
     167
     168Multi driver changes:
     169 * HFA and KEA: better support for writing RATs (trac #4903)
     170 * Fix creation of large enough datasets with drivers EHdr, ENVI and ISCE that failed due to inappropriate check on file size whereas the file wasn't filled yet (#705, 2.3.0 regression)
     171
     172BAG driver:
     173 * avoid warnings when reading georeferencing
     174 * get datetime
     175 * safer retrieval of variable extents
     176 * add read support for variable-resolution grids, and write support for single-resolution grids
     177
     178E00GRID driver:
     179 * correctly parse projection sections that have lines with tildes (#894)
     180
     181EHdr driver:
     182 * only write .stx if bApproxOK=false (#514)
     183
     184ENVI driver:
     185 * support reading truncated datasets (#915)
     186
     187ERS driver:
     188 * fix quadratic performance in parsing .ers header. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8404
     189 * avoid excessive memory allocation. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8497
     190 * avoid potential stack overflow. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8614
     191 * prevent infinite recursion. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8744
     192 * avoid potential bad cast. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8745
     193
     194FIT driver:
     195 * avoid excessive block size on creation. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8292
     196 * error out in CreateCopy() on failed I/O on source dataset. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8338
     197
     198GeoRaster driver:
     199 * Fix the issue by freeing the temporary lobs created by readCLob() and writeCLOB().
     200
     201GPKG driver:
     202 * fix memleak if I/O error occurs on write
     203 * retrieve original raster file when using gdal_translate -co APPEND_SUBDATASET=YES with other gdal_translate switches
     204 * copy source metadata when using TILING_SCHEME
     205 * properly delete gridded coverage raster layers
     206
     207GRIB driver:
     208 * replace DataSource and derived classes with VSILFILE directly for > 4GB file support on Windows
     209 * turn printf() warning as CPLDebug() messages
     210 * read and write missing data values correctly for complex packing when original data is integer (#1063)
     211 * g2clib: avoid int overflow. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8194
     212 * g2clib: avoid potential out of bound access (CID 1393528)
     213 * degrib: fix floating point division by zero. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9407.
     214 * degrib: avoid potential floating point division by zero. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10291
     215 * add UNIT[] node to SRS on reading, so that is valid
     216
     217GTiff driver:
     218 * Add TIFF Lerc codec (in GTiff driver itself)
     219 * Add TIFF WebP codec (in libtiff)
     220 * save XMP on field TIFFTAG_XMLPACKET (#767)
     221 * fix retrieving mask band of overview band when the mask is external. Fixes -co COPY_SRC_OVERVIEWS=YES of such datasets (#754)
     222 * improve progress report in CreateCopy() when there is a mask (#935)
     223 * improve performance reading multi-band 1-bit data. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7840.
     224 * internal libtiff: updated to libtiff 4.0.10
     225 * internal libgeotiff: resync with upstream.
     226 * workaround bug in currently released libgeotiff versions, where when rewriting a ASCII key with a string value longer than the original value (#641)
     227 * allow the use of PREDICTOR with ZSTD compression
     228 * avoid various memory corruptions in case of some corrupted file. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8488
     229 * load PAM if not already done when GetDefaultRAT() is called
     230 * fix missing #ifdef causing compilation failure due to missing bTryCopy (#946)
     231
     232HDF4 driver:
     233 * quote swath and field names if needed (if they contain spaces, column, quotes) in HDF4_EOS subdataset names
     234
     235HDF5 driver:
     236 * add VSI functionality (#786)
     237 * fix reading variable names with single character (#622)
     238 * fix HDF5 object leak (thus preventing file closing) on datasets with variable length attributes (#933)
     239
     240HFA driver:
     241 * fix floating point division by zero. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9201
     242 * fix division by zero. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10190
     243
     244HTTP driver:
     245 * do not immediately delete a file used by the JP2OpenJPEG driver
     246
     247ILWIS driver:
     248 * Fix performance issue on creation with big number of bands. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9062
     249
     250IRIS driver:
     251 * add UNIT[] node to SRS on reading, so that is valid
     252 * avoid infinite loop. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8256 and 8439
     253
     254ISCE driver:
     255 * do not try to stat() mainfile.xml if mainfile does not exist
     256
     257ISIS3 driver:
     258
     259FITS driver:
     260 * allow reading/writing beyond 2 billion pixels limit
     261
     262JP2OpenJPEG driver:
     263 * allow YCC for non-Byte datasets; and allow 4-band MCT with openjpeg >= 2.2
     264 * add CODEBLOCK_STYLE creation option for OpenJPEG >= 2.3
     265 * add support for generating and using external overviews
     266
     267JPEG driver:
     268 * slightly improve performance of whole RGB image loading with pixel-interleaved buffer
     269 * Internal libjpeg: Avoid integer overflow on corrupted image in decode_mcu_DC_first() (https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9447)
     270
     271JPEGLS driver:
     272 * Add support for CharLS 2 (#632)
     273
     274MRF driver:
     275 * Add TestBlock(), skip empty areas when building overviews
     276 * Fix detection of Lerc2 data
     277 * Resync with upstream LercLib and put it in third_party/LercLib
     278
     279NetCDF driver:
     280 * add VSI functionality on Linux (#786)
     281 * add support for longitude values wrapping at 180deg of longitude (#1114)
     282 * avoid use of uninitialized variable when reading blocks in creation mode
     283
     284NGSGEOID driver:
     285 * report a CRS that conforms to the official publications for GEOID2012 and USGG2012 datasets (#1103)
     286
     287NITF driver:
     288 * avoid excessive processing time on corrupted files. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8972
     289 * avoid heap-buffer-overflow for VQ compression. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9467
     290
     291PCIDSK driver:
     292 * add back support for creating external overviews, removed years ago when switching to the new PCIDSK SDK (#887)
     293
     294PCRaster driver:
     295 * libcsf: avoid potential out of bound access (CID 1074445)
     296
     297PDF driver:
     298 * Remove forced use of libstdc++ for macOS when building plugin (#888)
     299
     300PDS driver:
     301 * deal with detached labels whose line spacing is not a multiple of record size (#955)
     302 * add support for reading CRISM images
     303 * add support for ^QUBE = number for multi-band images
     304
     305PDS4 driver:
     306 * fix georeferencing reading/writing to use pixel corner convention (#735)
     307 * add UNIT[] node to SRS on reading, so that is valid
     308
     309PostgisRaster driver:
     310 * add support for out-db rasters (Trac #3234)
     311 * use ST_BandFileSize of PostGIS 2.5 when available for outdb_resolution=client_side_if_possible
     312 * improve performance of line by line reading; add performance hints section in the doc
     313 * fix CreateCopy() when PostGIS is not in public schema
     314 * add quoting of identifiers
     315
     316PRF driver:
     317 * Fix Photomod x-dem files georeference
     318
     319RasterLite2 driver:
     320 * fail on Create() that is not supported
     321
     322RDA driver:
     323 * enable support for DG RDA Image Reference string
     324
     325RMF driver:
     326 * Add support JPEG compressed RMF datasets (#691)
     327 * Add optional projection import/export from EPSG code (#701)
     328 * Create compressed datasets: LZW, DEM, JPEG (#732)
     329 * Cache decoded tile to improve performance of interleaved access
     330 * Parallelize data compression, add internal tile write-cache, add compressed overviews support (#748)
     331 * Fix 4-bit dataset reading
     332 * Expose NBITS to metadata
     333
     334RS2 driver:
     335 * avoid potential memleak (CID 1393537, CID 1393534, CID 1074387)
     336
     337SENTINEL2 driver:
     338 * Add support of S2x_MSIL2A files (#1069)
     339
     340SGI driver:
     341 * writer: avoid out-of-bound buffer access. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8889
     342
     343SIGDEM driver:
     344 * be more robust against excessive memory allocation attempt
     345 * avoid floating point division by zero. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11220
     346
     347SDTS driver:
     348 * avoid long processing time on corrupted dataset. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11219
     349
     350SRP driver:
     351 * ASRP/USRP: allow opening files padded with 0x5E / ^ character without emitting error (#838)
     352
     353USGSDEM driver:
     354 * fix reading of Benicia.dem and Novato.dem (trac #4901, #583)
     355 * optimize I/O access a bit
     356 * avoid potential out-of-bounds access (CID 1393532)
     357 * avoid int overflow. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9475
     358
     359VRT driver:
     360 * GDALCreateWarpedVRT(): automatically set GCI_AlphaBand on the alpha band
     361 * data/gdalvrt.xsd: add GDALRasterAttributeTable (#818)
     362 * VRTComplexSource: make sure that min and max values in case of exponential resampling are properly computed
     363 * ComputeStatistics(): optimize when nodata is set on a single SimpleSource
     364 * Fix issue when opening VRT with large number of bands (#1048)
     365 * deal with serialized nodata value that is slightly outside Float32 validity range (#1071)
     366 * fix source window computation that caused sub-pixel shift with non-nearest resampling
     367 * fix potential int overflow on invalid VRT
     368
     369WCS driver:
     370 * Parse envelopes with time periods. Improve error reporting. Fix one SUBDATASETS metadata thing. More metadata from Capabilities to metadata. Print some URLs in debug mode. Unique subset params in URLs. Add time domain interval to metadata.
     371 * GeoServer does not like primary subsets to have postfixes. Fix service dirty issue. Add GeoServer TimeDomain coverage metadata. Do not put service parameter into subdataset name and use generic coverage parameter
     372 * deal with GDALPamDataset::GetMetadata returning nullptr. (#648)
     373
     374WMTS driver:
     375 * avoid issue with reprojection of layer extent into TileMatrixSet SRS
     376 * fix issue with inappropriate zoom level being selected causing integer overflow in raster dimension computation
     377 * fix potential off-by-one pixel when compositing the underlying WMS/TMS source into the final raster
     378
     379== OGR 2.4.0 - Overview of Changes ==
     380
     381Core:
     382 * Add JSON field subtype for String fields
     383 * OGR SQL: avoid int overflow on -(-9223372036854775808) evaluation. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8717
     384 * OGR SQL: evaluation modulo operator on floating point values as a floating point modulo. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8761.
     385 * OGR SQL: swq_expr_node::Evaluate(): avoid too deep recursion. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8836
     386 * OGRLineString::TransferMembersAndDestroy(): fix crashing issue with M component. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8773.
     387 * OGRGeometry::exportToGEOS(): fix potential out-of-bounds write on some GeometryCollection with TIN/PolyhedralSurface (#688)
     388 * OGRGeometryFactory::organizePolygons(): improve performance for polygons with many consecutive identical nodes. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9618
     389 * Fix IsValid() for a TRIANGLE with GEOS, but without SFCGAL
     390 * morphToESRI(): fix a heap user-after-free.
     391 * OGRFeature::SetField( int iField, const char * const * papszValues ): avoid potential invalid access to pauFields[iField].StringList.paList
     392 * SQLite dialect: fix when ROWID is used in WHERE clause and the source layer has a real FID column name
     393 * GML geometry parser: recognize MultiGeometry.geometryMembers syntax (refs https://issues.qgis.org/issues/19571)
     394 * OGRGetXMLDateTime(): Interpret TZFlag correctly (#996)
     395 * OGRFeatureStyle: Restore font field at OGRStyleSymbol
     396
     397OGRSpatialReference:
     398 * importFromEPSG(): append ' (deprecated)' at end of deprecated GCS and GEOCCS (#646)
     399 * ogr_opt.cpp: fix wrong values and add missing values in papszProjectionDefinitions[]
     400 * importFromProj4/exportToProj4: fix typo in the PROJ method name of InternalMapOfTheWorldPolyconic which is imw_p
     401 * Krovak: explicit that alpha and Pseudo_standard_parallel_1 are hardcoded in PROJ
     402 * SetNormProjParm(): avoid division by zero. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10588
     403 * FindMatches(): if the input SRS has a EPSG code, check that its definition and the EPSG one actually matches (#990)
     404
     405Utilities:
     406 * ogr2ogr: reject -append, -select options together
     407 * ogr2ogr: speed-up in case of big number of field name clashes. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8960
     408 * ogr2ogr: make -clipsrc work when output dataset has no geometry field (#943)
     409 * ogrlineref: fix tolerance for not geographic spatial reference
     410 * ogrmerge.py: avoid exception in error code path of GetOutputDriverFor()
     411 * ogrmerge.py: fix issue with non-ASCII characters (fixes #1067)
     412
     413Multi driver changes:
     414 * KML/LIBKML: robustify for out-of-memory conditions (fixes https://issues.qgis.org/issues/19989)
     415 * XLSX / ODS: avoid harmless warning in some cases when guessing column data types
     416
     417AVCE00 driver:
     418 * avoid perforance issues on huge lines. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8284
     419 * fix performance issue on reading PRJ section. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9061
     420
     421BNA driver:
     422 * refuse to open existing file in update mode, since it causes later crashes when attempting to add new features (https://issues.qgis.org/issues/18563)
     423 * avoid long processing. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8754
     424 * more efficient building of polygons. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10951
     425
     426CAD driver:
     427 * Fix read objects map. Upgrade version of libopencad to 0.3.4. (#677)
     428 * Fix wrong OGRCircularString construction from CADCircle. (#736)
     429 * avoid integer overflow. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8385
     430 * Fix buffer overflow on skip read. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9107
     431
     432Carto driver:
     433 * Use new /sql/copy-from end point for writing (#715)
     434 * fix ICreateFeatureCopy() with unset fields
     435
     436CSV driver:
     437 * in writing, use WKT instead of actual geometry column name if GEOMETRY=AS_WKT mode is used without CREATE_CSVT=YES (fixes #660)
     438 * writer: limit to 10000 fields to avoid performance issues. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9336 (8449 as well)
     439 * avoid endless loop when iterating and updating features (#919)
     440
     441DXF driver:
     442 * add PaperSpace field (Trac #7121)
     443 * allow attributes with spaces in the tag
     444 * Correctly handle non-uniformly-weighted spline HATCH boundaries (#1011)
     445 * avoid null pointer dereference when DXF_MAX_BSPLINE_CONTROL_POINTS is hit. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8254.
     446 * Fix reporting of wrong line numbers in errors (fixes #726)
     447 * Don't crash when spline control point limit is reached
     448 * fix memory leak in case of attempt to write GeometryCollection of unsupported type
     449
     450EDIGEO driver:
     451 * reading multipolygons (trac #6955, #711)
     452
     453ElasticSearch driver:
     454 * add compatibility with ES v6.0
     455 * add a USERPWD open option
     456 * add lazy loading of layers
     457 * add a LAYER open option
     458 * skip xpack indices, and do not emit 503 error when listing unauthorized layers
     459 * add a INDEX_DEFINITION layer creation option
     460 *allow several geometry fields of type GEO_POINT to be created
     461
     462ESRIJson driver:
     463 * parse documents that lack 'geometryType' member (#914)
     464
     465GeoJSON driver:
     466 * fix type deduction when there is a Feature.id of type string and Feature.properties.id of type int. The later has precedence over the former (arbitrary decision) (#669)
     467 * properly flush the file in SyncToDisk() in append situations (https://issues.qgis.org/issues/18596)
     468 * parse '{"type": "GeometryCollection", "geometries": []}' as empty geometrycollection
     469 * increase max memory allowed to parse a single feature (#807)
     470 * remore topojson from extensions recognized by the driver
     471 * add partial support for field names differing by case (#1057)
     472 * RFC7946 writer: clip and offset geometries outside [-180,180] (#1068)
     473 * no longer write NaN/Infinity values by default (#1109)
     474
     475GeoRSS driver:
     476 * avoid excessive processing time. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9263
     477
     478GML driver:
     479 * avoid fetching SRS from http
     480 * fix potential memory leak in case of duplicated name of geometry fields in .gfs
     481 * improve performance for large number of attributes. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9038.
     482
     483GPKG driver:
     484 * add read/write support for JSON field subtype
     485 * speed up GetExtent() on huge tables with rtree. Refs https://issues.qgis.org/issues/18402
     486 * take into ROLLBACK TO SAVEPOINT to invalidate cached feature count
     487 * make sure to not invalidate POSIX advisory locks
     488 * remove useless check that encoding is UTF-8 (#793)
     489 * fix typo in gpkg_metadata_reference_column_name_update trigger definition
     490 * optimize table renaming by avoiding to drop the spatial index, but just renaming it
     491
     492IDF driver:
     493 * use a temporary SQLite database (when driver available) for files larger than 100 MB
     494 * add support for Z coordinate (#964)
     495
     496LIBKML driver:
     497 * add support for reading several schemas for the same layer (#826)
     498 * make edition of existing file work (https://issues.qgis.org/issues/18631)
     499 * implement OGRLIBKMLLayer::SyncToDisk() to fix https://issues.qgis.org/issues/18631
     500 * workaround weird issue with OSGeo4W and newline characters in <coordinate> element (fixes https://issues.qgis.org/issues/19215)
     501
     502MITAB driver:
     503 * fix potential use of uninitialized memory
     504 * improve performance of adding many fields in a .tab. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8559
     505 * fix geometry corruption when editing some datasets (#817)
     506 * fix writing .tab when field name has invalid characters in it (#924)
     507 * Expose font family to feature style symbol ID
     508
     509MSSQLSpatial driver:
     510 * Add support for MSODBCSQL (#1136)
     511 * Fix layer-schema separation problem (#586)
     512 * Fix bulk copy for multiple layers (#619)
     513 * Accept datetime values (#841)
     514 * Don't truncate string values on Unix (#843)
     515 * Create 3D features (#852)
     516 * enforce read-only/update mode for CreateFeature/SetFeature/DeleteFeature
     517 * fix retrieval of geometry column on Linux for SQL result layers
     518 * Use only valid SRIDs; Create features preserving SRID (#860)
     519 * Fix geometry parser with M values (#1051)
     520 * Assign new ID following an INSERT (#1052)
     521 * Adding configuration option MSSQLSPATIAL_ALWAYS_OUTPUT_FID (#1101)
     522
     523MVT driver:
     524 * writer: do not ignore Z/M/ZM geometries
     525 * writer: make it possible to output to /vsizip/output.zip out-of-the-box
     526 * disable check on 'extent' field in identifiation method, which rejected tiles with extent > 16384
     527 * avoid recursion on opening. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10226
     528
     529MySQL:
     530 * add support for MySQL 8.0
     531
     532NAS driver:
     533 * speed-up in case of huge number of attributes. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7977
     534
     535OCI driver:
     536 * Ensure table Dims and GTYPE are retrieved for the correct table (#629)
     537
     538OGR_GMT driver:
     539 * avoid performance issue when opening layer with big number of fields. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8259.
     540
     541OGR_PDS driver:
     542 * avoid int overflow. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9136
     543
     544OpenFileGDB driver:
     545 * Catch a NaN in FileGDBDoubleDateToOGRDate to prevent undefined behavior. (#740)
     546 * fix potential crash on corrupted datasets. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11313
     547
     548OSM driver:
     549 * allow parsing files with up to 10 000 nodes per way (#849)
     550 * avoid array overflow with ways with many tags. Relates to https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9618
     551
     552PCIDSK driver:
     553 * defer writing of segement header to improve performance when creating huge number of fields. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8191
     554 * fix performance issue when inserting in layer with huge number of fields. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8335.
     555
     556PDF driver:
     557 * fix the parser of drawing instructions that had issues with array objects
     558
     559PG driver:
     560 * add SPATIAL_INDEX=SPGIST/BRIN layer creation options (and PGDump as well) (#892)
     561 * add read/write support for JSON field subtype
     562
     563PGDump driver:
     564
     565PLScenes driver:
     566 * fix /vsicurl/ raster download
     567 * fix scene activation
     568 * add ground_control field in layer definition
     569
     570Shapefile driver:
     571 * avoid being dependent on correctness of file size field in .shp
     572 * fix corruption when deleting a field from a .dbf without records (#863)
     573 * Add CP1251 codepage name synonym (ANSI 1251) for DBF files.
     574
     575S57 driver:
     576 * add S57_AALL, S57_NALL, S57_COMF, S57_SOMF creation options (#810)
     577
     578SOSI driver:
     579 * fix memory leaks / null pointer dereference
     580
     581SQLite/Spatialite driver:
     582 * avoid SetFeature() to reset the iterator (#964)
     583 * Spatialite: read table name in its original case (#1060)
     584 * do not run spatial index creation in rollback code
     585
     586VFK driver:
     587 * create index on ID column only for selected (geometry-related) layers (#498)
     588 * create db indices after inserting data (#498)
     589 * create indices before resolving geometry
     590 * new open option - include filename field (#564)
     591 * speed up sequential feature access
     592 * fix leak of unfinalized statement (#634)
     593 * fix file check on Windows with large files (#637)
     594 * fix big int overflow, force text attributes (PODIL_CITATEL/PODIL_JMENOVATEL) to avoid int64 overflow (#672)
     595 * fix missing geometry for SBPG layer (#710)
     596 * missing fields in update mode gfs (#734)
     597
     598VRT driver:
     599 * revise logic for handling the <FID> element (or when it is omitted) (#941)
     600
     601WFS driver:
     602 * avoid potential bad cast. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9800
     603
     604WFS3 driver:
     605 * update to current version (May 2018) of the API draft (#626)
     606 * add USERPWD open option
     607
     608XLSX driver:
     609 * avoid stack buffer overflow is creating too many fields. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8198
     610 * avoid timeout. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8225
     611 * fix null pointer dereference. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8286
     612
     613== SWIG Language Bindings ==
     614
     615All bindings:
     616 * use a dedicated VSILFILE class to avoid type mismatch (#601)
     617 * reload drivers if GDAL_SKIP/OGR_SKIP is defined with --config in gdal/ogr.GeneralCmdLineProcessor()
     618 * Add VSIFFlushL()
     619 * Add VSIErrorReset()
     620
     621CSharp bindings:
     622 * GDALCreateCopy.cs sample code: Correct misspelling in info message (#647)
     623 * SWIG 2.x and 3.x compatibility (#824)
     624
     625Java bindings:
     626 * update to Java 1.6 requirement to please 'ant maven' target
     627 * Fix JNI library bundling.
     628
     629Perl bindings:
     630 * fix make dependencies (#43)
     631
     632Python bindings:
     633 * Python logging improvements: add gdal.ConfigurePythonLogging() function  (#1017)
     634 * added support for band / pixel interleave for numpy array
     635 * fixed NULL check on python's swig VSIFReadL (#572)
     636 * fix dataset[slice] access (#574)
     637 * added support for reading vsi data as memorybuffer and writing buffers via VSIFWriteL
     638 * setup.py: add more prominent warning when numpy is not available (#822)
     639 * for utilities as library functions, when gdal.UseExceptions() is enabled, do not emit Python exceptions when the operation is reported as successful
     640 * update import path
     641 * avoid crash in ReadRaster() under low memory condition (#1026)