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


Ignore:
Timestamp:
May 9, 2017 1:34:43 AM (6 months ago)
Author:
Even Rouault
Comment:

Add 2.2.0 news page

Legend:

Unmodified
Added
Removed
Modified
  • Release/2.2.0-News

    v1 v1  
     1= GDAL/OGR 2.2.0 Release Notes =
     2
     3== In a nutshell... ==
     4
     5 * New GDAL/raster drivers:
     6   - [http://gdal.org/frmt_derived.html DERIVED] driver: read-support. Expose subdatasets in a a new metadata domain, called DERIVED_SUBDATASETS
     7   - [http://gdal.org/frmt_jp2lura.html JP2Lura] driver: read/create support for JPEG-2000 images using Luratech JP2 Library
     8   - [http://gdal.org/frmt_prf.html PRF]: add read-only support for PHOTOMOD PRF file format driver (github #173)
     9   - [http://gdal.org/frmt_various.html#RRASTER RRASTER] driver: read-support .grd/.gri files handled by the R 'raster' package (#6249)
     10 * New OGR/vector drivers:
     11    - [http://gdal.org/drv_cad.html CAD] driver: read support for DWG R2000 files (GSoC 2016 project)
     12    - [http://gdal.org/drv_dgnv8.html DGNv8] driver: read-write support for DGN 8.0 format (using Teigha ODA libraries)
     13    - [http://gdal.org/drv_gmlas.html GMLAS] driver: read-write support. XML/GML driver driven by Application Schemas.
     14 * New utility script: [http://gdal.org/ogrmerge.html ogrmerge.py] to merge several vector datasets into a single one
     15 * New /vsigs/ and /vsigs_streaming/ virtual file systems to read Google Cloud Storage non-public files
     16 * Significantly improved drivers:
     17  - NWT_GRD: write support (#6533)
     18  - FileGDB/OpenFileGDB: add support to read curve geometries (#5890)
     19  - VRT derived band: add the capability to define pixel functions in Python
     20  - Add read support for RasterLite2 coverages in SQLite driver
     21  - GPKG: implement tiled gridded elevation data extension
     22  - ISIS3: add write support and improve read support
     23 * [https://trac.osgeo.org/gdal/wiki/rfc63_sparse_datasets_improvements RFC 63: Add GDALRasterBand::GetDataCoverageStatus() and implement it in GTiff and VRT drivers]
     24 * [https://trac.osgeo.org/gdal/wiki/rfc64_triangle_polyhedralsurface_tin RFC 64: Triangle, Polyhedral surface and TIN]
     25    ==> this RFC introduces potential backward incompatible behaviour. Consult [https://svn.osgeo.org/gdal/branches/2.2/gdal/MIGRATION_GUIDE.TXT MIGRATION_GUIDE.TXT]
     26 * [https://trac.osgeo.org/gdal/wiki/rfc66_randomlayerreadwrite RFC 66: OGR random layer read/write capabilities]
     27 * [https://trac.osgeo.org/gdal/wiki/rfc67_nullfieldvalues RFC 67: add null field state for OGR features, in addition to unset fields]
     28    ==> this RFC introduces potential backward incompatible behaviour. Consult [https://svn.osgeo.org/gdal/branches/2.2/gdal/MIGRATION_GUIDE.TXT MIGRATION_GUIDE.TXT]
     29 * Upgrade to EPSG database v9.0 (#6772)
     30 * Python bindings: Global Interpreter Lock (GIL) released before entering GDAL native code (for all, in GDAL module and a few ones in ogr like ogr.Open())
     31 * Continued major efforts on sanitization of code base
     32 * Remove bridge and vb6 bindings (#6640)
     33 * GNM built by default
     34
     35== Installed files ==
     36
     37 * Removed: data/s57attributes_aml.csv data/s57attributes_iw.csv data/s57objectclasses_aml.csv data/s57objectclasses_iw.csv
     38 * Added plscenesconf.json, gmlasconf.xsd
     39
     40== Backward compatibility issues ==
     41
     42See MIGRATION_GUIDE.TXT
     43
     44== GDAL/OGR 2.2.0 - General Changes ==
     45
     46Build(Unix):
     47 * improve detection of packaged libfyba (SOSI) --with-sosi, as in Ubuntu 16.04 (#6488)
     48 * Sort files in static library to make the build reproducible (#6520)
     49 * fix libqhull include path when it is /usr/local/include/libqhull (#6522)
     50 * FileGDB: compilation fix on Linux in C++11 mode
     51 * configure: make pdfium detection not fail if there are just warnings. And make configure fail if --with-pdfium was required but failed (#6653)
     52 * Make ./configure --with-xerces fail if not found
     53 * Don't install script documentation in INST_BIN (github #157)
     54 * configure: auto-detect webp without requiring explicit --with-webp
     55 * configure: use pkg-config for HDF5 detection so that works out of the box on recent Ubuntu
     56 * auto-detect JDK 8 on Ubuntu
     57 * MDB: allow libjvm.so to be dlopen'd with --with-jvm-lib=dlopen (Unix only, github #177)
     58 * configure: delete temporary directories on the mac
     59 * configure: make sure --with-macosx-framework is correctly defined
     60 * configure: error out if --with-ld-shared is specified (#6769)
     61 * configure: remove bashism.
     62 * configure: fix --without-mrf (#6811)
     63 * configure: take into account CXXFLAGS and LDFLAGS in a few more cases (cryptopp, podofo, libdap)
     64 * Vagrant: all lxc and Hyper-V provider support; use vagrant-cachier for package caching
     65 * configure: update DWG support to work with Teigha libraries
     66 * Internal libgeotiff: hide symbols in --with-hide-internal-symbols mode
     67 * Shape: do not export Shapelib symbols for builds --with-hide-internal-symbols (#6860)
     68
     69Build(Windows):
     70 * Try to avoid confusion between libqhull io.h and mingw own io.h (#6590)
     71 * update script to generate most recent Visual C++ project files (#6635)
     72 * fix broken and missing dependencies in makefile.vc
     73 * add a way to use an external zlib (github #171)
     74 * Rename makegdal_gen.bat to generate_vcxproj.bat
     75 * generate_vcxproj.bat: Set correct value of PlatformToolset property based on specified Visual C++ version. Add NMAKE command line parameters: MSVC_VER based on specified Visual C++ version, DEBUG=1 WITH_PDB=1 to Debug build configuration.
     76 * generate_vcxproj.bat: generate project for autotest/cpp (Ticket #6815)
     77* Add WIN64=1 to NMAKE command line options.
     78 * Add HDF4_INCLUDE option (#6805)
     79 * Add MSVC compiler option /MP to build with parallel processes.
     80 * Add ZLIB_LIB missing from EXTERNAL_LIBS
     81 
     82Build(all):
     83 * make Xerces 3.1 the minimal version
     84 * drop support for PostgreSQL client library older than 7.4, or non security maintained releases older than 8.1.4, 8.0.8, 7.4.13, 7.3.15
     85
     86== GDAL 2.2.0 - Overview of Changes ==
     87
     88Port:
     89 * Export VSICreateCachedFile() as CPL_DLL so as to enable building JP2KAK as a plugin
     90 * Added possibility to find GDAL_DATA path using INST_DATA definition without execution GDALAllRegister if GDAL_DATA placed in version named directory on Linux (#6543)
     91 * Unix filesystem: make error message about failed open to report the filename (#6545)
     92 * File finder: Remove hardcoded find location (/usr/local/share/gdal) (#6543)
     93 * Win32 filesystem handler: make Truncate() turn on sparse files when doing file extension
     94 * Add VSIFGetRangeStatusL() and VSISupportsSparseFiles()
     95 * GDAL_NO_HARDCODED_FIND compilation option (#6543,#6531) to block file open calls (for sandboxed systems)
     96 * Add VSIMallocAligned(), VSIMallocAlignedAuto() and VSIFreeAligned() APIs
     97 * /vsizip / /vsitar: support alternate syntax /vsitar/{/path/to/the/archive}/path/inside/the/tar/file so as not to be dependent on file extension and enable chaining
     98 * Optimize opening of /vsitar/my.tar.gz/my_single_file
     99 * /vsizip/ : support creating non-ASCII filenames inside a ZIP (#6631)
     100 * VSI Unix file system: fix behaviour in a+ mode that made MRF caching not work on Mac and other BSD systems
     101 * Fix deadlock at CPLWorkerThreadPool destruction (#6646)
     102 * Windows: honour GDAL_FILENAME_IS_UTF8 setting to call LoadLibraryW() (#6650)
     103 * CPLFormFilename(): always use / path separator for /vsimem, even on Windows
     104 * /vsimem/: add trick to limit the file size, so as to be able to test how drivers handle write errors
     105 * /vsimem/: fix potential crash when closing -different- handles pointing to the same file from different threads (#6683)
     106 * CPLHTTPFetch(): add MAX_FILE_SIZE option
     107 * CPLHTTPFetch(): add a CAINFO option to set the path to the CA bundle file. As a fallback also honour the CURL_CA_BUNDLE and SSL_CERT_FILE environment variables used by the curl binary, which makes this setting also available for /vsicurl/, /vsicurl_streaming/, /vsis3/ and /vsis3_streaming/ file systems (#6732)
     108 * CPLHTTPFetch(): don't disable peer certificate verification when doing https (#6734)
     109 * CPLHTTPFetch(): cleanly deal with multiple headers passed with HEADERS and separated with newlines
     110 * CPLHTTPFetch(): add a CONNECTTIMEOUT option
     111 * CPLHTTPFetch(): add a GDAL_HTTP_HEADER_FILE / HEADER_FILE option.
     112 * CPLHTTPSetOptions(): make redirection of POST requests to still be POST requests after redirection (#6849)
     113 * /vsicurl/: take CPL_VSIL_CURL_ALLOWED_EXTENSIONS into account even if GDAL_DISABLE_READDIR_ON_OPEN is defined (#6681)
     114 * /vsicurl/: get modification time if available from GET or HEAD results
     115 * /vsis3/: add a AWS_REQUEST_PAYER=requester configuration option (github #186)
     116 * CPLParseXMLString(): do not reset error state
     117 * Windows: fix GetFreeDiskSpace()
     118 * Fix GetDiskFreeSpace() on 32bit Linux to avoid 32bit overflow when free disk space is above 4 GB (#6750)
     119 * Fix CPLPrintUIntBig() to really print a unsigned value and not a signed one
     120 * Add CPL_HAS_GINT64, GINT64_MIN/MAX, GUINT64_MAX macros (#6747)
     121 * Add CPLGetConfigOptions(), CPLSetConfigOptions(), CPLGetThreadLocalConfigOptions() and CPLSetThreadLocalConfigOptions() to help improving compatibility between osgeo.gdal python bindings and rasterio (related to https://github.com/mapbox/rasterio/pull/969)
     122 * MiniXML serializer: fix potential buffer overflow.
     123
     124Core:
     125 * Proxy dataset: add consistency checks in (the unlikely) case the proxy and underlying dataset/bands would not share compatible characteristics
     126 * GDALPamDataset::TryLoadXML(): do not reset error context when parsing .aux.xml
     127 * PAM/VRT: only take into account <Entry> elements when deserializing a <ColorTable>
     128 * GDALCopyWords(): add fast copy path when src data type == dst data type == Int16 or UInt16
     129 * GetVirtualMemAuto(): allow USE_DEFAULT_IMPLEMENTATION=NO to prevent the default implementation from being used
     130 * Nodata comparison: fix test when nodata is FLT_MIN or DBL_MIN (#6578)
     131 * GetHistogram() / ComputeRasterMinMax() / ComputeStatistics(): better deal with precision issues of nodata comparison on Float32 data type
     132 * Fast implementation of GDALRasterBand::ComputeStatistics() for GDT_Byte and GDT_UInt16 (including use of SSE2/AVX2)
     133 * Driver manage: If INST_DATA is not requested, do not check the GDAL_DATA variable.
     134 * Make sure that GDALSetCacheMax() initialize the raster block mutex (#6611)
     135 * External overview: fix incorrect overview building when generating from greater overview factors to lower ones, in compressed and single-band case (#6617)
     136 * Speed-up SSE2 implementation of GDALCopy4Words from float to byte/uint16/int16
     137 * Add SSE2 and SSSE3 implementations of GDALCopyWords from Byte with 2,3 or 4 byte stride to packed byte
     138 * GDALCopyWords(): SSE2-accelerated Byte->Int32 and Byte->Float32 packed conversions
     139 * Fix GDALRasterBand::IRasterIO() on a VRT dataset that has resampled sources, on requests such as nXSize == nBufXSize but nXSize != dfXSize
     140 * GDALRasterBand::IRasterIO(): add small epsilon to floating-point srcX and srcY to avoid some numeric precision issues when rounding.
     141 * Add GDALRasterBand::GetActualBlockSize() (#1233)
     142 * Fix potential deadlock in multithreaded writing scenarios (#6661)
     143 * Fix thread-unsafe behaviour when using GetLockedBlock()/MarkDirty()/DropLock() lower level interfaces (#6665)
     144 * Fix multi-threading issues in read/write scenarios (#6684)
     145 * Resampled RasterIO(): so as to get consistent results, use band datatype as intermediate type if it is different from the buffer type
     146 * Add GDALIdentifyDriverEx() function (github #152)
     147 * GDALOpenInfo: add a papszAllowedDrivers member and fill it in GDALOpenEx()
     148 * GDALDefaultOverviews::BuildOverviews(): improve progress report
     149 * Average and mode overview/rasterio resampling: correct source pixel computation due to numerical precision issues when downsampling by an integral factor, and also in oversampling use cases (github #156)
     150 * Overview building: add experimental GDAL_OVR_PROPAGATE_NODATA config option that can be set to YES so that a nodata value in source samples will cause the target pixel to be zeroed. Only implemented for AVERAGE resampling right now
     151 * GDALValidateOptions(): fix check of min/max values
     152 * GMLJP2 v2: update to 2.0.1 corrigendum and add capability to set gml:RectifiedGrid/gmlcov:rangeType content. Set SRSNAME_FORMAT=OGC_URL by default when converting to GML. Add gml:boundedBy in gmljp2:GMLJP2RectifiedGridCoverage
     153 * GMLJP2 v2: ensure KML root node id unicity when converting annotations on the fly. When generating GML features, make sure that PREFIX and TARGET_NAMESPACE are unique when specifying several documents.
     154
     155Algorithms:
     156 * RPC transformer: speed-up DEM extraction by requesting and caching a larger buffer, instead of doing many queries of just a few pixels that can be costly with VRT for example
     157 * GDALDeserializeRPCTransformer(): for consistency, use the same default value as in GDALCreateRPCTransformer() if <PixErrThreshold> is missing (so use 0.1 instead of 0.25 as before)
     158 * TPS solver: when Armadillo fails sometimes, fallback to old method
     159 * GDALCreateGenImgProjTransformer2(): add SRC_APPROX_ERROR_IN_SRS_UNIT, SRC_APPROX_ERROR_IN_PIXEL, DST_APPROX_ERROR_IN_SRS_UNIT, DST_APPROX_ERROR_IN_PIXEL, REPROJECTION_APPROX_ERROR_IN_SRC_SRS_UNIT and REPROJECTION_APPROX_ERROR_IN_DST_SRS_UNIT transformer options, so as to be able to have approximate sub-transformers
     160 * Fix GDAL_CG_Create() to call GDALContourGenerator::Init() (#6491)
     161 * GDALContourGenerate(): handle the case where the nodata value is NaN (#6519)
     162 * GDALGridCreate(): fix hang in multi-threaded case when pfnProgress is NULL or GDALDummyProgress (#6552)
     163 * GDAL contour: fix incorrect oriented contour lines in some rare cases (#6563)
     164 * Warper: multiple performance improvements for cubic interpolation and uint16 data type
     165 * Warper: add SRC_ALPHA_MAX and DST_ALPHA_MAX warp options to control the maximum value of the alpha channel. Set now to 65535 for UInt16 (and 32767 for Int16), or to 2^NBITS-1. 255 used for other cases as before
     166 * Warper: avoid undefined behaviour when doing floating point to int conversion, that may trigger exception with some compilers (LLVM 8) (#6753)
     167 * OpenCL warper: update cubicConvolution to use same formula as CPU case (#6664)
     168 * OpenCL warper: fix compliance to the spec. Fix issues with NVidia opencl (#6624, #6669)
     169 * OpenCL warper: use GPU based over CPU based implementation when possible, use non-Intel OpenCL implementation when possible. Add BLACKLISTED_OPENCL_VENDOR and PREFERRED_OPENCL_VENDOR to customize choice of implementation
     170
     171Utilities:
     172 * gdalinfo -json: fix order of points in wgs84Extent.coordinates (github #166)
     173 * gdalwarp: do not densify cutlines by default when CUTLINE_BLEND_DIST is used (#6507)
     174 * gdalwarp: when -to RPC_DEM is specified, make -et default to 0 as documented (#6608)
     175 * gdalwarp: improve detection of source alpha band and auto-setting of target alpha band. Automatically set PHOTOMETRIC=RGB on target GeoTIFF when input colors are RGB
     176 * gdalwarp: add a -nosrcalpha option to wrap the alpha band as a regular band and not as the alpha band
     177 * gdalwarp: avoid cutline densification when no transform at all is involved (related to #6648)
     178 * gdalwarp: fix failure with cutline on a layer of touching polygons (#6694)
     179 * gdalwarp: allow to set UNIFIED_SRC_NODATA=NO to override the default that set it to YES
     180 * gdalwarp: fix -to SRC_METHOD=NO_GEOTRANSFORM -to DST_METHOD=NO_GEOTRANSFORM mode (#6721)
     181 * gdalwarp: add support for shifting the values of input DEM when source and/or target SRS references a proj.4 vertical datum shift grid
     182 * gdalwarp: fix crash when -multi and -to RPC_DEM are used together (#6869)
     183 * gdal_translate: when using -projwin with default nearest neighbour resampling, align on integer source pixels (#6610)
     184 * gdal_translate & gdalwarp: lower the default value of GDAL_MAX_DATASET_POOL_SIZE to 100 on MacOSX (#6604)
     185 * gdal_translate: avoid useless directory scanning on GeoTIFF files
     186 * gdal_translate: make "-a_nodata inf -ot Float32" work without warning
     187 * gdal_translate: set nodata value on vrtsource on scale / unscale / expand cases (github #199)
     188 * GDALTranslate(): make it possible to create a anonymous target VRT from a (anonymous) memory source
     189 * gdaldem: speed-up computations for src type = Byte/Int16/UInt16 and particularly for hillshade
     190 * gdaldem hillshade: add a -multidirectional option
     191 * GDALDEMProcessing() API: fix -alt support (#6847)
     192 * gdal_polygonize.py: explicitly set output layer geometry type to be polygon (#6530)
     193 * gdal_polygonize.py: add support for -b mask[,band_number] option to polygonize a mask band
     194 * gdal_rasterize: make sure -3d, -burn and -a are exclusive
     195 * gdal_rasterize: fix segfaults when rasterizing into an ungeoreferenced raster, or when doing 'gdal_rasterize my.shp my.tif' with a non existing my.tif (#6738)
     196 * gdal_rasterize: fix crash when rasterizing empty polygon (#6844)
     197 * gdal_grid: add a smoothing parameter to invdistnn algorithm (github #196)
     198 * gdal_retile.py: add a -overlap switch
     199 * gdal2tiles.py: do not crash on empty tiles generation (#6057)
     200 * gdal2tiles.py: handle requested tile at too low zoom to get any data (#6795)
     201 * gdal2tiles: fix handling of UTF-8 filenames (#6794)
     202 * gdal2xyz: use %d formatting for Int32/UInt32 data types (#6644)
     203 * gdal_edit.py: add -scale and -offset switches (#6833)
     204 * gdaltindex: emit warning in -src_srs_format WKT when WKT is too large
     205 * gdalbuildvrt: add a -oo switch to specify dataset open options
     206
     207Python samples:
     208 * add validate_cloud_optimized_geotiff.py
     209 * add validate_gpkg.py
     210
     211Multi-driver:
     212 * Add GEOREF_SOURCES open option / GDAL_GEOREF_SOURCES config. option to all JPEG2000 drivers and GTiff to control which sources of georeferencing can be used and their respective priority
     213
     214AIGRID driver:
     215 * fix 2.1.0 regression when reading statistics (.sta) file with only 3 values, and fix <2.1 behaviour to read them in LSB order (#6633)
     216 
     217AAIGRID driver:
     218 * auto-detect Float64 when the nodata value is not representable in the Float32 range
     219
     220ADRG driver:
     221 * handle north and south polar zones (ZNA 9 and 18) (#6783)
     222
     223ASRP driver:
     224 * fix georeferencing of polar arc zone images (#6560)
     225
     226BPG driver:
     227* declare GDALRegister_BPG as C exported for building as a plugin (#6693)
     228
     229DIMAP driver:
     230 * DIMAP: for DIMAP 2, read RPC from RPC_xxxxx.XML file (#6539)
     231 * DIMAP/Pleiades metadata reader: take into tiling to properly shift RPC (#6293)
     232 * add support for tiled DIMAP 2 datasets (#6293)
     233
     234DODS driver:
     235 * fix crash on URL that are not DODS servers (#6718)
     236
     237DTED driver:
     238 * correctly create files at latitudes -80, -75, -70 and -50 (#6859)
     239
     240ECW driver:
     241 * Add option ECW_ALWAYS_UPWARD=TRUE/FALSE  to work around issues with "Downward" oriented images (#6516).
     242
     243ENVI driver:
     244 * on closing, pad image file with trailing nul bytes if needed (#6662)
     245 * add read/write support for rotated geotransform (#1778)
     246
     247GeoRaster driver:
     248 * fix report of rotation (#6593)
     249 * support for JP2-F compression (#6861)
     250 * support direct loading of JPEG-F when blocking=no (#6861)
     251 * default blocking increased from 256x256 to 512x512 (#6861)
     252
     253GPKG driver:
     254 * implement tiled gridded elevation data extension
     255 * add VERSION creation option
     256 * check if transaction COMMIT is successful (#6667)
     257 * fix crash on overview building on big overview factor (#6668)
     258 * fix crash when opening an empty raster with USE_TILE_EXTENT=YES
     259 * fix gpkg_zoom_other registration
     260
     261GTiff driver:
     262 * support SPARSE_OK=YES in CreateCopy() mode (and in update mode with the SPARSE_OK=YES open option), by actively detecting blocks filled with 0/nodata about to be written
     263 * When writing missing blocks (i.e. non SPARSE case), use the nodata value when defined. Otherwise fallback to 0 as before.
     264 * in FillEmptyTiles() (i.e. in the TIFF non-sparse mode), avoid writing zeroes to file so as to speed up file creation when filesystem supports ... sparse files
     265 * add write support for half-precision floating point (Float32 with NBITS=16)
     266 * handle storing (and reading) band color interpretation in GDAL internal metadata when it doesn't match the capabilities of the TIFF format, such as B,G,R ordering (#6651)
     267 * Fix RasterIO() reported when downsampling a RGBA JPEG compressed TIFF file (#6943)
     268 * Switch search order in GTIFGetOGISDefn() - Look for gdal_datum.csv before datum.csv (#6531)
     269 * optimize IWriteBlock() to avoid reloading tile/strip from disk in multiband contig/pixel-interleave layouts when all blocks are dirty
     270 * fix race between empty block filling logic and background compression threads when using Create() interface and NUM_THREADS creation option (#6582)
     271 * use VSIFTruncateL() to do file extension
     272 * optimize reading and writing of 1-bit rasters
     273 * fix detection of blocks larger than 2GB on opening on 32-bit builds
     274 * fix saving and loading band description (#6592)
     275 * avoid reading external metadata file that could be related to the target filename when using Create() or CreateCopy() (#6594)
     276 * do not generate erroneous ExtraSamples tag when translating from a RGB UInt16, without explicit PHOTOMETRIC=RGB (#6647)
     277 * do not set a PCSCitationGeoKey = 'LUnits = ...' as the PROJCS citation on reading
     278 * fix creating an image with the Create() interface with BLOCKYSIZE > image height (#6743)
     279 * fix so that GDAL_DISABLE_READDIR_ON_OPEN = NO / EMPTY_DIR is properly honoured and doesn't cause a useless directory listing
     280 * make setting GCPs when geotransform is already set work (with warning about unsetting the geotransform), and vice-versa) (#6751)
     281 * correctly detect error return of TIFFReadRGBATile() and TIFFReadRGBAStrip()
     282 * in the YCBCR RGBA interface case, only expose RGB bands, as the alpha is always 255
     283 * don't check free disk space when outputting to /vsistdout/ (#6768)
     284 * make GetUnitType() use VERT_CS unit as a fallback (#6675)
     285 * in COPY_SRC_OVERVIEWS=YES mode, set nodata value on overview bands
     286 * read GCPs in ESRI <GeodataXform> .aux.xml
     287 * explicitly write YCbCrSubsampling tag, so as to avoid (latest version of) libtiff to try reading the first strip to guess it. Helps performance for cloud optimized geotiffs
     288 * map D_North_American_1927 datum citation name to OGC North_American_Datum_1927 so that datum is properly recognized (#6863)
     289 * Internal libtiff. Resync with CVS (post 4.0.7)
     290 * Internal libtiff: fix 1.11 regression that prevents from reading one-strip files that have no StripByteCounts tag (#6490)
     291
     292GRASS driver:
     293 * plugin configure: add support for GRASS 7.2 (#6785)
     294 * plugin makefile: do not clone datum tables and drivers (#2953)
     295 * use Rast_get_window/Rast_set_window for GRASS 7 (#6853)
     296 
     297GRIB driver:
     298 * Add (minimalistic) support for template 4.15 needed to read Wide Area Forecast System (WAFS) products (#5768)
     299 * **Partial** resynchronization with degrib-2.0.3, mostly to get updated tables (related to #5768)
     300 * adds MRMS grib2 decoder table (http://www.nssl.noaa.gov/projects/mrms/operational/tables.php) (github #160)
     301 * enable PNG decoding on Unix (#5661, github #160)
     302 * remove explicitly JPEG2000 decompression through Jasper and use generic GDAL code so that other drivers can be triggered
     303 * fix a few crashes on malformed files
     304
     305GTX driver:
     306 * add a SHIFT_ORIGIN_IN_MINUS_180_PLUS_180 open option
     307
     308HDF4 driver:
     309 * Fixed erroneous type casting in HDF4Dataset::AnyTypeToDouble() that breaks reading georeferencing and other metadata
     310
     311HDF5 driver:
     312 * correct number of GCPs to avoid dummy trailing (0,0)->(0,0,0) and remove +180 offset applied to GCP longitude. Add instead a heuristics to determine if the product is crossing the antimeridian, and a HDF5_SHIFT_GCPX_BY_180 config option to be able to override the heuristics (#6666)
     313
     314HFA driver:
     315 * fix reading and writing of TOWGS84 parameters (github #132)
     316 * export overview type from HFA files to GDAL metadata as OVERVIEWS_ALGORITHM (github #135)
     317 * make .ige initialization use VSIFTruncateL() to be faster on Windows
     318 * add support for TMSO and HOM Variant A projections (#6615)
     319 * Add elevation units read from HFA files metadata (github #169)
     320 * set binning type properly according to layerType being thematic or not (#6854)
     321
     322Idrisi driver:
     323 * use geotransform of source dataset even if it doesn't have a SRS (#6727)
     324 * make Create() zero-initialize the .rst file (#6873)
     325
     326ILWIS driver:
     327 * avoid IniFile::Load() to set the bChanged flag, so as to avoid a rewrite of files when just opening datasets
     328
     329ISCE driver:
     330 * fix computation of line offset for multi-band BIP files, and warn if detecting a wrong file produced by GDAL 2.1.0 (#6556)
     331 * fix misbehaviour on big endian hosts
     332 * add support for reading and writing georeferencing (#6630, #6634)
     333 * make parsing of properties case insensitive (#6637)
     334
     335ISIS3 driver:
     336 * add write support
     337 * add mask band support on read
     338 * get label in json:ISIS3 metadata domain
     339
     340JP2ECW driver:
     341 * fix crash when translating a Float64 raster (at least with SDK 3.3)
     342
     343JP2KAK driver:
     344 * add support for Kakadu v7.9.  v7.8 should not be used.  It has a bug fixed in v7.9
     345 * catch exceptions in jp2_out.write_header()
     346
     347JP2OpenJPEG driver:
     348 * add a USE_TILE_AS_BLOCK=YES open option that can help with whole image conversion
     349 * prevent endless looping in openjpeg in case of short write
     350 * for single-line organized images, such as found in some GRIB2 JPEG2000 images, use a Wx1 block size to avoid huge performance issues (#6719)
     351  * ignore warnings related to empty tag-trees.
     352
     353JPIPKAK driver:
     354 * fix random crashes JPIP in multi-tread environment (#6809)
     355
     356KEA driver:
     357 * Add support for Get/SetLinearBinning (#6855)
     358
     359KMLSuperOverlay driver:
     360 * recognize simple document made of GroundOverlay (#6712)
     361 * Add FORMAT=AUTO option. Uses PNG for semi-transparent areas, else JPG. (#4745)
     362
     363LAN driver:
     364 * remove wrong byte-swapping for big-endian hosts
     365
     366MAP driver:
     367 * change logic to detect image file when its path is not absolute
     368
     369MBTiles driver:
     370 * on opening if detecting 3 bands, expose 4 bands since there might be transparent border tiles (#6836)
     371 * fix setting of minzoom when computing overviews out of order
     372 * do not open .mbtiles that contain vector tiles, which are not supported by the driver
     373
     374MEM driver:
     375 * disable R/W mutex for tiny performance increase in resampled RasterIO
     376 * add support for overviews
     377 * add support for mask bands
     378
     379MRF driver:
     380 * bug fix in PNG and JPEG codecs
     381 * Fixing a problem with setting NoData for MRFs generated with Create
     382 * fix plugin building (#6498)
     383 * rename CS variable so as to avoid build failure on Solaris 11 (#6559)
     384 * Allow MRF to write the data file directly to an S3 bucket.
     385 * Allow relative paths when MRF is open via the metadata string.
     386 * Add support for spacing (unused space) between tiles. Defaults to none.
     387 * Read a single LERC block as an MRF file.
     388
     389MSG driver:
     390 * fix incorrect georeference calculation for msg datasets (github #129)
     391
     392NetCDF driver:
     393 * add support for reading SRS from srid attribute when it exists and has content like urn:ogc:def:crs:EPSG::XXXX (#6613)
     394 * fix crash on datasets with 1D variable with 0 record (#6645)
     395 * fix erroneous detection of a non-longitude X axis as a longitude axis that caused a shift of 360m on the georeferencing (#6759)
     396 * read/write US_survey_foot unit for linear units of projection
     397 * apply 'add_offset' and 'scale_factor' on x and y variables when present, such as in files produced by NOAA from the new GOES-16 (GOES-R) satellite (github #200)
     398 * add a HONOUR_VALID_RANGE=YES/NO open option to control whether pixel values outside of the validity range should be set to the nodata value (#6857)
     399 * fix crash on int64/uint64 dimensions and variables, and add support for them (#6870)
     400
     401NITF driver:
     402 * add support for writing JPEG2000 compressed images with JP2OpenJPEG driver
     403 * fix writing with JP2KAK driver (emit codestream only instead of JP2 format)
     404 * fix setting of NBPR/NBPC/NPPBH/NPPBV fields for JPEG2000 (fixes #4322); in JP2ECW case, make sure that the default PROFILE=NPJE implies 1024 block size at the NITF level
     405 * implement creation of RPC00B TRE for RPC metadata in CreateCopy() mode
     406 * add support for reading&writing _rpc.txt files
     407 * nitf_spec.xml: Add support for MTIRPB TRE in NITF image segment. Also makes minor change to BLOCKA to include default values (github #127)
     408 * nitf_spec.xml: add IMASDA and IMRFCA TREs
     409 * GetFileList(): Small optimization to avoid useless file probing.
     410
     411NWT_GRD:
     412 * detect short writes
     413
     414OpenJPEG driver:
     415 * support direct extracting of GeoRaster JP2-F BLOB (#6861)
     416 
     417PCIDSK driver:
     418 * handle Exceptions returned from destructor and check access rights in setters (github #183)
     419
     420PDF driver:
     421 * implement loading/saving of metadata from/into PAM (#6600)
     422 * implement reading from/writing to PAM for geotransform and projection (#6603)
     423 * prevent crashes on dataset reopening in case of short write
     424
     425PLScenes driver:
     426 * add a METADATA open option
     427
     428PostgisRaster driver:
     429 * fix potential crash when one tile has a lower number of bands than the max of the table (#6267)
     430
     431R driver:
     432 * fix out-of-memory (oom) with corrupt R file
     433 
     434Raw drivers:
     435 * prevent crashes on dataset closing in case of short write
     436
     437RMF driver:
     438 * fix wrong counter decrement that caused compressed RMF to be incorrectly decompressed (github #153)
     439 * fix load/store inversion of cm and dm units in MTW files (github #162)
     440 * fix reading nodata for non-double data type (github #174)
     441
     442ROIPAC driver:
     443 * add support for reading/writing .flg files (#6504)
     444 * fix computation of line offset for multi-band BIP files, and warn if detecting a wrong file produced by GDAL >= 2.0.0 (#6591)
     445 * fix for big endian hosts
     446
     447RS2 driver:
     448 * add support for reading RPC from product.xml
     449
     450SAFE driver:
     451 * fix handling of SLC Products by providing access to measurements as subdatasets (#6514)
     452
     453Sentinel2 driver:
     454 * add support for new "Safe Compact" encoding of L1C products (fixes #6745)
     455
     456SQLite driver:
     457 * Add read support for RasterLite2 coverages in SQLite driver
     458
     459SRTMHGT driver:
     460 * open directly .hgt.zip files
     461 * accept filenames like NXXEYYY.SRTMGL1.hgt (#6614)
     462 * handle files for latitude >= 50 (#6840)
     463
     464VRT driver:
     465 * add default pixel functions: real, imag, complex, mod, phase, conj, etc... for complex data types (github #141)
     466 * avoid useless floating point values in SrcRect / DstRect (#6568)
     467 * avoid buffer initialization in RasterIO() when possible (replace ancient and likely broken concept of bEqualAreas)
     468 * make CheckCompatibleForDatasetIO() return FALSE on VRTDerivedRasterBands (#6599)
     469 * VRT warp: fix issue with partial blocks at the right/bottom and dest nodata values that are different per band (#6581)
     470 * fix performance issue when nodata set at band level and non-nearest resampling used (#6628)
     471 * VRTComplexSource: do temp computations on double to avoid precision issues when band data type is Int32/UInt32/CInt32/Float64/CFloat64 (#6642)
     472 * VRT derived band: add the capability to define pixel functions in Python
     473 * CreateCopy(): detect short writes
     474 * Fix linking error on VRTComplexSource::RasterIOInternal<float>() (#6748)
     475 * avoid recursion in xml:VRT metadata (#6767)
     476 * prevent 'Destination buffer too small' error when calling GetMetadata('xml:VRT') on a in-memory VRT copied from a VRT
     477 * fix 2.1 regression that can cause crash in VRTSimpleSource::GetFileList() (#6802)
     478
     479WMS driver:
     480 * Added support for open options to WMS minidrivers
     481 * Refactored the multi-http code to make it possible to do range requests.
     482 * Added a minidriver_mrf, which reads from remote MRFs using range requests.
     483 * Made the minidriver_arcgis work with an ImageService, not only MapService.
     484 * Added static cache of server response.
     485 * Allow tiledWMS to work in off-line mode by including the server response in the .wms file itself.
     486 * honour GDAL_HTTP_USERAGENT config option when it is set and <UserAgent> is missing (#6825)
     487 * WMS/WMTS: better deal with tiles with different band count (grayscale, gray+alpha, palette, rgb, rgba) (github #208)
     488 * Make HTTPS options apply to tWMS minidriver init, better HTTP error reporting
     489
     490WMTS driver:
     491 * do not take into account WGS84BoundingBox/BoundingBox that would be the result of the densified reprojection of the bbox of the most precise tile matrix
     492 * add TILEMATRIX / ZOOM_LEVEL open options
     493 * accept tiles of small dimensions (github #210)
     494
     495== OGR 2.2.0 - Overview of Changes ==
     496
     497Core:
     498 * Layer algebra: Add KEEP_LOWER_DIMENSION_GEOMETRIES=YES/NO option to Intersection, Union and Identity.
     499Default is yes, but it is set to no unless result layer is of geom type unknown.
     500If set to no, result features which would have lower dim geoms are skipped
     501if operating on two layers with same geom dim.
     502 * Fix crash/corrupted values when running importFromWkb() on POLYGON M/POLYGON ZM geometries (#6562)
     503 * Add OGR_WKT_PRECISION config option that defaults to 15 to select the number of decimals when outputting to WKT
     504 * Make OGRFeature::SetField(string) accept JSon serialized arrays for the String/Integer/Integer64/RealList types; add reciprocal OGRFeature::GetFieldAsSerializedJSon() for those types
     505 * OGRGeometryFactory::transformWithOptions(): better deal with reprojection from polar projection to WGS84, and projections crossing the antimeridian to WGS84, by splitting geometries prior to reprojection (#6705)
     506 * LinearRing transformTo(): force last point to be identical to first one in case it is not.
     507 * GML geometry parsing: avoid 'Cannot add a compound curve inside a compound curve' error (#6777)
     508 * OGR SQL: fix IN filtering on MapInfo indexed columns (#6798)
     509 * OGR SQL: add support for LIMIT and OFFSET keywords
     510 * OGR SQL: add comparisons on date / datetime (#6810)
     511 * OGR SQL: increase efficiency of DISTINCT operator
     512 * OGREnvelope: change initialization to fix issue when getting MULTIPOINT(0 0,1 1) envelope (#6841)
     513 * OGRParse: fix parsing logic to avoid false positive detection of string as datetime (#6867)
     514
     515OGRSpatialReference:
     516 * Upgrade to EPSG database v9.0 (#6772)
     517 * OGRCT: upgrade LIBNAME of mingw and cygwin to libproj-9.dll and cygproj-9.dll to be up-to-date with proj 4.9.X (recommended method is using ./configure --with-static-proj4 instead) (#6501)
     518 * importFromESRI(): fix import of multi line MERCATOR SRS (#6523)
     519 * morphToESRI(): correctly compute standard_parallel_1 of Mercator(2SP) projection from scale factor of Mercator(1SP) (#6456, #4861)
     520 * exportToProj4(): recognize explicit OSR_USE_ETMERC=NO to avoid using etmerc with proj >= 4.9.3
     521 * importFromProj4(): do not set a AUTHORITY node for strings like '+init=epsg:XXXX +some_param=val'
     522 * importFromProj4(): be robust with missing proj.4 epsg dictionary when importing '+init=epsg:xxxx +other_parm=value'
     523 * AutoIdentifyEPSG(): add identification of EPSG:3995 (Arctic Polar Stereographic on WGS84) and EPSG:3031 (Antarctic Polar Stereographic on WGS84)
     524 * OGRCoordinateTransformation: avoid potential bugs in proj.4 on NaN input
     525 * importFromEPSG(): take into account DX,DY,DZ,RX,RY,RZ,DS columns in pcs.csv to add per-PCS TOWGS84 overrides (geotiff #52)
     526 * Coordinate transformation: prevent unnecessary coordinate transformations (github #184, #185)
     527
     528Utilities:
     529 * ogr2ogr: do not return error on ogr2ogr --utility_version
     530 * ogr2ogr: keep -append and -overwrite when -update follows
     531 * ogr2ogr: fix heuristics to detect likely absence of '-f' (#6561)
     532 * ogr2ogr: do not emit a warning when updating/overwriting a destination dataset that is not a Shapefile and if -f is not specified (#6561)
     533 * ogr2ogr: make overwriting of lots of PG tables less prone to PostgreSQL 'out of shared memory' errors, by committing transactions after each table recreation
     534 * ogr2ogr: prevent 'ogr2ogr same.shp same.shp' (#1465)
     535 * ogr2ogr: add a -limit option to limit the number of features read per layer
     536 * GDALVectorTranslate(): imply update mode if access mode not explicitly specified and hDstDS != NULL (#6612)
     537 * ogrlineref: Fix crash if no new layer name provided
     538 * ogrtindex: add -src_srs_name, -src_srs_format and -t_srs option to allow indexing files that have different projections
     539
     540Multidriver:
     541 * PGeo/FileGDB/OpenFileGDB: OGRCreateFromShapeBin(): do not error out on empty lines/polygons
     542 * GPKG/SQLite/PG/FileGDB/MEM: properly set/reset field subtype with AlterFieldDefn() (#6689)
     543 * DXF, GeoJSON, GML, KML, LIBKML, ODS, Shape, XLSX: report operating system error if file creation fails (#2253)
     544
     545AmigoCloud driver:
     546 * add option to receive an AmigoCloud API key in the connection string, fix page size (github #137)
     547
     548Carto:
     549 * renamed from CartoDB
     550 * fix CartoDB'fication() by removing manual creation of the_geom_webmercator mercator, and also attach created sequence to table.cartodb_id (#6565)
     551
     552CSV driver:
     553 * add read/write support for String/Integer/Integer64/RealList types as serialized JSon arrays
     554
     555DGN driver:
     556 * avoid crash with -ftrapv on 250K_NF44NE_Area_V7.dgn (relates to #6806)
     557 * use coordinate delta encoding from the attribute records array (6806)
     558
     559DXF driver:
     560 * sanitize layer name on export to avoid forbidden characters
     561 * reader: convert GeometryCollection to MultiPoint, MultiLineString or MultiPolygon when possible (QGIS #10485)
     562 * add font of TEXT and MTEXT to OGR style string (https://github.com/OSGeo/gdal/pull/198)
     563
     564DWG driver:
     565 * compilation fixes with Teigha 4.2.2
     566
     567ElasticSearch driver:
     568 * add support for ElasticSearch 5.0 and fix 2.X support (#6724)
     569 * implement translation from SQL to E.S. query language
     570
     571FileGDB driver:
     572 * add support to read curve geometries (#5890)
     573 * support opening '.' directory
     574
     575GeoJSON driver:
     576 * writer: add a RFC7946=YES creation option (#6705)
     577 * read and write 'name' and 'description' members at FeatureCollection level
     578 * fix field type detection when first value of a field is null (#6517)
     579 * improve/fix field type promotion
     580 * fix wrong behaviour when there's a 'id' at Feature level and 'id' or 'ID' field in properties (#6538)
     581 * in case top level id is a negative integer, put the value in a 'id' attribute (#6538)
     582 * ESRI Json reader: support multilinestring from esriGeometryPolyline
     583 * ESRI Json reader: do not set field width of 2147483647 (#6529)
     584 * ESRI Json reader: support reading M and ZM geometries
     585 * Add CPL_json_object_object_get() and use it, to avoid deprecation warnings on json_object_object_get()
     586 * TopoJSON reader: sanitize invalid polygons (such as found in the 'TopoJSON' layer of http://bl.ocks.org/mbostock/raw/4090846/us.json)
     587 * writer: fix segfaults on NULL geometry with -lco WRITE_BBOX=YES (#6698)
     588 * writer: fix crash if NATIVE_MEDIA_TYPE creation option is specified alone
     589 * Add support of TopoJSON without 'transform' element (github #192)
     590 * don't set SRS if 'crs' set to null (github #206)
     591
     592GML driver:
     593 * remove hack for CityGML regarding forcing srsDimension to 3 if not specified. Instead add a GML_SRS_DIMENSION_IF_MISSING config option that can be set to 3 if needed (#6597)
     594 * consider srsName with URL like 'http://www.opengis.net/def/crs/EPSG/0/' as following EPSG axis order. Add SWAP_COORDINATES=YES/NO/AUTO (and GML_SWAP_COORDINATES configuration option) to override all auto guessing (#6678)
     595 * add a SRSNAME_FORMAT=SHORT/OGC_URN/OGC_URL dataset creation option
     596 * OGR_G_ExportToGMLEx(): add a COORD_SWAP option
     597 * Writer: make ogr:FeatureCollection be a substitutionGroup of AbstractFeature for GML 3.2 output, so as to be compatible of GMLJP2 v2
     598 * GML and NAS: improve error reporting (mention feature id and gml_id) when parsing fails because of geometry decoding error
     599 * GML and NAS: add GML_SKIP_CORRUPTED_FEATURES and NAS_SKIP_CORRUPTED_FEATURES configuration options to avoid stopping reading a layer because of a corrupted geometry
     600 * Add support for Japanese GML FGD v4.1 format (github #204)
     601
     602GPKG driver:
     603 * list all tables/views by default (useful for non spatial tables not registered as aspatial). Add ASPATIAL_VARIANT layer creation option to select the way how to create a non-spatial table as aspatial.
     604 * Create non-spatial tables by default conforming to GPKG v1.2 'attributes'
     605 * use OGR_CURRENT_DATE config option if defined as the value of the 'last_change' of column of 'gpkg_contents' so as to be able to have binary identical output
     606 * update last_change column when content of raster or vector tables has changed
     607 * do not emit error when running ExecuteSQL() with a spatial filter on an empty layer (#6639)
     608 * update schema to reflect CURRENT_TIMESTAMP -> 'now' changes (github #155)
     609 * better table and column quoting.
     610 * Robustify layer deletion (make it accessible through DROP TABLE xxx and DELLAYER:xxx syntax) and renaming
     611 * implement DeleteField(), AlterFieldDefn(), ReorderFields()
     612 * make GetExtent() save extent if not already cached
     613 * add special SQL 'RECOMPUTE EXTENT ON layer_name' to force recomputation of extent
     614 * check identifier unicity on layer creation
     615 * add possibility to disable foreign key check by setting OGR_GPKG_FOREIGN_KEY_CHECK=NO config option
     616 * add HasSpatialIndex(tblname,geomcolname) SQL function
     617 * don't show Spatialite vgpkg_ virtual tables (#6707)
     618 * SQLite/GPKG: add explicit error message when trying to open a read-only WAL-enabled database (#6776)
     619 * SQLite/GPKG: make sure when closing a WAL-enabled database opened in read-only mode to reopen it in read-write mode so that the -wal and -shm files are removed (#6776)
     620 * make GetFeature() works on non conformant tables that have no integer primary key field (#6799), and be robust to non standard column types
     621 * remove triggers related to metadata tables that cause issues and have been removed by latest revisions of the spec.
     622 * declare feature id column of features tables and tile pyramid user data tables as NOT NULL (#6807)
     623 * add a gpkg_ogr_contents table to store feature count.
     624 * speed-up GetFeatureCount() with only a spatial filter set
     625 * improve column recognition for SQL result layer
     626 * add/override ST_Transform() and SridFromAuthCRS() from Spatialite to make them work with gpkg_spatial_ref_sys
     627 * add ImportFromEPSG()
     628 * make ST_Min/MaxX/Y(), ST_SRID(), ST_GeometryType() and ST_IsEmpty() work with Spatialite geometries
     629 * improve performance of spatial index creation and use on multi-gigabyte databases
     630 * better support of spatial views, by adding a special behaviour if a column is named OGC_FID
     631 * avoid potential denial of services by adding LIMIT clauses
     632 * slightly more efficient implementation of GetExtent() if extent in gpkg_contents is empty
     633 * create a dummy 'ogr_empty_table' features table in case we have no 'features' or 'tiles' table, so as to be conformant with Req 17 of the GeoPackage specification
     634 * add DEFAULT '' to metadata column of gpkg_metadata table
     635 * accept opening a .gpkg without vector content and without gpkg_geometry_columns table in vector mode if we also open in update mode; remove capability of opening a .gpkg without vector content but with gpkg_geometry_columns table in vector mode if we only open in read-only mode; fix creation of a vector layer in a database if it initially lacks a gpkg_geometry_columns table
     636 * fix appending a raster to a vector database without pre-existing raster support tables
     637 * add minimalistic support for definition_12_063 column in gpkg_spatial_ref_sys, so that insertion of new SRS doesn't fail
     638 * use GEOMETRYCOLLECTION instead of GEOMCOLLECTION for SQL and gpkg_geometry_columns.geometry_type_name
     639 * do not warn if gpkg_metadata extension declared
     640
     641GPX driver:
     642 * ignore wpt/rtept/trkpt with empty content for lat or lon
     643
     644ILI driver:
     645 * ILI1: fix crash in JoinSurfaceLayer() when the multicurve of the feature of the poSurfaceLineLayer layer is empty (#6688)
     646 * ILI1: make polygon reconstruction in Surface layers robust to curves not in natural order (#6728)
     647 * ILI2: assign FID to features (#6839)
     648 * ILI2: fix crashing bug in Create() if model file not specified
     649
     650KML driver:
     651 * add a DOCUMENT_ID datasource creation option to set the id of the root <Document> node
     652
     653LIBKML driver:
     654 * fix crash when reading <gx:TimeStamp> or <gx:TimeSpan> elements (#6518)
     655 * add a DOCUMENT_ID datasource creation option to set the id of the root <Document> node
     656 * emit style related errors as warnings to make datasets openable by SWIG bindings (#6850)
     657
     658MITAB driver:
     659 * limit (width, precision) of numeric fields on creation to (20,16) for compatibility with MapInfo (#6392)
     660 * add support for oblique stereographic (#6598)
     661 * Adds the authority code for Irish national grid (Ireland_1965) (github #149)
     662 * fix spelling for Euref_89 and add EPSG code (#6816)
     663 
     664MSSQLSpatial driver:
     665 * Fix bulk insert with table names containing spaces (#6527)
     666 * Build optional mssql plugin with SQL Native Client support for MSSQL Bulk Copy
     667 * Fix MSSQL select layer to recognize geometry column with sqlncli (#6641)
     668
     669MySQL driver:
     670 * fix spatial filtering on recent mysql by adding a SRID in the rectangle geometry
     671 * do not force NOT NULL constraint on geometry field if no spatial index is used
     672 
     673NAS driver:
     674 * support multiple 'anlass' in updates
     675
     676NWT_GRD:
     677 * add write support (#6533)
     678
     679OCI driver:
     680 * Add options for faster feature loading (#6606)
     681 * add WORKSPACE open option
     682 * correctly handle OFTInteger64 case in loader layer (bug found by cppcheck multiCondition)
     683 * support for long identifiers (up to 128 long) when running of 12.2 or + (#6866)
     684 * OCILOB VSIL driver: new driver to streams in and out of Oracle BLOB as a GDAL large virtual file system (#6861)
     685
     686ODS driver:
     687 * fix FID filtering (#6788)
     688
     689OGDI driver:
     690 * make GetNextRawFeature() report an error when it is not end of layer
     691 * better error reporting when the layer list cannot be established
     692 * catch non-fatal OGDI errors emitted by OGDI 3.2.0 if OGDI_STOP_ON_ERROR environment variable is set to NO, and emit them as CPLError()s
     693 * display OGDI error message if opening fails
     694
     695OpenFileGDB driver:
     696 * do not error out on geometries that have a declared M array but that is missing (#6528)
     697 * add support to read curve geometries (#5890)
     698 * transcode UTF-16 strings found in column names, alias, etc... to UTF-8 (instead of using only their ASCII byte) (#6544)
     699 * do not emit an error on a empty table whose declaration has M settings (#6564)
     700 * support opening '.' directory
     701 * improve detection of some form of TINs from MULTIPATCH, and for MultiPatch layers, try to select a better geometry type for those layers (#5888)
     702 * fix bug when field description offset is beyond 4GB (#6830)
     703
     704OSM driver:
     705 * fix 'too many tags in relation' error when parsing .osm files
     706 * allow key=value entries in closed_ways_are_polygons= configuration (#6476)
     707 * allow OSM_SQLITE_CACHE config option to be greater than 2047
     708
     709PG driver:
     710 * fix insertion of binary/bytea content in non-copy mode (#6566)
     711 * fix errors caused by missing geometry_columns/spatial_ref_sys tables in non PostGIS databases, that prevent reading more than 500 features (QGIS #10904)
     712 * avoid errors with field default expressions like 'foo'::text (#6872)
     713
     714PLScenes driver:
     715 * add HTTP retry logic (#6655)
     716 * V0 API: workaround limitations on filtering on image_statistics.image_quality (#6657)
     717 * add support for Data V1 API
     718
     719S57 driver:
     720 * Fix ogr2ogr -f S57 (#6549)
     721 * fix crashes if the s57objectclasses.csv resource file contains invalid lines
     722 * remove data/s57attributes_aml.csv data/s57attributes_iw.csv data/s57objectclasses_aml.csv data/s57objectclasses_iw.csv and move their content into main s57attributes.csv and s57objectclasses.csv files (#6673)
     723 * Update s57 attributes and object classes according to s-57 reference (github #202)
     724 * add POSACC and QUAPOS fields for geometric primitive layers (github #205)
     725
     726SDE driver:
     727 * rename driver to OGR_SDE. Fix build (#6714)
     728
     729SEGY driver:
     730 * Accept SEGY files with ASCII headers that have nul terminated strings (#6674)
     731
     732Shapefile driver:
     733 * auto-repack by default at dataset closing and FlushCache()/SyncToDisk() time. Controlled by AUTO_REPACK open and layer creation options (that default to YES)
     734 * generate .dbf end-of-file 0x1A character by default. Add DBF_EOF_CHAR layer creation options / open options to control that behaviour
     735 * writing: use strerrno() for better error messages (QGIS #13468)
     736 * change REPACK implementation on Windows to be robust to remaining file descriptors openend on the .shp/.shx/.dbf (#6672, QGIS #15570)
     737 * Fix issue in DBFCloneEmpty() one a one field DBF not yet written to disk
     738 * add call to AutoIdentifyEPSG() when reading a .prj
     739 * support reading .dbf with substantial padding after last field definition.
     740 * when rewriting the geometry of the last record in the .shp, do it at the file offset it previously used (#6787)
     741
     742SOSI driver:
     743 * make registration of driver work again (2.1.0 regression) (#6500)
     744 * update to latest version of https://github.com/kartverket/gdal. Make SOSI driver support more geometry types (including curved geometries) plus provides some improvements on attribute-type mapping. Fix some memory errors/leaks. Disable by default non working creation code (#6503)
     745
     746SQLite/Spatialite driver:
     747 * do not emit error when running ExecuteSQL() with a spatial filter on an empty layer (#6639)
     748 * add read/write support for String/Integer/Integer64/RealList types as serialized JSon arrays
     749 * Spatialite: avoid crash when creating layer with geom_type = wkbCurve (fixes #6660)
     750 * Spatialite: do not report some BLOB columns as geometry columns of tables/views (when found before the geometry column(s)) (#6695, #6659)
     751 * fix update of features with multiple geometry columns (#6696)
     752 * speed-up dataset closing when creating a database with many spatial layers
     753 * Spatialite: avoid spatial views to cause layers 'layer_name(geometry_name)' to be publicly listed (#6740)
     754 * Spatialite: speed-up creation of database with INIT_WITH_EPSG=NO that is slow without transaction (not sure why as the table is empty...)
     755 * use AUTOINCREMENT for feature id column
     756 * allow OGR_SQLITE_CACHE to be set to > 2047 (MB) without overflowing
     757 * SQLite/GPKG: use SQLITE_OPEN_NOMUTEX flag to open databases.
     758 * GPKG/SQLite: fix ExecuteSQL() to work with a statement with 2 SELECT and ORDER BY clause (#6832)
     759 * SQLite/GPKG: change default page_size to 4096 bytes.
     760 * Update layer statistics for Spatialite 4 DB (#6838)
     761 * Remove traces of support of SQLite < 3.6.0
     762 * SQLite dialect: properly quote column names when needed (github #214)
     763
     764VFK driver:
     765 * allow reading multiple VFK files into single DB support amendment VFK files
     766 * recreate DB in the case that it's outdated (VFK DB created by previous versions of GDAL)
     767 * allow reading DB as valid datasource (#6509)
     768 * new tables in backend SQLite database (geometry_columns/spatial_ref_sys) to enable reading DB datasource by SQLite driver
     769 * new configuration option OGR_VFK_DB_READ to enable reading backend database by VFK driver
     770
     771VRT driver:
     772 * add support for 'm' attribute in PointFromColumns mode (#6505)
     773
     774WFS driver:
     775 * invalidate underlying layer when SetIgnoredFields() is called (QGIS #15112)
     776 * don't crash on empty <Keyword/> declaration (#6586)
     777 * fix potential nullptr dereference on dataset without layer (github #179)
     778
     779XLSX driver:
     780 * only list worksheets (and no charts) as layers (#6680)
     781
     782== SWIG Language Bindings ==
     783
     784All bindings:
     785 * map osr.GetTargetLinearUnits() (#6627)
     786 * allow wkbCurve/wkbSurface as valid values for the geom type of GeomFieldDefn object
     787 * map GDALIdentifyDriverEx()
     788
     789Java bindings:
     790 * Fix SWIG Java bindings for GNM (#6434)
     791 * Fix crash on GetDefaultHistogram() if the C++ method returns an error (#6812)
     792
     793Perl bindings:
     794 * return value always from GetGeomFieldIndex (#6506)
     795 * the Warp method requires a list of datasets (#6521)
     796 * when 'use bigint' is in effect, int var is a ref.
     797 * Separate the module building in the CPAN distribution and in
     798the GDAL source tree. The CPAN distribution will be
     799developed at https://github.com/ajolma
     800 * Fix the Extension method in Driver per RFC 46
     801 * The Inv method of GeoTransform did not return a new object.
     802Allow a single point in Apply method of GeoTransform.
     803 * Test for existence of PDL and require it if available.
     804 * allow decimation/replication in Piddle i/o.
     805 * support resampling in ReadTile.
     806 * Polygonize: Require explicit 8 for Connectedness to set 8-connectedness and allow 8CONNECTED as an option.
     807 * use Safefree to free memory allocated in Perl (#6796)
     808
     809Python bindings:
     810 * release the GIL before entering GDAL native code (for all, in GDAL module and a few ones in ogr like ogr.Open())
     811 * add outputType option to gdal.Rasterize()
     812 * fix build issues when CXX is defined in the environment
     813 * gdal.VectorTranslate(): add spatSRS option
     814 * when enabling ogr.UseExceptions(), use the GDAL error message in the exception text (if available), when the exception is linked to an error value in the OGRErr return code
     815 * gdal.VectorTranslate(): accept a single string as value of the layers option (instead of iterating over each of its characters)
     816 * Regenerate Python bindings with SWIG 3.0.8 to avoid issue with Python 3.5. Add backward compatibility in Band.ComputeStatistics() to accept 0/1 as input instead of the expected bool value (#6749)
     817 * fix gdal.DEMProcessingOptions(zeroForFlat=True) (#6775)
     818 * fix 'import osgeo.gdal_array' with python3 and SWIG 3.0.10 (#6801)
     819 * allow gdal.FileFromMemBuffer() to use buffer > 2GB (#6828)
     820 * accept unicode strings as field name argument in Feature (like SetField, GetField, etc...) and FeatureDefn methods