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


Ignore:
Timestamp:
Apr 20, 2018, 5:11:47 AM (6 years ago)
Author:
Even Rouault
Comment:

2.3.0 news page

Legend:

Unmodified
Added
Removed
Modified
  • Release/2.3.0-News

    v1 v1  
     1= GDAL/OGR 2.3.0 *PRELIMINARY* Release Notes (to 1121758f74589f8850193a5baced7ab1335a4b39) =
     2
     3Note: due to the change of SCM during the development, #XXXX still refers to
     4Trac tickets. GitHub tickets are explicitly indicated with github #XXXX
     5
     6== In a nutshell... ==
     7
     8 * New GDAL drivers:
     9   - PDS4: read/write
     10   - RDA: DigitalGlobe Raster Data Access (read-only)
     11 * New OGR drivers:
     12   - MVT: add read/write driver for Mapbox Vector Tile standalone files or tilesets
     13   - ESRIJson and TopoJSON: created from existing code of the GeoJSON driver
     14   - WFS3: *experimental* read-only driver
     15 * RFC 68: Make C++11 a build requirement
     16    https://trac.osgeo.org/gdal/wiki/rfc68_cplusplus11
     17 * RFC 70: Guess output format from extension of output filename, if no explicit format passed to C++ or Python utilities
     18    https://trac.osgeo.org/gdal/wiki/rfc70_output_format_guess
     19 * RFC 71: Move to GitHub for source code repository and issue tracker.
     20    https://trac.osgeo.org/gdal/wiki/rfc71_github_migration
     21 * Significantly improved drivers:
     22    - MBTiles (vector tiles support)
     23    - DXF
     24    - GRIB (GRIB2 write support)
     25    - WCS (support WCS 2.0)
     26 * Improvements in network-based /vsi handlers: /vsicurl, /vsis3, /vsigs. Add:
     27     - /vsiaz for Microsoft Azure Blobs
     28     - /vsioss for Alibaba Cloud Object Storage Service
     29     - /vsiswift/ for OpenStack Swift object storage
     30 * Command line utilities: use Unicode main on Windows to avoid issues with non-ASCII characters (#7065)
     31 * Update to EPSG v9.2 (#7125)
     32 * Update data/esri_extra.wkt and add data/esri_epsg.wkt, taken from https://github.com/Esri/projection-engine-db-doc (Apache v2 license) (#2163)
     33 * Add support for PROJ.5 new API (requires proj 5.0.1 or later)
     34 * More than 1000 fixes for issues/vulnerabilities found by OSS-Fuzz
     35 * Remove raster OGDI driver (vector OGDI driver still there) (#7087)
     36
     37== New installed files ==
     38
     39 * data/pds4_template.xml
     40 * data/esri_epsg.wkt
     41
     42== Backward compatibility issues ==
     43
     44See MIGRATION_GUIDE.TXT
     45
     46== GDAL/OGR 2.3.0 - General Changes ==
     47
     48Build(Unix):
     49 * refresh config.{guess,sub} from latest upstream; upgrade to libtool 2.4.6 files
     50 * add a --with-rename-internal-shapelib-symbols option that defaults to yes if --with-hide-internal-symbols is set; and make -with-rename-internal-libtiff/libgeotiff-symbols also defaults to yes when --with-hide-internal-symbols is set
     51 * add a --with-charls switch (enabled by default) to compile that JPEGLS driver
     52 * make --without-static-proj and --with-fgdb an error when filegdb (>= 1.5) embeds proj.4 symbols
     53 * add --with-zstd switch (for GTiff ZStd compressino with internal libtiff)
     54 * add support for ECW SDK 5.4, by detecting if we must link against the newabi or oldabi link
     55 * fix detection of 64bit file API with clang 5 (#6912)
     56 * GNUmakefile: add a static-lib and install-static-lib targets
     57 * use .exe extension when building with mingw64* toolchains (#6919)
     58 * Pass --silent to libtool in compile (C and C++), link, install and clean modes.
     59 * Limit number of installed cpl*.h files installed to a fixed list.
     60
     61Build(Windows):
     62 * always build the PDF driver, even when none of poppler/podofo/pdfium are available, in which case it is write-only (#6938)
     63 * add new targets bindings, bindings_install and bindings_clean that depend on the new BINDINGS option in nmake.opt (#6948)
     64 * for Kakadu, add capability to build as a plugin, and make it possibly to link only against the Kakadu .lib/.dll instead of incorporating some of its .obj (#6940)
     65 * nmake.opt: Ensure PDB is included in release DLL if WITH_PDB requested (#7055)
     66 * nmake.opt: use /MDd for OPTFLAGS for DEBUG=1 builds (#7059)
     67 * nmake.opt: avoid some settings to be defined unconditionally (#5286)
     68 * nmake.opt: add configuration to enable openssl (which is needed for thread-safe curl use)
     69
     70Developer corner:
     71 * Add scripts/setdevenv.sh to setup env variables needed for running GDAL without installing it
     72
     73== GDAL 2.3.0 - Overview of Changes ==
     74
     75Port:
     76 * Add CPLJSONDocument/Object/Array - C++ thin wrapper around json-c library. (github #282)
     77 * /vsicurl/: fix occasional inappropriate failures in Read() with some combinations of initial offset, file size and read request size (#6901)
     78 * /vsicurl/: add a CPL_VSIL_CURL_NON_CACHED configuration option, so as to be able to specify filenames whose content must not be cached after dataset closing
     79 * /vsicurl/: honour GDAL_HTTP_MAX_RETRY and GDAL_HTTP_RETRY_DELAY config options. Add extended filename syntax to pass options use_head, max_retry, retry_delay and list_dir.
     80 * /vsicurl/: enable redirection optimization on signed URLs of Google Cloud Storage. Helps for the PLScenes driver (fixes #7067)
     81 * /vsicurl/ and derived filesystems: redirect ReadDir() to ReadDirEx() (#7045)
     82 * /vsicurl/ and related file systems: add compatibility with HTTP/2 (requires recent enough curl, buit against nghttp2). Can be controlled with the GDAL_HTTP_VERSION=1.0/1.1/2/2TLS
     83 * /vsicurl/: fix 2.2 regression regarding retrieval of file size of FTP file (#7088)
     84 * /vsicurl/: when stat'ing a file, fallback from HEAD to GET if the server issues a 405 error
     85 * Add a VSICurlClearCache() function (bound to SWIG as gdal.VSICurlClearCache()) to be able to clear /vsicurl/ related caches (#6937)
     86 * CPLHTTPSetOptions(): use SearchPathA() for curl-ca-bundle.crt on Windows. See https://github.com/curl/curl/issues/1538
     87 * CPLHTTPFetch() / vsicurl: add retry on HTTP 429, and add exponential backoff logic for retry delay
     88 * CPLHTTPFetch(): when openssl is enabled, and used by libcurl, use openssl thread safety mechanism to avoid potential crashes in multithreading scenarios
     89 * CPLHTTPFetch(): add a SSL_VERIFYSTATUS option / GDAL_HTTP_SSL_VERIFYSTATUS configuration option to check OCSP stapling
     90 * CPLHTTPFetch(): add a USE_CAPI_STORE option / GDAL_HTTP_USE_CAPI_STORE configuration option to use certificates from the Windows certificate store
     91 * Ignore SIGPIPE that may arose during curl operations (mostly when using OpenSSL for TLS)
     92 * Add CPLHTTPMultiFetch() and CPLMultiPerformWait()
     93 * /vsis3/: support reading credentials from ~/.aws/credentials, ~/.aws/config or IAM role on EC2 instances
     94 * /vsis3/: properly handle cases where a directory contains a file and subdir of same names; implement Mkdir() and Rmdir()
     95 * /vsis3/: fix Seek(Tell(), SEEK_SET) fails if current position is not 0 (#7062)
     96 * /vsis3/: properly handle 307 TemporaryRedirection (#7116)
     97 * /vsis3/: fix support of bucket names with dot in them (#7154)
     98 * /vsis3/: make multipart upload work with Minio
     99 * /vsigs/: add new authentication methods using OAuth2 refresh token or service account or Google Compute Engine VM authentication, or using ~/.boto file
     100 * /vsigs/: add write, Unlink(), Mkdir() and Rmdir() support
     101 * /vsigs/: allow authentication to be done with the GOOGLE_APPLICATION_CREDENTIALS configuration option pointing to a JSon file containing OAuth2 service account credentials
     102 * /vsis3/ and /vsigs/: take into account user provided x-amz- / x-goog- HTTP headers with GDAL_HTTP_HEADER_FILE
     103 * Fix CPLReadDirRecursive() to behave properly on /vsis3/ buckets that have foo (file) and foo/ (sub-directory) entries (#7136)
     104 * /vsis3/: add a AWS_NO_SIGN_REQUEST=YES configuration option to disable request signing (#7205)
     105 * /vsis3, /vsigs, /vsioss, /vsiaz: fix support of non-ASCII characters in keys (#7143)
     106 * Add VSIGetActualURL(), typically to expand /vsis3/ paths to full URLs, and bind it to SWIG as gdal.GetActualURL()
     107 * Add VSIGetSignedURL()
     108 * Add VSIGetFileSystemsPrefixes() and VSIGetFileSystemOptions()
     109 * CPLFormFilename() / CPLProjectRelativeFilename(): add /vsis3 and similar file systems to the list of filesystems requiring unix separator (github #281)
     110 ù Make CPLFormFilename() properly work with http[s:]// filenames
     111 * Add a CPLGetErrorCounter() function that can be used to test if new errors have been emitted
     112 * Add cpl_safemaths.hpp to detect integer overflows (#6229)
     113 * /vsigzip/: avoid trying to write a .gz.properties file on a /vsicurl/ file (#7016)
     114 * CPLStrtod(): parse string like '-1.#IND0000000' as NaN instead of -1 (seen when looking at refs #7031, but does not fix it)
     115 * Fix CPLCopyTree() that doesn't properly on MSVC 2015 (and possibly other platforms) (#7070)
     116 * /vsimem/: to improve Posix compliance, do not make Seek() after end of file error out in read-only mode
     117 * cpl_config.h.vc: define HAVE_LONG_LONG 1; cpl_port.h remove MSVC specific logic for int64 (github #264)
     118 * /vsisparse/: make Read() detect end of file
     119 * GDALVersionInfo("BUILD_INFO"): report if GEOS is available
     120 * Add VSIMkdirRecursive() and VSIRmdirRecursive()
     121 * Add CPLGetHomeDir()
     122 * CPLSetErrorHandler(): avoid later crashes when passing a null callback (github #298)
     123 * CPLHTTPParseMultipartMime(): make it format the pasMimePart[].papszHeaders in a standard key=value format without EOL
     124 * CPLString: avoid std::string symbols to be exported with Visual Studio (#7254)
     125 * I/O on Android: add support for 64-bit file operations if API level >= 24 (Android 7.0 or later) (github #339)
     126
     127Core:
     128 * add GDALDataTypeIsFloating, GDALDataTypeIsSigned, GDALDataTypeUnionWithValue, GDALFindDataType, GDALFindDataTypeForValue (github #215). Add GDALDataTypeIsInteger()
     129 * Cleanup ARE_REAL_EQUAL() and GDALIsValueInRange() (#6945, #6946)
     130 * Various SSE2/AVX2 optimizations for GDALCopyWords()
     131 * GDALGCPsToGeoTransform(): add GDAL_GCPS_TO_GEOTRANSFORM_APPROX_OK=YES and GDAL_GCPS_TO_GEOTRANSFORM_APPROX_THRESHOLD=threshold_in_pixel configuration option (#6995)
     132 * RawDataset::IRasterIO(): don't assume all bands are RawRasterBand
     133 * GDALOpenInfo: make number of bytes read at opening configurable with GDAL_INGESTED_BYTES_AT_OPEN
     134 * GDALCopyWholeRasterGetSwathSize(): try to use at least 10 MB for swath size
     135 * GDALDatasetCopyWholeRaster(), GDALRasterBandCopyWholeRaster(), GDALCreateCopy(): always call AdviseRead() on the full extent of the source dataset (#7082)
     136 * make DefaultCreateCopy() copy RAT
     137 * Generate gcore/gdal_version.h from git date and sha for a dev version (Unix builds only)
     138 * Add GDALDataset::Open()
     139 * Add C++ iterators for layers, bands and features in GDALDataset
     140 * External .ovr: make sure that ExtraSamples tag is written
     141
     142Algorithms:
     143 * Contour: make sure no 3D geometry is created unless -3d switch is defined (#336)
     144 * Warper: revise/improver how working data type is inferred from other parameters
     145 * Warper: when operating on single-band, skip target pixels whose source center pixel is nodata (2.2 regression, #7001)
     146 * Warper: avoid blocking when number of rows is 1 and NUM_THREADS > 1 (#7041). Also limit the number of threads so that each one processes at least 65536 pixels
     147 * Warper: use AdviseRead() when source chunks are sufficiently compact (#7082)
     148 * Warper: fix rounding error in scale factor computation (github #273)
     149 * Warper: use panSrcBands[0] in the single band case (regression fix, github #295)
     150 * Warper: add very special case to handle situation where input raster edge touches dateline, but proj.4 transformation involves a discontinuity (#7243)
     151 * Geoloc transformer: fix systematic pixel shift (github #244)
     152 * RPC transformer: set output coordinates to HUGE_VAL when failure occurs, so that a following coordinate transformation can detect the error too (#7090)
     153 * RPC transformer: return NULL at instantiation if the specified RPC_DEM file cannot be opened
     154 * Export GDALRegisterTransformDeserializer() and GDALUnregisterTransformDeserializer() (#5392)
     155 * GDALRasterize(): avoid hang in some cases with all_touched option (#5580)
     156 * Optimize GDALResampleConvolutionVertical() and GDALPansharpenOperation::WeightedBroveyPositiveWeightsInternal() for SSE2 / AVX
     157 * Overview / resampling: speed-up bicubic upsampling for SSE2
     158 * GDALGrid() with linear algorithm: avoid assertions/segmentation fault when GDALTriangulationFindFacetDirected() fails (#7101)
     159 * GDALComputeProximity(): fix int32 overflow when computing distances on large input datasets (#7102)
     160 * GDALAllRegister(): make sure that all drivers that need to look for sidecar files are put at the end
     161
     162Utilities:
     163 * GDAL and OGR C++ and Python utilities: accept -f or -of to specify output format
     164 * --optfile: re-parse inlined content with GDALGeneralCmdLineProcessor(), in particular to support --config key value in option file
     165 * gdalsrsinfo: for consistency with other output, do not quote the proj.4 string output
     166 * gdal_rasterize: fix segfault when rasterizing onto a raster with RPC (#6922)
     167 * gdal_rasterize: add a -to option to specify transformer options
     168 * gdal_rasterize / GDALRasterizeGeometries(): optimize rasterization for large number of small geometries (#5716)
     169 * gdal_rasterize: fix crash in some situations with ALL_TOUCHED option (#7176)
     170 * gdaladdo: support not specifying explicitly overview factors, and add -minsize option
     171 * gdal_translate: add -a_scale / -a_offset (#7093)
     172 * gdal_translate: add -colorinterp / -colorinterp_X options
     173 * DefaultCreateCopy()/gdal_translate: do not destroy target file in case of failed copy wen using -co APPEND_SUBDATASET=YES (#7019)
     174 * gdal_translate: make -b mask[,xx] use the appropriate band data type (#7028)
     175 * gdal_translate property copy RAT (or not-copy RAT when -norat is specified)
     176 * gdalwarp: make -crop_to_cutline works when RPC transform is involved
     177 * gdalwarp: for RPC warping add a few extra source pixels by default
     178 * gdalwarp: -crop_to_cutline: reduce number of iterations to find the appropriate densification (#7119)
     179 * gdalwarp: do not set implicitly nodata on destination dataset when -dstalpha is specified (#7075)
     180 * gdalwarp: display errors (such as invalid open options) on successful opening of destination dataset
     181 * gdalwarp: fix "-dstnodata inf" (#7097)
     182 * gdalwarp: fix when several input datasets with different SRS are specified, and no explicit target SRS is provided (#7170)
     183 * gdalwarp: make sure to try to redefine the destination nodata value from the source nodata even if the newly created dataset has already set a default nodata value (#7245)
     184 * gdalwarp: improve progress meter when using multiple source files. For GDALWarp() function, make sure that the progress goes monotonically from 0 to 1. (#352)
     185 * gdal2tiles.py: fix GDAL 2.2 regression where tilemapresource.xml was no longer generated (#6966)
     186 * gdal2tiles: add --processes=intval option to parallelize processing (#4379)
     187 * gdalinfo --format / ogrinfo --format: report extra metada items in a 'Other metadata items:' section (#7007)
     188 * gdalinfo: make sure to display geodetic coordinates always in degree (and not potentially in another unit such as grad) (#4198)
     189 * gdalinfo: report 'Mask Flags: PER_DATASET NODATA' when NODATA_VALUES metadata item is specified
     190 * gdal_edit.py: add a -colorinterp_X red|green|blue|alpha|gray|undefined option to change band color interpretation
     191 * gdal_contour: return with non-0 code if field creation or contour generation failed  (#7147)
     192 * gdal_retile.py: fix failure if the filename contains % (percent) symbol (#7186)
     193 * gdalbuildvrt: make warnings about heterogeneous projection/band characteristics more explicit (#6829)
     194 * gdalbuildvrt: add support for band scale and offset (#3221)
     195 * gdal_fillnodata.py, gdal_pansharpen.py, gdal_polygonize.py, gdal_proximity.py, gdal_sieve.py, rgb2pct.py: avoid potential problem on Windows in verbose mode (github #458)
     196
     197Sample Python scripts:
     198 * Add gdal_mkdir.py, gdal_rm.py and gdal_rmdir.py samples scripts
     199 * gdalcopyproj.py: fix use of GCP related API (github #255)
     200 * ogr2vrt.py: automatically set relativeToVRT=1 for input and output filenames givn in relative form in the same directory
     201
     202Multi driver changes:
     203 * tag (and do needed changes) CALS, FUJIBAS, PAUX, SGI, RS2, GXF, TERRAGEN, Rasterlite, CPG, MSGN, Leveller as supporting GDAL_DCAP_VIRTUALIO
     204
     205AIGRID:
     206 * fix handling on raw 32-bit AIG blocks (#6886)
     207
     208BT driver:
     209 * make GetNoDataValue()/SetNoDataValue() use PAM
     210
     211DIMAP driver:
     212 * do not report dummy geotransform (see https://lists.osgeo.org/pipermail/gdal-dev/2018-January/048014.html)
     213
     214DTED driver:
     215 * Support VerticalCS for DTED and SRTM drivers when REPORT_COMPD_CS config option is set (github #237)
     216
     217ECW driver:
     218 * fix Windows compilation against old ECW SDK and VS < 2015 (#6943)
     219 * make AdviseRead() to store its call parameters, and only do the actual work in RunDeferredAdviseRead() if TryWinRasterIO() determines that the IRasterIO() parameters are compatible of the AdviseRead() ones (#7082)
     220 * data/ecw_cs.wkt: fix PRIMEM of MONTROME (#2340)
     221
     222EHdr driver:
     223 * support reading/writing .clr as/from RAT (#3253)
     224
     225ENVI driver:
     226 * support 'major frame offsets' keyword (#7114)
     227
     228ERS driver:
     229   add extension metadata (github #320)
     230 
     231GeoPackage driver:
     232 * update from 'tiled gridded extension' to now OGC approved 'tiled gridded coverage data extension' (OGC 17-066r1) (#7159)
     233 * avoid corruption of gpkg_tile_matrix when building overviews, down to a level where they are smaller than the tile size (#6932)
     234 * fix opening subdatasets with absolute filenames on Windows (https://issues.qgis.org/issues/16997)
     235 * fix possible assertion / corruption when creating a raster GeoPackage (#7022)
     236 * properly handle non-0 nodata value in edge tiles, especially with TILING_SCHEME creation option
     237 * do not write empty tiles for Float32 data type
     238 * speed-up statistics retrieval on non-Byte datasets (#7096)
     239 * make DELLAYER:rastertable / DROP TABLE rastertable delete the table and all references to it (#7013)
     240 * create single tiled TIFF tiles if they are not bigger than 512x512 pixels
     241 * avoid multi-threading issues when creating TIFF tiles with GDAL_NUM_THREADS defined.
     242
     243GeoRaster driver:
     244 * handle memory allocation failures (#6884)
     245 * add support for GCP (#6973)
     246
     247GTiff driver:
     248 * add support for ZSTD compression/decompression (requires internal libtiff, or libtiff HEAD)
     249 * when IRasterIO() realizes that several blocks are going to be needed, use MultiRangeRead() interface for /vsicurl/ related file systems to get data in parallel
     250 * change default value of BIGTIFF_OVERVIEW to be IF_SAFER (github #231)
     251 * make sure that -co PHOTOMETRIC=RGB overrides the color interpretation of the first 3 bands of the source datasets (#7064)
     252 * allow modifying color interpretation on existing file opened in update mode
     253 * Internal libtiff: resync with upstream HEAD (post 4.0.9)
     254 * Internal libgeotiff: resync with upstream HEAD: use ProjScaleAtCenterGeoKey for CT_Mercator if ProjScaleAtNatOriginGeoKey is not set (github #296)
     255 * fix compilation without BIGTIFF_SUPPORT (#6890)
     256 * fix reading subsampled JPEG-in-TIFF when block height = 8 (#6988)
     257 * when reading a COMPD_CS (and GTIFF_REPORT_COMPD_CS=YES), set the name from the GTCitationGeoKey (#7011)
     258 * on reading use GeogTOWGS84GeoKey to override the defaults TOWGS84 values coming from EPSG code (#7144)
     259 * when writing SRS, do not drop EXTENSION PROJ4 node if the projection is unknown (#7104)
     260 * make it accept to write SetGeoTransform([0,1,0,0,0,1]) as a ModelTransformationTag, and remove particular cases with the [0,1,0,0,0,1] geotransform (#1683)
     261 * warn when SetNoDataValue() is called on different bands with different values (#2083)
     262 * add a GTIFF_HONOUR_NEGATIVE_SCALEY=YES config option that can be set to honour negative ScaleY value in GeoPixelScale tag according to the GeoTIFF specification (#4977)
     263 * read/write Z dimension for ModelTiepointTag and ModelPixelScaleTag and translate it into/from band scale and offset, when there's a SRS with a vertical component (#7093)
     264 * fix reading PCSCitationGeoKey (#7199)
     265 * add support for reading and writing TIFF_RSID and GEO_METADATA GeoTIFF DGIWG tags
     266 * use consistently multiplication/division by 257 when converting between GDAL [0,255] range to TIFF [0,65535] range for color map values (#2213)
     267 * don't write <GDALMetadata> colorinterp when writing a file with a color table
     268 * copy georeferencing info to PAM if the profile is not GeoTIFF
     269 
     270GRIB driver:
     271 * add GRIB2 write support
     272 * update to degrib 2.14 and g2clib 1.6.0
     273 * add support for GRIB2 template 4.32 (github #249)
     274 * add support for GRIB2 template '4.32 Simulate (synthetic) Satellite Product'
     275 * add support for GRIB2 template 4.40 (Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents)
     276 * update table 4.2-0-7 current (github #274)
     277 * add support for GRIB1 products with non-zero NV (number of vertical coordinate parameters) field in GDS (NV is just ignored) (#7104)
     278 * add support for Rotated pole LatLon projections (#7104)
     279 * adjust the longitude range to be close to [-180,180] when possible for products whose left origin is close to 180deg. Can be controlled with the GRIB_ADJUST_LONGITUDE_RANGE=YES/NO config option, that defaults to YES  (#7103)
     280 * advertize .grb2 and .grib2 extensions in metadata
     281 * expose product discipline of GRIB2 products in GRIB_DISCIPLINE (#5108)
     282 * add a GRIB_PDS_TEMPLATE_ASSEMBLED_VALUES metadata items which expose a slightly higher view of GRIB_PDS_TEMPLATE_NUMBERS
     283 * speed-up GetNoData() implementation of GRIB2 files by avoiding decompressing the data
     284 * GRIB2: add support for Transverse Mercator, Albers Equal Area, Lambert Azimuthal projections, fixes in Mercator and Polar Stereographic support, adjustment for GS80 and WGS84 datums
     285 * correctly read Mercator as Mercator_2SP when stdparallel1 != 0
     286 * GRIB2: add support for Grid point data - IEEE Floating Point Data template 5.4 encoding
     287 * GRIB2: report Section 1 / Identification section as GRIB_IDS metadata item
     288 * fix decimal_scale_factor != 0 handling with nbits = 0 for simple packing and JP2K compression/decompression, and PNG compression.
     289 * GRIB2: don't error out on a unhandled template in Section 4
     290 * remove TDLPack support
     291
     292GSAG driver:
     293 * fix reading issue that could cause a spurious 0 value to be read and shift all following values (#6992)
     294
     295GTX driver:
     296 * do not emit error when opening with GDAL_PAM_ENABLED=NO (#6996)
     297
     298GRC driver:
     299 * Fix handling of alpha values in GRC color table (#6905)
     300 * Handle case of 0-len GRC class names (#6907)
     301
     302HDF5 driver:
     303 * Added CInt16, CInt32, CFloat32, CFloat64 support (github #359)
     304 * HDF5 driver as a plugin: register the BAG driver as well (#5802)
     305
     306HF2 driver:
     307 * creation: copy source information (including nodata) into PAM if needed (#6885)
     308 *  fix reading tiles that are 1-pixel wide (2.1 regression, #6949)
     309
     310HFA driver:
     311 * add GDAL_HFA_OVR_BLOCKSIZE configuration option to control HFA overviews block size (github #292)
     312
     313HTTP driver:
     314 * do not open the underlying dataset with GDAL_OF_SHARED, to avoid later assertion
     315
     316ISIS3 driver:
     317 * make sure that -co USE_SRC_HISTORY=NO -co ADD_GDAL_HISTORY=NO results in remove of History section (#6968)
     318 * fix logic to initialize underlying GeoTIFF file in IWriteBlock(), and implement Fill() (#7040)
     319
     320JP2ECW driver:
     321 * add NBITS creation option, and automatically select codestream output for .j2k extension
     322
     323JP2KAK driver:
     324 * add support fr Kakadu 7.A (#7048)
     325 * fix lossless compression with NBITS != 8 for Byte and NBITS != 16 for UInt16
     326 * use tile dimensions as block size up to 2048x2048 (#6941)
     327 * make write side honour .j2k extension to generate only codestream
     328
     329JP2OpenJPEG driver:
     330 * add support for OpenJPEG 2.2 (#7002) and 2.3 (#7074). Drop support for openjpeg 2.0
     331 * fix performance issues with small images with very small tile size, such as some Sentinel2 quicklooks (#7012)
     332 * emit warning if GMLJP2v2 explicitly requested but georeferencing implemented
     333
     334JPEG driver:
     335 * Add compatibility with libjpeg-turbo 1.5.2 that honours max_memory_to_use
     336 * add capability to write EXIF and GPS tags in a EXIF segment
     337 * Internal libjpeg: provide implementation of tmpfile() that works better on Windows (#1795)
     338 * avoid mis-identification of some SRTMHGT files as JPEG
     339
     340JPEG2000 driver:
     341 * add NBITS creation option, and automatically select codestream output for .j2k extension
     342
     343KEA driver:
     344 * add some additional metadata items (STATISTICS_HISTOBINVALUES and STATISTICS_HISTONUMBINS) (#6892)
     345
     346L1B driver:
     347 * support reading NOAA18 datasets (#7115)
     348
     349MBTiles driver:
     350 * add read/write support for Mapbox vector tiles
     351 * support opening and creating datasets with tiles whose dimension is not 256 (#7233)
     352 * default to opening as RGBA (#6119)
     353 
     354MEM driver:
     355 * Avoid Create(foo.tif) / CreateCopy(foo.tif) on the MEM or Memory drivers to delete a 'real' foo.tif file
     356 * add RAT support
     357
     358MRF driver:
     359 * Add Zen chunk support
     360 * Open option to ignore decompression errors and missing data files
     361 * delay data file creation when NOCOPY is set
     362 * Identify MRF metadata passed as filename
     363 * Initialize PAM better on CopyCreate, enable external mask.
     364 * Fix for coordinates when opening single overview level
     365 * Use input mask if available to filter input data when creating JPEG compressed files.
     366 * Add open option to select Z-slice, also Z-slice selection in the metadata file
     367
     368MrSID driver:
     369 * add support for LTI_COLORSPACE_GRAYSCALEA and LTI_COLORSPACE_GRAYSCALEA_PM color
     370 spaces
     371
     372NetCDF driver:
     373 * avoid vector vs raster variable confusion that prevents reading Sentinel3 datasets, and avoid invalid geolocation array to be reported (#6974)
     374 * fix raster read as nodata with Byte datatype, (valid_range={0,255} or _Unsigned = True) and negative _FillValue (#7069)
     375 * be more tolerant on the formatting of standard parallel (space separated instead of {x,y,...} syntax), and accept up to 2/1000 error on spacing to consider a regular grid, to be able to read files provided by the national weather institute of Netherlands (KNMI) (#7086)
     376 * on creation, attach grid_mapping attribute to all bands
     377 * netCDF: support UTF-8 filenames on Windows (#7065)
     378 * add support for reading files in rotated pole projection (#4285)
     379 * behave correctly when an extra dimension of a variable has a corresponding 1D variable of different names (#7165)
     380 * netCDF: fix bad interaction of SetNoDataValue() and SetGeoTransform()/SetProjection() for NC4/NC4C modes (#7245)
     381
     382NITF driver:
     383 * add support for NITF CCINFA TRE (github #232)
     384 * data/nitf_spec.xml: fix location of PIAPRD TRE (github #234)
     385 * make sure that BLOCKA_ or TRE=BLOCKA= creation option override source NITF metadata; add a USE_SRC_NITF_METADATA=YES/NO creation option; make sure that gdal_translate doesn't preserve source BLOCKA when georeferencing is modified
     386 * fix swapped lines and samples in IMRFCA (github #289)
     387 * allow to read single-block JPEG2000 compressed images with one dimension > 8192 pixels (fixes #407)
     388
     389PCIDSK driver:
     390 * sort overviews (#7100)
     391
     392PCRaster driver:
     393 * fix fseek/ftell for large files on Windows (#322)
     394
     395PDF driver:
     396 * add support for Poppler 0.58 (#7033)
     397 * round to upper integer when computing a DPI such that page size remains within limits accepted by Acrobat (#7083)
     398 * do not emit 'Cannot find GPTS object' on VP.Measure objects whose Subtype != GEO
     399
     400PDS driver:
     401 * map STEREOGRAPHIC with fabs(lat)=90 to Polar_Stereographic (#6893)
     402
     403PLMosaic driver:
     404 * update to use the new Basemaps and Mosaics API
     405 * take into account BBOX for XYZ tiles
     406
     407PNM driver:
     408 * add .pgm and .ppm extensions in metadata
     409
     410RMF driver:
     411 * add RMF native overviews support (github #266)
     412 * fix raster garbage values while reading sparse RMF files (github #267)
     413 * add native overview build (github #275)
     414 * fix NoData value update (github #312)
     415 * fix elevation units write and update (github #314)
     416
     417RRASTER driver:
     418 * add support for reading creator and created metadata items, band names and color table / RAT
     419 * add update and create/createcopy support
     420
     421SAGA driver:
     422 * add support for .sg-grd-z files (github #228)
     423
     424Sentinel2 driver:
     425 * make sure that the True Color Image subdatset really uses the R,G,B bands and not the R,R,R (#7251)
     426 * add support for direct opening of .zip files of new safe_compact L1C products (#7085)
     427
     428SRTMHGT driver:
     429 * set appropriate description when opening a .hgt.zip file
     430 * recognizes the .hgt.gz extension (#7016)
     431 * add support for reading .SRTMSWBD.raw.zip files (GRASS #3246)
     432
     433USGSDEM driver:
     434 * properly handle southern hemisphere UTM projections (#344)
     435
     436VICAR driver:
     437 * optimize nodata handling, and map STEREOGRAPHIC with fabs(lat)=90 to Polar_Stereographic (#6893)
     438
     439VRT driver:
     440 * add option for separable kernel (github #216)
     441 * warn if band attribute of VRTRasterBand is not the one expected
     442 * implement FlushCache()
     443 * fix use of VRTs that point to the same source in multi-threaded scenarios (#6939)
     444 * Warped VRT: correctly take into account cutline for implicit overviews; also avoid serializing a duplicate CUTLINE warping options in warped .vrt (#6954)
     445 * Warped VRT: fix implicit overview when output geotransform is not the same as the transformer dst geotransform (#6972)
     446 * fix IGetDataCoverageStatus() in the case of non-simple sources, which unbreaks gdalenhance -equalize (#6987)
     447 * re-apply shared='0' on sources if existing in original VRT when rewriting it due to invalidation
     448 * avoid error being emitted when opening a VRTRawRasterBand in a .zip files (#7056)
     449 * implement VRTDataset::AdviseRead() (in the particular case of a single source) (#7082)
     450 * allow to incorporate a warped VRT as CDATA in the SourceFileName field of a regular VRT
     451 * VRTDerivedRasterBand: fix detection of Python runtime already loaded when more than 100 modules are linked. Fixes QGIS3 use case (#7213)
     452 * add RAT support
     453 * for consistency, make sure that VRT intermediate datatype demotion is done, e.g that a VRT band of type Byte, with a source of type Float32, requested as Float32 buffer involves Float32 -> Byte -> Float32 conversions
     454
     455WCS driver:
     456 * add support for WCS 2.0
     457 * add caching
     458 * add various open options
     459
     460WMS driver:
     461 * ArcGIS miniserver: use latestWkid and wkt metadata (#6112)
     462 * avoid AdviseRead() to download too many tiles at once (#7082)
     463 * recognize /ImageServer?f=json ESRI endpoints
     464 * Add support for maximum size and expiration time and unique per dataset name for WMS cache
     465
     466XYZ driver:
     467 * fix 2.2.0 regression where the driver hangs on some dataset with missing samples (#6934)
     468 * support non numeric characters when there is an header line (#7261)
     469
     470== OGR 2.3.0 - Overview of Changes ==
     471
     472Core:
     473 * OGRLayer::FilterGeom(): make sure a feature with a null or empty geometry never matches a spatial filter (#7123)
     474 * OGRSimpleCurve::get_LinearArea(): return 0 on a non-closed linestring (#6894)
     475 * OGRFeature::SetField: Improve the setting for OFTInteger fields from a double.
     476 * OGR_G_TransformTo(): emit error message when source geometry has no SRS
     477 * OGR API SPY: various fixes
     478 * OGRCurve::get_isClosed(): do not take into account M component (#7017)
     479 * OGRLineString::setPoint() and addPoint() with a OGRPoint* argument. properly takes into account ZM, Z and M dimensions (#7017)
     480 * OGRMultiSurface: refuse to add a triangle to it. (github #357)
     481 * OGRPolyhedralSurface: importFromWkt(): remove support for invalid constructs, that contrary to comments are not supported by PostGIS
     482 * Fix OGR[Curve]Polygon::Intersects(OGRPoint*) to return true when point is on polygon boundary (#7091)
     483 * Emit an explicit error message for OGRGeometry::IsValid(), IsSimple(), IsRing() when GEOS is not available
     484 * Make OGRGeometry::assignSpatialReference() a virtual method, and make implementation recursively assign the SR to child geometries (#7126)
     485 * Expose OGRGeometry::swapXY() as OGR_G_SwapXY() in C API (#7025)
     486 * importFromWkt(): fix import of GEOMETRYCOLLECTION ending with POINT EMPTY or LINESTRING EMPTY (#7128, 2.1 regression)
     487 * OGRSQL: avoid silent cast so that int64->int overflow is better signaled
     488 * OGRSQL: accept using the real FID column name (in addition to the special 'FID' alias) (#7050)
     489 * Add GDAL_DCAP_NONSPATIAL capability to ODS, REC, XLS and XLSX drivers
     490 * Add GDAL_DCAP_FEATURE_STYLES capability to CAD, DGN, DWG, DXF, EDIGEO, JML, KML, lIBLML, MITAB, OpenAIR and VRT drivers
     491 * Add DMD_CREATIONFIELDDATASUBTYPES metadata type (github #278)
     492 * OGRParseDate(): only accept seconds up to 60 included for leap seconds (#6525)
     493 * Fix OGRPolygon::IsPointOnSurface() broken with polygons with holes
     494 * OGRFormatDouble(): add a OGR_WKT_ROUND config option that can be set to FALSE to disable the heuristics that remove trailing 00000x / 99999x patterns (#7188)
     495 * Add C++ iterators for feature in layer and field values in features.
     496 * Add C++ iterators for "sub-parts" of geometry classes
     497 * Const-correctness fixes in signatures of methods of OGRFeatureDefn, OGRFeature, OGRFieldDefn and OGRGeomFieldDefn classes.
     498 * Fix constness of OGR_G_CreateFromWkb(), OGR_G_CreateFromFgf(), OGR_G_ImportFromWkb() and related C++ methods
     499 * Fix const correctness of OGRGeometry::importFromWkt() and OGRGeometryFactory::createFromWkt(), and add compatibility wrappers
     500
     501OGRSpatialReference:
     502 * Update to EPSG v9.2 (#7125)
     503 * Update data/esri_extra.wkt and add data/esri_epsg.wkt, taken from https://github.com/Esri/projection-engine-db-doc (Apache v2 license) (#2163)
     504 * Add support for PROJ.5 new API (requires proj 5.0.1 or later)
     505 * Add a OSRFindMatches() function to look for equivalent SRS in the EPSG database, map it to SWIG Python. Enhance gdalsrsinfo to use it
     506 * Add OGRSpatialReference::convertToOtherProjection() (bound to C as OSRConvertToOtherProjection() and to SWIG) to transform between different equivalent projections (currently Merc_1SP <--> Merc_2SP and LCC_1SP <--> LCC_2SP) (#3292)
     507 * Fix OGRSpatialReference::IsSame() to return FALSE when comparing EPSG:3857 (web_mercator) and EPSG:3395 (WGS84 Mercator) (#7029)
     508 * importFromProj4(): implement import of Hotine Oblique Mercator Two Points Natural Origin, and fix OGRSpatialReference::Validate() for that formulation (#7042)
     509 * morphFromESRI(): fix remapping from DATUM = D_S_JTSK + PRIMEM = Ferro to OGC DATUM System_Jednotne_Trigonometricke_Site_Katastralni_Ferro
     510 * Add alternate simpler signature for OGRGeometryFactory::createFromWkt()
     511 * Add importFromWkt(const char**)
     512
     513Utilities:
     514 * ogrmerge.py: fix '-single -o out.shp in.shp' case (#6888)
     515 * ogrmerge.py: allow using wildchar '*' in source names and use glob.glob to expand it
     516 * ogrmerge.py: correctly guess vrt format
     517 * ogrmerge.py: error when outputting to a existing vrt if -overwrite_ds is not specified
     518 * ogr2ogr: fix crash when using -f PDF -a_srs (#6920)
     519 * ogr2ogr: make -f GMT work again (#6993)
     520 * ogr2ogr: make it fail if GetNextFeature() returned NULL with an error
     521 * ogr2ogr: honour -select when using -addfiels
     522 * ogr2ogr: preserve source geometry field name for output drivers that support GEOMETRY_NAME layer creation option (such as GPKG)
     523 * ogr2ogr: add support for circularstring, compoundcurve, curvepolygon, multicurve and multisurface in SetZ()
     524 * GDALVectorTranslate(): fix converting from Memory to Memory datasources (#7217)
     525 * gnmmanage: fix crash on shape files with linestring and multilinestring geometries mixing
     526 * ogrtindex: fix crash when using -f SQLITE -t_srs XXXX (#7053)
     527 * ogrinfo: always open in read-only mode, unless -sql without -ro is specified
     528
     529Multi driver changes:
     530 * port/tag ILI, NAS, DGN, NTF, SDTS, OGR_GMT, Geoconcept, AVCE00, AVCBin to VirtualIO API
     531
     532Amigocloud driver:
     533 * Fixed data field types (github #246)
     534 * Output list of datasets if dataset id is not provided.
     535 * Implemented waiting for job to complete on the server. This will improve write to AmigoCloud reliability.
     536 * Add HTTP user agent (github #263)
     537 * add OVERWRITE open option (github #268)
     538
     539AVCE00 driver:
     540 * Make sure AVCE00 opens .e00 files and not AVCBIN one
     541
     542AVCBin driver:
     543 * fix 2.1 regression regarding attributes fetching (#6950)
     544
     545Carto driver:
     546 * fix append mode by retrieving the sequence name for the primary key (#7203)
     547 * fix insertion with ogr2ogr -preserve_fid (#7216)
     548 * fix missing features when iterating over a SQL result layer with pagination (#6880)
     549
     550CSV driver:
     551 * add a STRING_QUOTING=IF_NEEDED/IF_AMBIGUOUS/ALWAYS layer creation option, that defaults to IF_AMBIGUOUS (quote strings that look like numbers)
     552 * temporarily disable spatial and attribute filter when rewriting CSV file (#7123)
     553 * fix autodetection of types when a Real value is followed by a Integer64 one (#343)
     554
     555DGNv8 driver:
     556 * add support for building against static library (#7155)
     557
     558DXF driver:
     559 * Support LEADER and MULTILEADER entities (#7111, #7169)
     560 * Support HELIX and TRACE entities
     561 * Support spline hatch boundaries
     562 * Support MLINE entity
     563 * Support rows/columns within INSERT
     564 * Add support for block attributes (ATTRIB entities) (#7139)
     565 * Support text styles (#7151)
     566 * Support cylinders (CIRCLE entities with thickness)
     567 * set dx and dy to DXF LABEL style string on TEXT and MTEXT objects (github #225)
     568 * fix reading of hatches with boundaries that contain elliptical arcs (#6971)
     569 * fix reading files where INSERT is the last entity and DXF_MERGE_BLOCK_GEOMETRIES is false (#7006)
     570 * fix ordering of vertices in a SOLID entity (#7089)
     571 * only apply certain escaping rules to the text of the MTEXT object (#7047)
     572 * Handle all known MTEXT escapes; allow user to turn off text unescaping (fixes #7122)
     573 * do not apply the OCS transformation for MTEXT (#7049)
     574 * do not output dx and dy in MTEXT style strings (#7105)
     575 * apply DXF codepage encoding while decoding ExtendedEntity field (#5626)
     576 * allow user to set the tolerance used when joining parts of a hatch boundary with a DXF_HATCH_TOLERANCE config option, and default to 1e-7 of the extent of the geometry (#7005)
     577 * refactor out block insertion to its own function, and transform insertion point of an INSERT entity into OCS (#7077)
     578 * on write side, force 'defpoints' layer to be non-displayed (#7078)
     579 * entities on layer 0 within a block should inherit the style of the layer the INSERT is on. Do that for entities with a PEN style string for now. (#7099)
     580 * OCS fixes for HATCH and INSERT entities (#7098)
     581 * defer inlining of blocks until actually required (#7106)
     582 * Read DIMSTYLEs and block record handles
     583 * Handle linetype scales (#7129)
     584 * mproved support for DIMENSION entities (#7120)
     585 * handle ByBlock colors (#7130)
     586 * Fix parsing of complex linetypes (#7134)
     587 * Correct color for ByBlock text features; respect hidden objects (#5592, #7099, #7121)
     588 * Make ACAdjustText also transform text width and offset (#7151)
     589 * Honor block base points (#5592)
     590 * Use BRUSH style tool instead of PEN when reading polygonal SOLIDs and leader arrowheads; add PEN style string to 3DFACE
     591 * Specify ground units for TEXT dx and dy style values; interpret dx and dy in the writer
     592 * Fix bug in text style property retrieval; handle text color in DIMENSION fallback renderer
     593 * Write text styles and HATCH elevations; fix output of invalid extent values (#7183)
     594 * Allow access to unused entity group codes with RawCodeValues field (github #226)
     595 * Reduce the size of header.dxf and trailer.dxf (tested with AutoCAD, QCAD Teigha, QCAD dxflib, FME)
     596 * Make the writer aware of linetype scaling
     597 * Don't force elevation to zero in smooth polylines (#7200)
     598 * Always output all edges in polyface mesh, and add styling (#7219)
     599 * Remove incorrect OCS transformation from MLINE entities
     600 * Introduce 3D extensible mode to allow translation of 3D entities
     601
     602ESRIJson driver:
     603 * "New": extracted from code previously in GeoJSON driver
     604 * avoid endless looping on servers that don't support resultOffset (#6895)
     605 * use 'latestWkid' in priority over 'wkid' when reading 'spatialReference' (github #218)
     606 * recognize documents that lack geometry fields (#7071)
     607 * do not attempt paging requests on a non-HTTP resource
     608 * recognize documents starting with a very long fieldAliases list (#7107)
     609
     610FileGDB driver:
     611 * remove erroneous ODsCCreateGeomFieldAfterCreateLayer capability declaration (github #247)
     612 * add LAYER_ALIAS layer creation option (#7109)
     613 * FileGDB / OpenFileGDB: attempt to recover EPSG code using FindMatches()
     614 * FileGDB / OpenFileGDB: linearize Bezier curves with a more reasonable number of points
     615
     616GeoJSON driver:
     617 * Add support for json-c v0.13 (github #277)
     618 * support loading (true) GeoJSON files of arbitrary size (#6540)
     619 * in update mode, support appending features, in some cases, without ingesting features of existing file into memory
     620 * writer: accept writing ZM or M geometry by dropping the M component (#6935)
     621 * fix 2.2 regression regarding lack of setting the FeatureCollection CRS on feature geometries (fixes https://github.com/r-spatial/sf/issues/449#issuecomment-319369945)
     622 * make sure that -lco WRITE_NAME=NO works even if the native data has a 'name' attribute
     623 * ignore 'properties' member of features whose value is null or empty array
     624 * fix writing of id with RFC7946=YES (#7194)
     625 * add ID_FIELD and ID_TYPE layer creation options
     626
     627GeoPackage driver:
     628 * default to version 1.2 (#7244)
     629 * speed-up loading of databases with hundreds of layers
     630 * make driver robust to difference of cases between table_name in gpkg_contents/gpkg_geometry_columns and name in sqlite_master (#6916)
     631 * fix feature count after SetFeature() with sqlite < 3.7.8 (#6953)
     632 * do not error out if extent in gpkg_contents is present but invalid (#6976)
     633 * avoid GetFeature() to hold a statement, that can cause database locking issues (https://issues.qgis.org/issues/17034)
     634 * emit warning when feature geometries are not assignable to layer geometry type
     635 * remove UNIQUE keyword for PRIMARY KEY of gpkg_metadata (doesn't hurt, but just to align with the examples of DDL in the GeoPackage spec)
     636 * fix logic to detect FID on SQL result layer when several FID fields are selected (#7026)
     637 * fix handling of spatial views
     638 * do not try to update extent on gpkg_contents after GetExtent() on a empty layer of a datasource opened in read-only mode
     639 * when inserting a SRS with a non-EPSG code, then avoid using srs_id that could be later assigned to a EPSG code
     640 * when deleting a layer, delete from gpkg_metadata metadata records that are only referenced by the table we are about to drop
     641 * fix incorrect rtree_<t>_<c>_update3 trigger statement (https://github.com/opengeospatial/geopackage/issues/414)
     642 * fix definition of extensions
     643 * only create metadata table if needed, and register it as extension
     644 * declare gpkg_crs_wkt extension when using GPKG_ADD_DEFINITION_12_063=YES config option, and do not emit warning when finding it declared
     645
     646GeoRSS driver:
     647 * fix detection of field type (#7108)
     648
     649GML driver:
     650 * CreateGeometryFromGML(): accept gml:Arc with odd number of points > 3, even if they are invalid
     651 * decode gml:Solid as PolyhedralSurface (#6978)
     652 * JPGIS FGD v4: fix logic so that coordinate order reported is lon/lat (github #241)
     653 * a GML_FEATURE_COLLECTION=YES/NO dataset creation option
     654 * fix FORCE_SRS_DETECTION=YES effect on feature count and SRS reporting on gml files with .gfs (#7046)
     655 * do not try to open some kml files (#7061)
     656 * do not report gml:name / gml:description of features as layer metadata
     657
     658GMLAS driver:
     659 * get the srsName when set on the srsName of the gml:pos of a gml:Point (#6962)
     660 * CityGML related fixes: better take into account .xsd whose namespace prefix is not in the document, fix discovery of substitution elements, handle gYear data type (#6975)
     661 * properly interpret SolidPropertyType (#6978)
     662 * handle GML geometries in elements that are a substitutionGroup of an element (#6990)
     663 * make sure to try namespaces that are indirectly imported (helps in the case of parsing the result of a WFS GetFeature request)
     664 * take into account gYearMonth XML data type (https://github.com/BRGM/gml_application_schema_toolbox/issues/46)
     665 * implement resolution of internal xlink:href='#....' references (https://github.com/BRGM/gml_application_schema_toolbox/issues/31)
     666 * Recognize gml:Envelope as a Polygon geometry (https://github.com/BRGM/gml_application_schema_toolbox/issues/56#issuecomment-381967784)
     667
     668GMT:
     669 * fix creation of several layers
     670
     671IDB driver:
     672 * optimize spatial query using spatial index and st_intersects function (#6984)
     673 * close connection at dataset closing (#7024)
     674 
     675ILI driver:
     676 * declare OLCCreateField and OLCSequentialWrite capabilities
     677
     678Ingres driver:
     679
     680JML driver:
     681 * add support for reading and write SRS from gml:Box element (#7215)
     682
     683KML driver:
     684 * KML / LIBKML: read documents with an explicit kml prefix (#6981)
     685 * KML/LIBKML: make sure layer names are unique (QGIS github#5415)
     686
     687LIBKML driver:
     688 * fix reading placemarks in toplevel container, when it has subfolders (#7221)
     689 * improve open performance on huge number of layers
     690
     691MDB driver:
     692 * fix multi-thread support (https://issues.qgis.org/issues/16039)
     693
     694MITAB driver:
     695 * support for additional datums (#5676)
     696 * add support for Reseau_National_Belge_1972 / EPSG:31370 on writing (#6903)
     697 * add support for SWEREF99 datum (#7256)
     698 * fix EPSG datum code for NTF Paris
     699 * support units as code instead of string when reading a coordsys string from a .mif (#3590)
     700 * add read/write support between MapInfo text encodings and UTF-8. Add ENCODING layer/dataset creation option (github #227)
     701 * do not emit error if the .ind file is missing, just a debug message (#7094)
     702 * accept creating files with LCC_1SP SRS (#3292)
     703 * support 'CREATE INDEX ON layer_name USING field_name' (if called after field creation and before first feature insertion)
     704 * avoid reporting invalid extent on empty .mif
     705 * report aspatial .tab as wkbNone geometry type
     706
     707mongoDB driver:
     708 * compilation fix on Windows
     709
     710MSSQLSpatial driver:
     711 * Fix issues on x64 (#6930)
     712 * Implement EXTRACT_SCHEMA_FROM_LAYER_NAME layer creation option.
     713 * properly format DELETE statement with schema (#7039)
     714
     715MySQL:
     716 * fix compilation issue with MariaDB 10.1.23 (#6899) and MariaDB 10.2 (#7079)
     717 * make sure geometry column name is properly set (GDAL 2.0 regression, github #397)
     718
     719NAS driver:
     720 * [NAS/GML] try reversing non contiguous curves
     721 * Allow usage of a GFS template file for type assignment and mapping of element paths to attributes and remove arbitrary hacks that used to avoid attribute name conflicts:
     722 * New option: NAS_GFS_TEMPLATE: specify gfs template
     723 * New option: NAS_NO_RELATION_LAYER: skip unused alkis_beziehungen (also makes progress available)
     724 * Multiple geometries per layer
     725 * NAS_INDICATOR updated to "NAS-Operationen;AAA-Fachschema;aaa.xsd;aaa-suite"
     726 * use single geometry column name from input (like GMLAS)
     727 * accept unqualified attribute name in wfs:Update
     728
     729NTF driver:
     730 * fix regression introduced by fix for https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2166 causing some valid records to be skipped (#7204)
     731
     732NULL driver:
     733 * Generalize OGR NULL development driver as a GDAL raster+vector one; enable to compile it --with-null
     734
     735OCI driver:
     736 * initialize in multi-threaded compatible mode (https://issues.qgis.org/issues/17311)
     737 * support for extended max_string_size (#7168)
     738
     739ODBC driver:
     740 * deal with table names that require double quoting (#7242)
     741 
     742ODS driver:
     743 * add read/write support for Boolean sub datatype
     744
     745OSM driver:
     746 * performance improvements
     747 * increase string buffer for osm XML files (#6964)
     748 * OGR_SQL/OSM: avoid OSM driver warning about attribute filter not being taken into account when issuing a 'select * from X limit Y' request on a OSM datasource
     749
     750OpenFileGDB driver:
     751 * properly read GeneralPolygon with M component whose all values are set to NaN (#7017)
     752
     753PDF driver:
     754 * make OGR_PDF_READ_NON_STRUCTURED=YES configuration option work with documents without layers (#6359)
     755 * Improvements to text and dash pattern support in writer (#7185)
     756
     757PG driver:
     758 * do not be confused by a 'geometry' table in a non-PostGIS enabled database (#6896)
     759 * PG/PGDump: make sure serial sequence is updated at layer closing/end-of-copy if we inserted features with fixed ids (#7032)
     760
     761PLScenes driver:
     762 * remove support for V0 and V1 API. Only Data V1 is kept (#6933)
     763 * add SkySatScene
     764
     765SEGY driver:
     766 *report more attributes from Segy Standard Trace Header (github #315)
     767
     768Shapefile driver:
     769 * Fix GetFeatureCount() to properly take into account spatial filter when attribute filter also in effect (#7123)
     770 * use VSIStatL() in Create() to properly work with /vsimem/ directories (#6991)
     771 * fix regression affecting GDAL 2.1.3 or later, 2.2.0 and 2.2.1, when editing the last shape of a file and growing it, and then appending a new shape, which resulted in corruption of both shapes (#7031)
     772 * hide shapelib symbols on Unix
     773 * improvements auto-identification of EPSG codes from input SRS, using OSRFindMatches()
     774 * Improve guidance on use of SHAPE_RESTORE_SHX in SHPOpenLL() (#7246)
     775
     776SQLite/Spatialite driver:
     777 * SQLite/GPKG: report SQLITE_HAS_COLUMN_METADATA=YES as driver metadata item when it is available (#7007)
     778 * escape integer primary key column name on table creation (#7007)
     779 * don't invalidate statistics when running a PRAGMA (https://issues.qgis.org/issues/17424)
     780 * SQLite dialect: avoid erroring out if source layer has a OGR_STYLE field
     781 * SQLite dialect: support SQLite 3.21, and LIKE, <>, IS NOT, IS NOT NULL, IS NULL and IS operators (fixes #7149)
     782 * SQLite/GPKG: avoid parsing of OGR_SQLITE_JOURNAL to stop on JOURNAL_MODE keyword
     783
     784VFK driver:
     785 * fix collecting linestrings for sbp layer
     786 * collect geometries also for zvb layer
     787 * Improve VFK parser logic (github #365)
     788 * add option to suppress geometry (github #371)
     789
     790VRT driver:
     791 * increase maximum size limit to 10 MB (instead of 1MB), and add config option to be able to force loading if above that
     792 
     793XLS driver:
     794 * workaround opening filenames with incompatible character set on Windows (https://issues.qgis.org/issues/9301)
     795
     796XLSX driver:
     797 * avoid 'ogr2ogr -f XLSX out.xlsx in.shp -preserve_fid' to overwrite the first record. Note however that FID preservation itself doesn't really work with XLSX (#6994)
     798 * fix non working detection of Date/Time fields in some documents (#7073)
     799 * fix opening of documents with x: namespace in xl/workbook.xml (#7110)
     800 * fix misdetection of field type if first cell blank (github #291)
     801 * fix updating multi layer document where existing layers where dropped (#7225)
     802 * add read/write support for Boolean sub datatype
     803 * on writing, use %.16g formatting for floating point numbers (#7230)
     804
     805== SWIG Language Bindings ==
     806
     807All bindings:
     808 * Expose gdal.VSIFEofL()
     809 * Expose gdal.GRA_Max, GRA_Min, GRA_Med, GRA_Q1 and GRA_Q3 (#7153)
     810 * Expose Geometry.SwapXY()
     811 * Expose Geometry.RemoveGeometry()
     812 * Expose SpatialReference.SetMercator2SP()
     813 * Expose Band.AdviseRead() and Dataset.AdviseRead()
     814
     815CSharp bindings:
     816
     817Java bindings:
     818 * create single JNI shared library (gdalalljni.so/dll) (github #286)
     819
     820Perl bindings:
     821 * Keep parent geometry alive if an object is created from a child geometry. Experimental methods Features and Geometries. Catch an error in storing a geometry into a feature. Prefer GeometryCount over GetGeometryCount and Geometry over GetGeometryRef.
     822 * Set INSTALLSITEMAN1DIR and INSTALLSITEMAN3DIR according to what is in GDALmake.opt if INSTALL_BASE is set. (#6142)
     823 * ignore no data cells in ClassCounts and Reclassify for real valued rasters.
     824 * support for number line (or decision tree) classifiers also for integer bands.
     825 * Set error handler separately in all modules (required by Strawberry Perl build).
     826
     827Python bindings:
     828 * add scripts to python module (#342)
     829 * make sure that errors in Open() related functions, that do not prevent dataset opening in C/C++, do not either prevent it in Python (#7094)
     830 * avoid hang when calling gdal/ogr.UseExceptions()/DontUseExceptions() in wrong order (#6891)
     831 * accept callback = 0 since SWIG generates it as the default argument of BandRasterIONumPy(). (github #219)
     832 * fix 2.2.0 regression preventing use of callback function in Band.ComputeStatistics() (#6927)
     833 * fix reference count issue on gdal.VSIStatL() when it returns None, that can cause Python crashes if None refcount drops to zero
     834 * avoid potential cross-heap issue on Windows with numpy (https://trac.osgeo.org/osgeo4w/ticket/466)
     835 * fix potential alignment issues when reading double values with ReadRaster() or ReadBlock()
     836 * fix issue with PyInstaller (#7044)
     837 * add a addAlpha option to gdal.DEMProcessing()
     838 * fix for include files when building .cpp files (github #258)
     839 * make gdal.Transform() return None in case of an error (instead of an invalid Transformer object)
     840 * emit exceptions if VSI_RETVAL methods (such as gdal.Rename()) fail and gdal.UseExceptions() is enabled
     841 * add addFields and forceNullable options to gdal.VectorTranslate()
     842 * for command line utilities as functions, serialize number of floating-point arguments with higher precision
     843 * Fix python 3.x package installation in custom prefixes (#6671)
     844 * lots of PEP8-related fixes in scripts and autotest
     845 * add NULL checks after PyUnicode_AsUTF8String() in case the unicode cannot be translated to UTF-8 and workaround SWIG bug to avoid crashes with Python 3. (github #356)
     846 * make sure gdal.VectorTranslate() and gdal.Grid() open their source dataset with a vector driver (github #449)
     847 * make 'for field_val in feature' work (github #451)