= GDAL/OGR 2.0 Release Notes = == In a nutshell... == * New GDAL drivers: - BPG: read-only driver for Better Portable Graphics format (experimental, no build support) - [http://gdal.org/drv_geopackage_raster.html GPKG]: read/write/update capabilities in the unified raster/vector driver - [http://gdal.org/frmt_kea.html KEA]: read/write driver for KEA format - [http://gdal.org/frmt_plmosaic.html PLMosaic]: read-only driver for Planet Labs Mosaics API - [http://www.gdal.org/frmt_various.html#ROI_PAC ROI_PAC]: read/write driver for image formats of JPL's ROI_PAC project (#5776) - [http://www-mipl.jpl.nasa.gov/external/vicar.html VICAR]: read-only driver for VICAR format * New OGR drivers: - [http://gdal.org/drv_cloudant.html Cloudant]: read/write driver for Cloudant service - [http://gdal.org/drv_csw.html CSW]: read-only driver for OGC CSW (Catalog Service for the Web) protocol - [http://gdal.org/drv_jml.html JML]: read/write driver for OpenJUMP .jml format - [http://gdal.org/drv_plscenes.html PLScenes]: read-only driver for Planet Labs Scenes API - [http://gdal.org/ogr/drv_selafin.html Selaphin]: read/write driver for the Selaphin/Seraphin format (#5442) * Significantly improved drivers: [http://gdal.org/drv_csv.html CSV], [http://gdal.org/drv_geopackage.html GPKG], [http://gdal.org/frmt_gtiff.html GTiff], [http://gdal.org/frmt_jp2openjpeg.html JP2OpenJPEG], [http://gdal.org/drv_mitab.html MapInfo file], [http://gdal.org/drv_pg.html PG], [http://gdal.org/drv_sqlite.html SQLite/Spatialite] * [https://trac.osgeo.org/gdal/wiki/rfc31_ogr_64 RFC 31]: OGR 64bit Integer Fields and FIDs In OGR core, OGR SQL, Shapefile, PG, PGDump, GeoJSON, CSV, GPKG, SQLite, MySQL, OCI, MEM, VRT, JML, GML, WFS, CartoDB, XLSX, ODS, MSSQLSpatial, OSM, LIBKML, MITAB * [https://trac.osgeo.org/gdal/wiki/rfc46_gdal_ogr_unification RFC 46]: GDAL/OGR unification - GDAL and OGR PDF drivers are unified into a single one - GDAL and OGR PCIDSK drivers are unified into a single one * [https://trac.osgeo.org/gdal/wiki/rfc49_curve_geometries RFC 49]: Add support for curve geometries In OGR core, and GML, NAS, PostgreSQL, PGDUMP, GPKG, SQLite, VFK, VRT, Interlis drivers * [https://trac.osgeo.org/gdal/wiki/rfc50_ogr_field_subtype RFC 50]: Add support for OGR field subtypes In OGR core, OGR SQL, swig bindings, CSV, FileGDB, GeoJSON, GML, GPKG, OpenFileGDB, PG, PGDump, SQLite, VRT * [https://trac.osgeo.org/gdal/wiki/rfc51_rasterio_resampling_progress RFC 51]: RasterIO() improvements : resampling and progress callback * [https://trac.osgeo.org/gdal/wiki/rfc52_strict_sql_quoting RFC 52]: Stricter SQL quoting * [https://trac.osgeo.org/gdal/wiki/rfc53_ogr_notnull_default RFC 53]: OGR not-null constraints and default values In OGR core, OGR SQL, PG, PGDump, CartoDB, GPKG, SQLite, MySQL, OCI, VRT, GML, WFS, FileGDB, OpenFileGDB and MSSQLSpatial * [https://trac.osgeo.org/gdal/wiki/rfc54_dataset_transactions RFC 54]: Dataset transactions In PG, GPKG, SQLite, FileGDB and MSSQLSpatial * [https://trac.osgeo.org/gdal/wiki/rfc55_refined_setfeature_deletefeature_semantics RFC 55]: refined SetFeature() and DeleteFeature() semantics. In GPKG, Shape, MySQL, OCI, SQLite, FileGDB, PG, CartoDB, MITAB and MSSQL * [https://trac.osgeo.org/gdal/wiki/rfc56_millisecond_precision RFC 56]: OFTTime/OFTDateTime millisecond accuracy * [https://trac.osgeo.org/gdal/wiki/rfc57_histogram_64bit_count RFC 57]: 64bit histogram bucket count * Upgrade to EPSG v8.5 database * Fix locale related issues when formatting or reading floating point numbers (#5731) == New installed files == * data/gdalvrt.xsd: XML schema of the GDAL VRT format == Backward compatibility issues == See https://svn.osgeo.org/gdal/branches/2.0/gdal/MIGRATION_GUIDE.TXT == GDAL/OGR 2.0 - General Changes == Build(Unix): * Fix for cpl_recode_iconv.cpp compilation error on freebsd 10 (#5452) * Fix pthread detection for Android * Fix in Armadillo detection test (#5455) * Fix detection of OCI by changing linking order to please modern GCC (#5550) * Fix test to accept MariaDB 10.X as valid MySQL (#5722) * Make sure $(GDAL_INCLUDE) is first to avoid being confused by GDAL headers of a previous version elsewhere in the include path (#5664) * Always use stat rather than stat64 for Mac OSX in AC_UNIX_STDIO_64. (#5780, #5414). * Add support for ECW SDK 5.1 (#5390) * Do not enable Python bindings if PYTHON env variable is set without --with-python being explicitly specified (#5956) Build(Windows): * PDF: fix compilation issue with Visual Studio 2012 (#5744) * PDF: Add support to compile the pdf driver as plugin (#5813) * Add support for MrSID 9.1 SDK (#5814) * when building netCDF, HDF4, HDF5 as plugins, call registration of 'sub-drivers' GMT, HDF4Image and HDF5Image (#5802) Build(all): * Ruby bindings: disable autoconf and makefile support (#5880) * Fix compilation errors with json-c 0.12 (#5449) * Fix compilation error in alg/gdalgrid.cpp when AVX is available, but not SSE (#5566) == GDAL 2.0 - Overview of Changes == Port: * Introduce a more generic lock API (recursive mutex, adaptive mutex, spinlock) * Add types for CPLMutex, CPLCond and CPLJoinableThread (only enforced in -DDEBUG mode) * Add CPLGetPhysicalRAM() and CPLGetUsablePhysicalRAM() * CPLSpawn() on Windows: quote arguments with spaces in them (#5469) * /vsigzip/: avoid infinite loop when reading broken .gml.gz file (#5486) * /vsizip/ : fix bug that caused premature end of file condition with some read patterns (#5530) * /vsizip/ on >4GB zips: accept .zip declare 0 disks (#5615) * /vsitar/: remove useless validation test that prevents from opening valid .tar files (#5864) * /vsistdout/: add VSIStdoutSetRedirection() for compatibility with MapServer FCGI (https://github.com/mapserver/mapserver/pull/4858) * /vsimem/: update st_mtime and return it with Stat() * /vsimem/: in update mode, when seeking after end of file, only extend it if a write is done * /vsimem/: Make Rename() on a directory also rename filenames under that directory (#5934) * /vsicurl/: avoid reading after end-of-file and fix failure when reading more than 16MB in a single time (#5786) * Allow CPL_VSIL_CURL_ALLOWED_EXTENSIONS to be set to special value {noext} * VSIWin32Handle::Flush(): no-op implementation is sufficient to offer same guarantee as POSIX fflush() (#5556) * Unix VSIL: reset eof in all cases in Seek() * Windows plugins: complementary fix to #5211 to avoid error dialog box when there are dependency problems (#5525) * Fix VSIReadDirRecursive() recursing on the parent or current directory (#5535) * cpl_error: obfuscate password * HTTP: set CURLOPT_NOSIGNAL if available (#5568) * Add COOKIE option to CPLHTTPFetch() (#5824) * CPLHTTPFetch(): add retry logic in case of 502, 503 and 504 errors with the GDAL_HTTP_MAX_RETRY (default: 0)and GDAL_HTTP_RETRY_DELAY (default: 30 s) config options (#5920) * Fix stack corruption upon thread termination with CPLSetThreadLocalConfigOption on Windows 32 bit (#5590) * cpl_csv: Stop probing for csv/horiz_cs.csv. (#5698) * vsipreload: implement clearerr() and readdir64() (#5742) * CPLsetlocale(): return a string that is thread-locale storage to avoid potential race in CPLLocaleC::CPLLocaleC() (#5747) * CPLHexToBinary(): faster implementation (#5812) * CPLAcquireMutex(): improve performance on Windows (#5986) Core: * Add imagery (satellite or aerial) metadata support (Alos, DigitalGlobe, Eros, GeoEye, OrbView, Landsat, Pleiades, Resurs-DK1, Spot/Formosat). * Reduce lock contention on the global cache mutex and make it possible to use spin lock instead with GDAL_RB_LOCK_TYPE=SPIN * Block cache: make block cache manager safe with respect to writing dirty blocks (#5983) * EXIF reader: fix memleak in error code path * EXIF reader: add missing validation for some data types (#3078) * Fix crash in GDALPamRasterBand::SerializeToXML() when saving an empty RAT (#5451) * ComputeStatistics(): use Welford algorithm to avoid numerical precision issues when computing standard deviation (#5483) * Fix crashing issue with TLS finalization on Unix (#5509) * GDALJP2Metadata::CreateGMLJP2(): use EPSGTreatsAsLatLong() and EPSGTreatsAsNorthingEasting() to determine if axis swapping is needed (#2131) * GDALJP2AbstractDataset: implement GetFileList() to report .wld/.j2w if used * GMLJP2: be robust when parsing GMLJP2 content that has nul character instead of \n (#5760) * GMLJP2: add missing rangeParameters element to validate against GMLJP2 schema (#5707) * GMLJP2: write non null bounding box at root of FeatureCollection (#5697) * GMLJP2: SRS export as GML: output XML definition of a SRS as a GML 3.1.1 compliant Dictionary (#5697) * GMLJP2: when setting GDAL_JP2K_ALT_OFFSETVECTOR_ORDER=TRUE write it as a XML comment so that we can interpret the OffsetVector elements correctly on reading * GMLJP2: when parsing a GMLJP2 box, accept srsName found on gml:RectifiedGrid if not found on origin.Point, so as to be compatible with the example of DGIWG_Profile_of_JPEG2000_for_Georeferenced_Imagery.pdf (#5697) * GMLJP2: add compatibility with GMLJP2 v2.0 where SRS is expressed as CRS URL * GMLJP2: on reading, don't do axis inversation if there's an explicit axisName requesting easting, northing order (#5960); also strip axis order in reported SRS * JP2Boxes: add null terminated byte to GDAL XML, XML or XMP boxes * Add GDALGetJPEG2000Structure() (#5697) * GDALMultiDomainMetadata::XMLInit(): when importing XML metadata, erase the existing document to replace it with the new one * Metadata: fix correct sorting of StringList / metadata (#5540, #5557) * Make GetMaskBand() work with GDT_UInt16 alpha bands (#5692) * Fix 32bit overflow in GDALRasterBand::IRasterIO() and GDALDataset::BlockBasedRasterIO() (#5713) * RasterIO: small optimization in generic RasterIO() implementation to avoid loading partial tiles at right and/or bottom edges of the raster when they are going to be completely written * Fix crash when calling GetTiledVirtualMem() on non-Linux platform (#5728) * Add GDAL_OF_INTERNAL flag to avoid dataset to be registered in the global list of open datasets * GDALDriver::CreateCopy(): accept _INTERNAL_DATASET=YES as creation option, so as to avoid the returned dataset to be registered in the global list of open datasets * Implement GDALColorTable::IsSame() * GDALPamDataset: do not serialize dataset metadata unless it has been set through GDALDataset::SetMetadata() or GDALDataset::SetMetadataItem() * GDALLoadTabFile: add TAB_APPROX_GEOTRANSFORM=YES/NO configuration option to decide if an approximate geotransform is OK (#5809) * Optimize copy efficiency from tiled JPEG2000 images * Avoid fetching remote non-existing resources for sidecar files, when using /vsicurl/ with a URL that takes arguments (#5923) Algorithms: * RPC transformer: fix near interpolation in RPC DEM (#5553) * RPC transformer: take into account nodata in RPC DEM (#5680) * RPC transformer: add RPC_DEM_MISSING_VALUE transformer option to avoid failure when there's no DEM at the transformed point (#5730) * RPC transformer: in DEM mode, implement optimization, in specific conditions (input points at same longitude, DEM in EPSG:4326) to extract several elevations at a time * TPS transformer: fix crash if the forward or backward transform cannot be computed (#5588) * OpenCL warper: remove unused variable in bilinear resampling that can cause compilation error (#5518) * OpenCL wraper: fix code compilation with NVIDIA OpenCL (#5772) * Overview: Fix and speed-up cubic resampling in overview computation to take into account scaling factor (#5685) * Overview: ignore alpha=0 values when compute an average overview of an alpha band; and also avoid memory errors when calling GetMaskBand()/GetMaskFlags() after overview computation if GetMaskXXX() has been called before (#5640) * Overview: avoid crash when computing overview with a X dimension much smaller than Y dimension (#5794) * GDALRegenerateOverviewsMultiBand(): fix stride calculation error with certain raster dimensions (#5653) * Warper: numerous speed optimizations (SSE2 specific code, more fast code paths, ...) * Warper: fix Cubic and Bilinear resampling to work correctly with downsizing (#3740) * Warper: fix and optimize CubicSpline * Warper: regardless of the warping memory limit, add heuristics to determine if we must split the target window in case the 'fill ratio' of the source dataset is too low (#3120) * Warper: accept warping options METHOD=NO_GEOTRANSFORM and DST_METHOD=NO_GEOTRANSFORM to run gdalwarp on ungeoreferenced images * Warper: fix GDALSuggestedWarpOutput() wrong extent in some circumstances (e.g. dataset of big dimension with world coordinates) (#5693) * Warper: fix integer overflow when reprojecting into an area with (part of) bounds completely outside of the source projection (#5789) * Warper: add min,max,med,q1 and q3 resampling algorithms (#5868) * Warper: add a SRC_COORD_PRECISION warping option to help getting more reproducable output when -wm parameter changes (#5925) * Warper: fix failure in GDALSuggestedWarpOut2() when top-left and bottom-right corners tranform to the same point (#5980) * GDALReprojectImage(): takes into account nodata values set on destination dataset * Median cut and dithering: optimizations and enhancements to deal with 8-bit precision (only if using internal interface for now) * rasterfill: add option to specify driver to use for temporary files * Polygonize: speed optimization: do not try to build the polygon for pixels that are masked by the mask band (i.e. alpha, nodata, etc...). Can considerably speed-up processing when the nodata outline forms a very complex polygon Utilities: * gdalinfo: display extra metadata domains attached to band, and refactor code a bit (#5542) * gdalinfo: add -oo option per RFC 46 * gdalinfo: add -json switch (partial implementation of RFC 44) * gdaladdo: add -oo option per RFC 46 * gdaladdo: add warning when subsampling factor 1 specified * gdal_translate: add -oo option per RFC 46 * gdal_translate: add -r and -tr options per RFC 51 * gdal_translate: add a -projwin_srs option to be able to express -projwin coordinates in another SRS than the one of the dataset * gdal_translate: support -'outsize avalue 0' or '-outsize 0 avalue' to preserve aspect ratio * gdal_translate: avoid preserving statistics when changing data type in situations where clamping can occur * gdal_translate: adjust RPC metadata (pixel/line offset/scale) when subsetting/rescaling, instead of just discarding it * gdal_translate: don't recopy band units if rescaling or unscaling is involved (#3085) * gdal_translate: increase GDAL_MAX_DATASET_POOL_SIZE default value to 450. (#5828) * gdal_translate: preserve NBITS image structure metadata when possible * gdalwarp: add -oo option per RFC 46 * gdalwarp: add -te_srs option to specify -te in a SRS which isn't the target SRS * gdalwarp: add a -ovr option to select which overview level to use, and default to AUTO. Also add a generic OVERVIEW_LEVEL=level open option, and make it available in standard VRT (#5688) * gdalwarp: initialize destination dataset to no_data value when automatically propagating source nodata (#5675) * gdalwarp: only apply INIT_DEST when processing the first input dataset (#5387) * gdalwarp: increase GDAL_MAX_DATASET_POOL_SIZE default value to 450. (#5828) * gdalwarp: do not preserve NODATA_VALUES metadata item in output dataset if adding an alpha channel with -dstalpha * gdalwarp: fix '-dstnodata none' to avoid read of uninitialized values (#5915) * gdalwarp: make -crop_to_cutline densify cutline in source SRS before reprojecting it to target SRS (#5951) * gdaldem: avoid too large files to be produced when using -co COMPRESS=xxxx -co TILED=YES (#5678) * gdallocationinfo: add -oo option * gdaltransform: add a -output_xy flag to restrict output coordinates to 'x y' only * gdal_grid: use nodata= parameter in the algorithm string to determine the nodata value to set on the band (#5605) * gdal_grid: fix crash in optimized mode with GCC 4.4 on 64bit (#5987) * gdalbuildvrt: add a -r option to specify the resampling algorithm * gdal_edit.py: add -unsetstats option (and fix -a_nodata to run on all bands, ant not just first one) * gdal_edit.py: add -stats and -approx_stats flags (patch by mwtoews, #5805) * gdal_edit.py: change -mo add metdata to existing one; add new option -unsetmd to clean existing metadata * gdal_edit.py: add -oo to specify open options * gdal_retile.py: fix to make it work with input images of different resolutions (#5749) * gdal_retile.py: implement progress bar (#5750) * gdal_merge.py: add timing information in verbose output * gdal_merge.py: take into account alpha band to avoid writing zones of source images that are fully transparent (#3669) * gdal2tiles.py: fix inverted long/lat in BoundingBox and Origin elements of tilemapresource.xml (#5336) * pct2rgb.py: make it work with color tables with less than 256 entries (#5555) * gdal_fillnodata.py: FillNodata: copy no data value to destination band when creating a dataset (if available) (#4625) * gdal_proximity.py: add a -use_input_nodata flag * gdalcompare.py: add options to suppress selected comparisons * gdalcompare.py: takes into account differences in overview bands * gdalcompare.py: compute difference on float to avoid integer underflow * epsg_tr.py: change to make it possible to export GEOCCS and COMPD_CS to proj.4 epsg and PostGIS spatial_ref_sys.sql files Python samples: * Added swig/python/samples/jpeg_in_tiff_extract.py * Added dump_jp2.py * Added validate_jp2.py * Added build_jp2.py * Added gcps2ogr.py * tolatlong.py: report error when operating on a non-georeferenced dataset AAIGRID: * Fix formatting string (#5731) BAG driver: * change nodata value for uncertainty band to 1e6 (#5482) BMP driver: * backout r17065 change that infered georeferencing based on the resolution information in the BMP header (#3578) DIMAP driver: * DIMAP 2: handle the case where the Raster_Data element is in main file (#5018, #4826) * DIMAP 2: fix to extract geodetic SRS (#5018, #4826) * DIMAP 2: fix to extract geotransform from JPEG2000 file if not available in XML (#5018, #4826) DDS driver: * Add ETC1 compression format support * Header correction for worldwind client ECW driver: * correctly assign color interpretation to bands if order is unusual ENVI driver: * avoid generating potentially corrupted .hdr files when opening in update mode; Write 'Arbitrary' instead of 'Unknown' as the projection name for an undefined SRS (#5467) * when writing, consider that LOCAL_CS SRS is like ungeoreferenced (#5467) ERS driver: * reset RasterInfo.RegistrationCellX/Y if setting a new geotransform on an updated .ers file (#5493) * fix SetProjection() (#5840) GeoRaster driver: * fix Oracle SRID authority (#5607) * fix user-defined SRID issue (#5881) * new SRID search (#5911) GIF driver: * add compatibility with giflib 5.1 (#5519) * fix crash on images without color table (#5792) * fix reading of interlaced images with giflib >= 5.0 * validate the size of the graphic control extension block (#5793) * implement GetFileList() to report worldfile GRASS driver: * GRASS 7.0.0 support (#5852) GRIB driver: * avoid divide by zero while setting geotransform on 1xn or nx1 grib file (#5532à * allow writing PDS template numbers to all bands (#5144) GTiff driver: New capabilities: * for JPEG-in-TIFF, use JPEG capabilities to decompress fast overview levels 2,4 and 8, to generate 'hidden' overviews used by RasterIO() * add DISCARD_LSB creation option (lossy compression) to be best used with PREDICTOR=2 and LZW/DEFLATE compression * when GTIFF_DIRECT_IO=YES is enabled, performance improvements in GTiffRasterBand::DirectIO() with Byte dataset and Byte buffer * implement dataset DirectIO() * add GTIFF_VIRTUAL_MEM_IO=YES/NO/IF_ENOUGH_RAM configuration option so that RasterIO() can rely on memory-mapped file I/O (when possible and supported by the OS) * support reading and created streamable files * for JPEG-compressed TIFF, avoid quantization tables to be emitted in each strip/tile and use optimized Huffman coding by default * avoid SetNoDataValue() to immediately 'cryztalize' the IFD * allow unsetting TIFFTAG_SOFTWARE, TIFFTAG_DOCUMENTNAME, etc... by removing them from metadata list or passing None as a value of SetMetadataItem() (#5619) * allow lossless copying of CMYK JPEG into JPEG-in-TIFF * set alpha on target by default when translating from Grey+Alpha * Internal overviews: for near, average, gauss and cubic, and pixel interleaving, make sure to use the same code path for compressed vs uncompressed overviews (#5701) * add RPCTXT=YES creation option to write sidecar _RPC.TXT file * internal libtiff updated to upstream libtiff 4.0.4beta * internal libgeotiff updated to upstream libgeotiff SVN head * speed optimization on write (at least in Vagrant) (#5914) * use importFromEPSG() when ProjectedCSTypeGeoKey is available (#5926) * on reading better deal with a few ESRI formulations of WebMercator (#5924) Fixes: * when overriding metadata in update mode, make sure to clear it from PAM file (#5807) * fix handling of Mercator_2SP (#5791) * avoid TIFF directory to be written (at end of file) when creating a JPEG-in-TIFF file * for a paletted TIFF with nodata, set the alpha component of the color entry that matches the nodata value to 0, so as gdal_translate -expand rgba works properly * fix to make band SetMetadata(NULL) clear band metadata (#5628) * fix error message when requesting a non existing directory * check data type with PHOTOMETRIC=PALETTE * be robust to out-of-memory conditions with SplitBand and SplitBitmapBand * avoid using optimized JPEG --> JPEG-in-TIFF path if INTERLEAVE=BAND is specified with a 3-band JPEG * to make Python bindings happy, avoid emitting CE_Failure errors due to libtiff errors when we still manage to open the file (#5616) * avoid crash when reading GeoTIFF keys if the stored key type isn't the one expected * make sure to call libgeotiff gtSetCSVFilenameHook() method when linking against external libgeotiff * avoid/limit DoS with huge number of directories * clean spurious spaces when reading values from _RPC.TXT * serialize RPC in PAM .aux.xml file if using PROFILE != GDALGeoTIFF and RPB = NO * fix clearing of GCPs (#5945) * avoid generated corrupted right-most and bottom-most tiles for 12-bit JPEG-compressed (#5971) * make sure to use scanline write API when writing single-band single-strip 1-bit datasets GRASS driver: * fix compilation issues against GRASS 7 HDF4 driver: * Add configuration support to be able to open more files simultaneously * Add class suffix to the parameter name when parsing HDF-EOS objects. * Fix AnyTypeToDouble() to use proper type (int instead of long) to work with DFNT_INT32/DFNT_UINT32 on 64-bit Linux (#5965) * MODIS: Set more correct values for PIXEL_/LINE_ OFFSET/STEP by comparing longitude and latitude subdatasets dimensions with main subdataset dimensions HDF5 driver: * avoid opening BAG files in the case HDF5 and BAG are plugins, and HDF5 is registered before BAG HFA driver: * fix recognition of Hotine Mercator Azimuth Center in Imagine format (and Swisstopo GeoTIFF) (#5551) * fix various hangs on invalid files * read projection even when it does not contain datum information (#4659) HTTP driver/wrapper: * make it work with vector files too * fix handling of non VSI*L file on Windows IRIS driver: * add support for the SHEAR data type (#5549) JPEG2000 driver: * do expansion of 1-bit alpha channel to 8-bit by default. Can be controlled with the 1BIT_ALPHA_PROMOTION open option (default to YES) * add GMLJP2 creation option * add GMLJP2V2_DEF creation option to create a GMLJP2 v2 box * Add capability of reading GMLJP2 v2 embedded feature collections and annotations * Add read/write support for RPC in GeoJP2 box (#5948) JP2ECW driver: * add metadata about JPEG2000 codestream and boxes (#5408) * Add 1BIT_ALPHA_PROMOTION open option (default to YES) to control expansion of 1-bit alpha channel to 8-bit * correctly assign color interpretation to bands if order is unusual * add WRITE_METADATA and MAIN_MD_DOMAIN_ONLY creation options to write GDAL metadata, JP2 XML boxes or XMP box * add GMLJP2V2_DEF creation option to create a GMLJP2 v2 box * Add capability of reading GMLJP2 v2 embedded feature collections and annotations * Add read/write support for RPC in GeoJP2 box (#5948) JP2KAK driver: * Compatibility with Kakadu v7.5 (#4575, #5344) * Handle Kakadu version 7 allocator.finalize (#4575) * fix bug in vsil_target::end_rewrite() that prevented TLM index to be generated (#5585) * Add FLUSH in creation option XML (#5646) * Do expansion of 1-bit alpha channel to 8-bit by default. Can be controlled with the 1BIT_ALPHA_PROMOTION open option (default to YES) * add GMLJP2V2_DEF creation option to create a GMLJP2 v2 box * Add capability of reading GMLJP2 v2 embedded feature collections and annotations * Add read/write support for RPC in GeoJP2 box (#5948) JP2OpenJPEG driver: * Support writing arbitrary number of bands. (#5697) * Generate cdef box when transparency is needed. Add NBITS, 1BIT_ALPHA and ALPHA creation options (#5697) * add INSPIRE_TG (for conformance with Inspire Technical Guidelines on Orthoimagery), PROFILE, JPX and GEOBOXES_AFTER_JP2C creation option (#5697) * add GMLJP2V2_DEF creation option to create a GMLJP2 v2 box * Add capability of reading GMLJP2 v2 embedded feature collections and annotations * add PRECINCTS creation option (#5697) * allow several quality values to be specified with QUALITY creation option. Add TILEPARTS, CODEBLOCK_WIDTH and CODEBLOCK_HEIGHT options (#5697) * support reading&writing datasets with unusual order of band color interpretation (#5697) * add WRITE_METADATA and MAIN_MD_DOMAIN_ONLY creation options to write GDAL metadata, JP2 XML boxes or XMP box (#5697) * add support for reading/writing/updating IPR box (from/into xml:IPR metadata domain) (#5697) * add YCC creation option to do RGB->YCC MCT, and turn it ON by default (#5634) * add USE_SRC_CODESTREAM=YES experimental creation option, to reuse the codestream of the source dataset unmodified * support reading & writing images with a color table (#5697) * support update mode for editing metadata and georeferencing (#5697) * add compatibility with OpenJPEG 2.1 (#5579) * fix warning when reading a single tile image whose dimensions are not a multiple of 1024 (#5480) * Add 1BIT_ALPHA_PROMOTION open option (default to YES) to control expansion of 1-bit alpha channel to 8-bit * Add read/write support for RPC in GeoJP2 box (#5948) * limit number of file descriptors opened JPEG driver: * use EXIF overviews if available * add EXIF_THUMBNAIL creation option to generate an EXIF thumbnail * use optimized Huffman coding to reduce file size * add support for reading and writing COMMENT * optimize whole image reading with dataset IRasterIO() * report non-fatal libjpeg errors as CE_Warning (or CE_Failure if GDAL_ERROR_ON_LIBJPEG_WARNING = TRUE) (#5667) * in compressor, increase default val of max_memory_to_use to 500MB JPIPKAK driver: * avoid symbol collision with kdu_cpl_error_message from JP2KAK driver * reset the bNeedReinitialize flag after a timeout (#3626) KMLSuperOverlay driver: * fix truncated raster on 32 bit builds (#5683) * make Identify() more restrictive to avoid false positives L1B driver: * add support for little-endian LRPT datasets (#5645) * expose band mask when there are missing scanlines (#5645) * expose WGS-84 or GRS-80 datum if read from header record (#5645) MAP driver: * retrieve the image filename in a case insensitive way (#5593) MBTiles driver: * better detection of 4 bands dataset and take into account alpha component of color table in RasterIO() (#5439) * avoid wrong detection of 3 bands when finding paletted PNG in /vsicurl mode (#5439) * fix dimension computation when opening a single tile dataset * better computation of extent from min/max of tile coordinates, for a single zoom level * use standard EPSG:3857 origin to fix a ~8m shift (#5785) MEM driver: * implement optimized versions of raster band and dataset IRasterIO() MSG driver: * fix compilation problem (#5479) * fix memory leaks (#5541) NetCDF driver: * Force block size to 1 scanline for bottom-up datasets if nBlockYSize != 1 (#5291) * Fix computation of inverse flattening (#5858) * In case the netCDF driver is registered before the GMT driver, avoid opening GMT files * Fix crash on opening a NOAA dataset (#5962) NGSGEOID driver: * make Identify() more restrictive NITF driver: * deal correctly with JPEG2000 NITF datasets that have a color table inboth Image Subheader and JP2 boxes, and for drivers that don't do color table expension * HISTOA TRE: put definition of TRE in conformance with STDI-0002 (App L page 14) and STDI-0006 (Page 57) (#5572) OGDI driver: * Remove OGDIDataset::GetInternalHandle (#5779). OZI driver: * remove .map header detection from Identify() since this is actually handled by the MAP driver PCIDSK driver: * close dataset in case of exception in PCIDSK2Dataset::LLOpen() (#5729) PCRaster driver: * Allign libcsf code with PCRaster raster format code (#5843) * Implement Create() (#5844) * Improve handling of no-data value (#5953) PDF driver: * add compatibility with Poppler 0.31.0 * in the OGC Best practice case, switch rotational terms of the geotransform matrix (gt[2] and gt[4]) * in the OGC Best practice case, handle rotations of 90 and 270 degrees. * advertize LAYERS metadata domain * deal with OHA- datum (Old Hawaiian) * fix compilation problem with Podofo on Windows (patch by keosak, #5469) * add sanity check on page count PDS driver: * Added support for SPECTRAL_QUBE objects used e.g. by THEMIS instrument of Mars Odyssey spacecraft. PNG driver: * add creation options to write metadata in TEXT/iTXt chunks * optimize whole image reading with dataset IRasterIO() * Internal libpng: update to 1.2.52 PostgisRaster driver: * Fix read of metadata for tables with multiple raster cols (#5529) Rasterlite driver: * accept space in filename RPFTOC driver: * add tweak for weird relative directory names in the A.TOC file (#5979) VRT driver: * add handling of a shared='0' attribute on to open sources in non-shared mode, and VRT_SHARED_SOURCE config option that can be set to 0 in case the shared attribute isn't there (#5992) * VRT warp: make selection of source overview work (#5688) * VRT warp: expose as many overviews in warped dataset as there are in source dataset, and make warped VRT honour -ovr parameter of gdalwarp (#5688) * make sure nodata value set on VRT raster band is taken into account in statistics computation (#5463) * fix ComputeStatistics() on VRT that are a sub-window of source dataset (#5468) * VRT raw: fix corrupted serialization on Windows (#5531) * implement heuristics to determine if GetMinimum()/GetMaximum() should use the implementation of their sources of not. Can be overriden by setting VRT_MIN_MAX_FROM_SOURCES = YES/NO (#5444) * VRT warp: avoid to warp truncated blocks at right/bottom edges, so that scale computation is correct * fix RasterIO() to be able to fill buffers larger than 2GB (#5700) * fix performance problem when serializing into XML a big number of sources * do not output empty node on VRTDataset and VRTRasterBand elements * fix rounding of output window size on VRTSimpleSource (#5874) * add trick to make relativeToVRT works for a VRT-in-VRT * add more checks to CheckCompatibleForDatasetIO() to avoid issues with overview bands (#5954) * preserves relative links on reserialization of existing VRT (#5985) USGSDEM driver: * take into account horizontal unit = ft in the UTM case (#5819) TIL driver: * fix half pixel shift in geo registration (#5961) WEBP driver: * Lazy uncompressed buffer allocation and optimize band-interleaved IRasterIO() for whole image reading WMS driver: * Add support for ArcGIS server REST API * fix to make GDAL_DEFAULT_WMS_CACHE_PATH configuration option work as expected (#4540) * move the WMS layer name encoding to be done before the sub datasets URLs are created. XYZ driver: * fix back line seeking with datasets that have not the same number of values per lines (#5488) * deal with lines that have missing values (but still regularly spaced) == OGR 2.0 - Overview of Changes == Core: * OGRPolygon::importFromWkt(): fix memleak when importing broken 2.5D polygon * Fix OGRFeature::SetGeometryDirectly() and SetGeomFieldDirectly() to free the passed geometry even if the method fails (#5623) * OGR SQL: Add hstore_get_value(hstore, key) function * OGR SQL: sanitize how we deal with field names expressed as table_name.field_name and "fieldname.with_point_inside". By default, use standard quoting rules, and be tolerant when there's no ambiguity * OGR SQL: support arbitrary boolean expression on ON clause of a JOIN * OGR SQL: accept AS keyword in 'FROM table_name AS alias' clause * OGR SQL: don't consider backslash-doublequote as an escape sequence when inside a single-quoted string literal * Add OGR_API_SPY mechanism (http://www.gdal.org/ograpispy_8h.html) * Make OGRParseDate() recognize ISO 8601 format * ogr_core.h: only ignore -Wfloat-equal for IsInit() and not for the rest of the file and files that include it (#5299) * OGR layer algebra: properly initialize field maps to avoid Valgrind warnings in OGRLayer::Update() (#5778) * Make OGR_F_SetFieldBinary() set OFTString fields, mostly for testing purposes * OGR_G_CreateGeometryFromJson(): attach a WGS84 SRS to the returned geometry if the json object has no 'crs' member (#5922) OGRSpatialReference: * Upgrade to EPSG v8.5 database * Proj.4 import: for HOM, make sure +no_off/no_uoff is preserved, and change default value of gamma parameter to be the same as alpha (#5511) * Proj.4 export: export Aitoff, Winkel I, Winkel II, Winkel-Tripel, Craster, Loximuthal, Quartic Authalic * Adding support for Mercator_Auxiliary_Sphere without AUTHORITY SECTIONS (#3962) * Add QSC (Quadrilateralized_Spherical_Cube) projection, compatible with PROJ 4.9 * Various fixes to put EXTENSION node before AUTHORITY and make it pass Validate() (#5724) * importFromEPSG()/exportToProj4(): avoid precision loss in TOWGS84 parameters, e.g. on Amersfoort / RD EPSG:4289 (https://trac.osgeo.org/proj/ticket/260) * Add OSRCalcInvFlattening() and OSRCalcSemiMinorFromInvFlattening(), and use them in various places (#5858) * Remove deprecated variant of OGRSpatialReference::importFromOzi() (#5932) Utilities: * ogrinfo: add -oo option per RFC 46 * ogrinfo: display dataset and layer metadata. Add -nomdd, -listmdd, -mdd all|domain options, like in gdalinfo. OGR VRT: add dataset and layer metadata support * ogrinfo: add -nocount and -noextent options * ogr2ogr: add -oo and -doo options per RFC 46 * ogr2ogr: add -spat_srs option * ogr2ogr: turn string value to one element list if destination field is stringlist * ogr2ogr: fix problem with SRS when copying layers with multiple geometry columns with different SRS (#5546) * ogr2ogr: add special case for -update and GPKG and input=output * ogr2ogr: when copying a layer that has a source integer/integer64 field with same name as target FID column, avoid creating it into target layer and use its content as the FID value (#5845) * ogr2ogr: in non-append mode, if target layer has a FID creation option, reuse source FID name and source FIDs, unless -unsetFid is specified (#5845) * ogr2ogr: copy source dataset and layer metadata, unless disabled by -nomd. Additionnal dataset metadata can be set with -mo KEY=VALUE * ogr2ogr: add -ds_transaction to force dataset transactions, mainly for FileGDB driver * ogr2ogr: fix crash with -clipdst when a reprojection fails before (#5973) * ogrlineref: fix project if reper lies on first point or last point of line * ogr_layer_algebra.py: for Update, Clip and Erase, only creates attribute of input layer by default (#5976) Other: * OGR WCTS removed from tree Cross driver changes: * MSSQLSpatial and GPKG: use standardized 'GEOMETRY_NAME' option name. Add GEOMETRY_NAME to SQLite (#5816) * FileGDB and MySQL: use standardized 'FID' option name. SQLite: add a FID layer creation option (#5816) * SQLite, GPKG, PG, PGDump: in a newly created table, allow to create a integer field with same name of FID column (#5845) BNA driver: * fix segfault when calling GetNextFeature() on a write-only layer CartoDB: * add CARTODBFY layer creation option * launder layer and column names by default (#5904) * enable by default batch insertion of features in update mode * on a newly created layer, send new features created by CreateFeature() by chunks of a maximum size of 15 MB (configurable through CARTODB_MAX_CHUNK_SIZE). * implement deferred field creation * support boolean type * register tables with cdb_cartodbfytable() * fix creation of features with Date/DateTime/Time values * fix for multi-user account, and optimization for SQL layers * implement TestCapability() and CreateDataSource() similarly to PostgreSQL, i.e. redirect to Open() in update mode * accept a user column to have the same name of the FID (cartodb_id) * do automatic polygon->multipolygon promotion at creation time * in authenticated mode, retrieve all column information, including spatial info, default value and primary key in one single statement * use integer primary key of tables, when available, to scroll faster among features instead of using OFFSET/LIMIT (#5906) CSV driver: * add optional field type detection with AUTODETECT_TYPE=YES open option * add QUOTED_FIELDS_AS_STRING open option that default to NO. So by default, if AUTODETECT_TYPE=YES, the content of quoted fields will be tested for real, integer,... data types * fix to avoid truncation of WKT geometries to 8000 characters (#5508) * fix segfault when reading allCountries.txt of geonames.org (#5668) * accept space as separator as input/output, and add MERGE_SEPARATOR=YES/NO open option DXF driver: * improve TestCapability(ODsCCreateLayer) FileGDB driver: * add layer creation option to set CONFIGURATION_KEYWORD * avoid error message when failing to import SRS from WKID code (might be an ESRI code for example) * do not reject features with null geometry * use LatestWKID when available (#5638) * avoid emitting error when opening a FileGDB v9, so that OpenFileGDB can be tried to open it, in the case FileGDB is a plugin (#5674) * fix CreateFeature() to work when a esriFieldTypeGlobalID field is not set * report width of string fields (#5806) * add compatibility with FileGDB SDK v1.4 * enable bulk load on newly created layers GeoJSON driver: * implement Date/Time/DateTime field type detection * expose a 'id' object, of type string, directly on Feature object (not in its properties) as a field * add FLATTEN_NESTED_ATTRIBUTES and NESTED_ATTRIBUTE_SEPARATOR open options * TopoJSON: establish layer schema from objects properties (#5870) * implement automatic scrolling through result sets of ArcGIS GeoServices Feature Service (#5943) * accept and skip UTF-8 BOM (#5630) * ESRIJson: parse correctly rings of esriGeometryPolygon objects to build correct Polygon or MultiPolygon (#5538) * avoid truncation of real numbers on reading (#5882) * internal libjson-c: Fix to read floating point numbers in non C locale (#5461) * improve TestCapability(ODsCCreateLayer) * make string comparison for authority name case insensitive so as to recognize lowercase 'epsg' (#4995) * support reading Feature without geometry field GeoRSS driver: * fix to parse ATOM feed documents with atom: namespace (#5871) GME driver: * Added fixes discovered while using v.in.ogr and v.out.ogr in GRASS GML driver: * add XSD=filename open option * add FORCE_SRS_DETECTION, INVERT_AXIS_ORDER_IF_LAT_LONG, CONSIDER_EPSG_AS_URN, READ_MODE, EXPOSE_GML_ID, EXPOSE_FID, DOWNLOAD_SCHEMA and REGISTRY open options * fix bug that prevented multiple instanciation of the reader with Xerces backend (#5571) * parse correctly GML geometries whose srsDimension attribue is on top-level geometry element and not on posList (#5606) * add datasource option SRSDIMENSION_LOC=GEOMETRY to be able to write srsDimension attribute on top level geometry element, default on posList unchanged (#5066) * add support for reading layers resulting from a WFS 2.0 join query * read/write top and as DESCRIPTION and NAME metadata items. Also add GML_ID, DESCRIPTION and NAME creation options * support to reader response to CSW GetRecords queries * Fix incorrect geometry cast when reading GML topogeometries (#5715) * VFR: fix ST_Z type (changes) -- list all layers * VFR: include also non-spatial (removed) features (ZaniklePrvky) in type ST_Z (changes) * VFR: use String when 32-bit integer wasn't wide enough * VFR: add support for UVOH file type * VFR: add missing support for OriginalniHraniceOmpv geometry * VFR: update GFS files to RFC31 (OGR 64bit Integer Fields and FIDs) * update RUIAN GFS files: add missing GMLFeatureClasses to OB type (SpravniObvody, Mop, Momc) * add support for parsing .xsd with a of polygonProperty and multiPolygonProperty * remove wrong case insensitive comparison related to gml_registry.xml use * various fixes to better deal with ArcByCenterPoint() as found in FAA AIXML files * make Expat parser accept trailing nul characters * correctly record path to attribute in case of attribute located on a nested element when .gfs is created with GML_ATTRIBUTES_TO_OGR_FIELDS=YES * fix GML_ATTRIBUTES_TO_OGR_FIELDS=YES to work correctly with xlink:href too (#5970 * make GML_EXPOSE_GML_ID to be honoured on WFS documents GPKG driver: * add support for non-spatial layers via the gdal_aspatial extension (#5521) * add support for creating spatial index * add layer metadata read/write support * implement ST_GeometryType(), GPKG_IsAsisgnable() and ST_SRID() to be compatible with Geometry Type Triggers and SRS ID Triggers Extensions * on creation, use GEOMCOLLECTION (instead of GEOMETRYCOLLECTION) (#5937) * make SELECT expressions passed to ExecuteSQL() be evaluated by SQLite * make it possible to use spatialite 4.2.0 SQL functions * add a 'INDIRECT_SQLITE' dialect that goes through the VirtualOGR mechanism (e.g. for compat with older Spatialite) * allow table names with dash character (#5472) * emit warning when required extensions are not implemented * disable PRAGRAM integrity_check by default, since it can be expensive on big files * read-only support for tables without integer primary key * fix Date and DateTime support * implement TEXT(maxwidth) type in read and creation * implement deferred table creation * fix reporting of geometry type for 2.5D (previous behaviour had the effect to turn to wkbUnknown) * put correct value (1) in gpkg_geometry_columns for 2.5D tables (#5481) * fix component geometry type of 3D MultiGeometries (#5629) * fix GetExtent() crash on layers without extent set in gpkg_contents (#5471) * avoid leak when a table has more than one FID column * accept spatial tables whose geometry field is declared as BLOB * recognize both GeomCollection and GeometryCollection as possible values, until GeoPackage SWG clears what is the official value * escape all column names in SQL (#5520) * accept geometries with Spatialite format, that can be returned with issuing a SQL request using spatialite functions * enable Spatialite 4.3 'amphibious' mode to avoid explicit cast to Spatialite geometries GPSBabel driver: * automatically open .igc files, implement Identify() and add open options * advertize creation option GTM driver: * declare OLCCreateField and OLCSequentialWrite capabilities IDRISI driver: * fix support for multi-ring polygons (#5544) ILI driver: * Use Ili1TransferElement written by ili2c 4.5.5 and newer * Fix crash in polygon geometry reading * Fix reading SURFACE polygons with multiple rings * Fix reading tables with polygon type * Support curve geometries for ILI1 and ILI2. * Add a MODEL open option ISIS3 driver: * fix to recognize IsisCube.Mapping.LatitudeType = Planetocentric (#5717) KML driver: * fix segfault when calling GetNextFeature() on a write-only layer LIBKML driver: * add support for reading gx:MultiTrack * rework libkml singleton factory management (#5775) MITAB driver: * add support for append/update/delete operations on .tab files (#5652) * add support for CreateField() on non empty file, AlterFieldDefn() and DeleteField() for .TAB (#5652) * implement SyncToDisk() for TAB layers (#5652) * convert to use of VSI*L FILE API (#5558) * don't write field width for integer fields in .mif, which is incompatible with MapInfo (#3853) * report OLCCreateField for .mif files (#5477) * fix opening .mif file without .mid file (#5570) * swap StdParallel1 and stdParallel2 if necessary on LCC projections (https://github.com/mapgears/mitab/issues/1) * take into account scale/bounds to properly round coordinates (https://github.com/mapgears/mitab/issues/2) * add MITAB_BOUNDS_FILE configuration option to specify a file with projection bounds (https://github.com/mapgears/mitab/issues/3) * add BOUNDS layer creation option (#5642) * refactor import/export of MIF coordsys to use the TAB code; take into account MITAB_BOUNDS_FILE to add Bounds to the CoordSys string * close polygon rings when reading Region from MIF file (#5614) * fix segfault in CreateFeature() if passing an invalid OGR feature style string (#1209) MSSQLSpatial driver: * Implement SPATIAL_INDEX layer creation option for MSSQL (#5563) * Implement support for WKB geometry upload (#5682) * Fix schema handling in MSSQL driver (#5401) * Fix spatial geometry field handling (#5474) * Bind string fields to unicode string columns in the database (#5239) * Fix recognizing image columns as geometry columns for the select layers. (#5498) * Fix issue when creating non-spatial table (#5696) * Fix to read metadata if the tables are specified in the connection string (#5796) * Fix crash if the tablename is specified in the connection string (#5826) * Include geometry column name in Update statement (#5930) * Implement FID layer creation option (#5816) * Fix issue when removing an MSSQL spatial layer MySQL: * thread-safe initialization of mysql client library (#5528) NAS driver: * implement wfs:update (adds new context 'update' and fields "endet" and "anlass" to "delete" layer). * also assign xlink:href attributes as layer attribute (not only in "alkis_beziehungen" layer; #5372) * fix filtering on OGR_GEOMETRY special field * make chevrons configurable by NAS_INDICATOR OCI driver: * add a ADD_LAYER_GTYPE=YES/NO layer creation option that defaults to YES to enforce a layer geometry type and is used to retrieve the layer geometry type when listing layers (#3754) * Fix FID (multi_load=off, OGRNullFID) - start with 1 (not -1) (#5454) * use VARCHAR2 instead of VARCHAR for unsupported types * Fix "ORA-00972: identifier is too long" error (#5466) * Fix memory leaks (#5599) * Fix creation of date and datetime fields (#5600) * initialize member variable to avoid UpdateLayerExtents() to be called randomly on non spatial tables (#5376) * avoid spatial index to be created each time SyncToDisk() is called * fix memory leak in DeleteLayer(const char*) * fix reading of 2D geometries that were always turned as 3D * in layers returned by ExecuteSQL(), only expose geometry column if there's one * force NLS_NUMERIC_CHARACTERS to ". " (#5709) ODBC driver: * try alternate DSN template for 64bit ODBC * make ODBC driver honour PGEO_DRIVER_TEMPLATE config. option (and also MDB_DRIVER_TEMPLATE in case PGEO_DRIVER_TEMPLATE isn't defined) (#5594) ODS driver: * fix export of OFTDate fields that were exported as string OpenAir driver: * tweak detection logic to read beyond first 10KB bytes when needed (#5975) OpenFileGDB driver: * add compatibility with .gdbtable files bigger than 4 GB (#5615) * support opening files with ConfigurationKeyword=MAX_FILE_SIZE_4GB or MAX_FILE_SIZE_256TB (#5615) * fix occasionnal write-after-end-of-buffer (#5464) * avoid error message when failing to import SRS from WKID code (might be an ESRI code for example) * fix spatial filter with GeneralPolygon shapes (#5591) * fix for reading GDB with string fields with a default value length > 127 (#5636) * better handling of certain definitions of raster columns * use LatestWKID when available (#5638) * increase accepted size for field description zone up to 10 MB (#5660) * fix ResetReading() on SQL layer with ORDER BY on indexed column (#5669) * add support for non spatial GDB v9 tables (#5673) * improve error reporting when file exists but cannot be opened due to permission problem (#5838) * report width of string fields (#5806) * try to deal more gracefully with inconsistent nValidRecordCount vs nTotalRecordCount values (#5842) * report 25D layer geometry type on FileGDB v9 tables when relevant * optimize sequential reading of sparse layers * avoid warning when opening a00000004.gdbtable * disable feature count optimization with IS NOT NULL on an index column OSM driver: * add mechanism to compute fields from other fields/tags with SQL expressions. Apply it for z_order on lines layer * fix random crash, particularly on MacOSX (#5465) * add CONFIG_FILE, USE_CUSTOM_INDEXING, COMPRESS_NODES, MAX_TMPFILE_SIZE and INTERLEAVED_READING open options PG driver: * use COPY mode by default (unless PG_USE_COPY is set to NO) when inserting features in a newly create table (#5460) * add UNLOGGED=YES/NO layer creation option to create unlogged tables (improved version of patch by Javier Santana, #4708) * implement deferred loading of table list, to optimize ExecuteSQL() (#5450) * implement optimization for spatial table listing for PostGIS 2.x * implement deferred creation of tables to capture all attribute and geometry column creations into a single CREATE TABLE statement (#5547) * change "No field definitions found" from fatal error to debug * when creating a table and filling it, avoid re-reading the table definition from PG system tables (#5495) * better handling of SRS authority name different than EPSG (authority code must still be integral) * fix crash when writing a StringList with 0 element (#5655) * emit errors instead of debug messages when postgres issues an error (#5679) * fix to make ExecuteSQL('CREATE DATABASE foo') work * fix regression that prevented to retrieve more than 500 features from a connection with tables= parameter and on a SQL result layer (#5837) * PG/PGDump: fix truncation of fields to work with multi-byte UTF-8 characters (#5854) PGDump driver: * switch to DROP_TABLE=IF_EXISTS by default (#5627) * fix crash when writing a StringList with 0 element (#5655) PGeo driver: * try alternate DSN template for 64bit ODBC REC driver: Shapefile driver: * add SPATIAL_INDEX layer creation option (#5562) * support .prj files with UTF-8 BOM * fill 'date of last update' header with current time instead of dummy date, and add a DBF_DATE_LAST_UPDATE layer creation option to override this with a fixed date (#3919) * fix reading of shapefiles whose .shx is non conformant (#5608) * fix writing values up to 2^53 in OFTReal fields with 0 decimal places (#5625) * delete implicit FID field as soon as we CreateField a real one * GetExtent(): don't trust extent in header if it contains Not-A-Number values (#5702) * make REPACK compact .shp if SetFeature() is called and changes one geometry size (#5706) * add check not to cut unicode character while cut the string lengnt for field max length during SetFeature * avoid reading whole .shx at open time for /vsicurl/ * add SHAPE_REWIND_ON_WRITE configuration option that can be set to NO to disable correction of ring winding order on write. Useful when dealing with MultiPolygon that are MultiPatch objects in fact (#5888) * Make ENCODING layer creation option prioritary over SHAPE_ENCODING config. option SOSI driver: * remove error noise (#5710) S57 driver: * various compliance fixes in ISO8211 and S57 writer (#5798) * make it possible to set LNAM_REFS=OFF as advertized in the doc SQLite/Spatialite driver: * SQLite/Spatialte: add support for multiple geometry colunn tables, accordingly with RFC 41 (#5494) * SQLite SQL dialect: Add hstore_get_value(hstore, key) function * remove 'T' suffix when formatting the content of a Date field (#5672) * optimize CreateFeature() when fields can be null or not null from one feature to another one * Spatialite: improve insertion performance by disabling triggers and doing the job ourselves * Fix segmentation fault when executing OGR2SQLITE_Register() when compiling against sqlite 3.8.7 (#5725) * make GetFIDColumn() work when run as first method call (#5781) * emit warning when reading text values in a integer/real field (possible since SQLite has no strong typing) * support reading date/datetime from Julian day floating point representation SUA driver: * tweak detection logic to read beyond first 10KB bytes when needed (#5975) SXF driver: * Fix SXF file version check (#5456) * Fix wrong Miller Cylindrical projection string * Fix encoding issues (#5647) * Fix extract z value to OGRGeometry * Fix case sensitivity of RSC file VFK driver: * recode also header values * process DKATUZE from header properly * handle also duplicated records * check attribute 'parametry_spojeni' * speed-up GetFeatureCount() * fix reading properties. Escape characters for SQL * change SRS from EPSG 2065 to 5514 * fix reading SBP datablock (fix mismatch when reading from file and db) VRT driver: * do not propagate ignoring of x and y cols of a PointFromColumns to the source layer (#5777) * add an optional 'name' attribute on FID element, so as to be able to force the report of a FID column name even if it is not exposed as a regular field (related to #5845) * handle optional value to specify open options Tiger driver: * Fix potential buffer underflow when providing /vsistdin/ to Tiger driver (#5567) WAsP driver: * added options and changed output precision to match WAsP Map Editor * improve TestCapability(ODsCCreateLayer) WFS driver: * automatically enable paging if WFS 2.0 capabilities report paging support * evaluate SELECT with JOIN on server-side for a Join-capable WFS 2.0 server * add a TRUST_CAPABILITIES_BOUNDS open option, that can be set to YES to trust layer bounds declared in GetCapabilities response, for faster GetExtent() runtime (#4041) * add INVERT_AXIS_ORDER_IF_LAT_LONG, CONSIDER_EPSG_AS_URN and EXPOSE_GML_ID open options * add capability to use spatial functions ST_xxxxx() as server-side filters * add dataset and layer metadata * allow SELECT with several ORDER BY columns * report name of geometry column * Add COOKIE option (#5824) * when parsing a layer schema without geometry from the GML .xsd, do not expose a geometry field at the WFS layer level (#5834) XLSX driver: * fix column numbering when there are more than 26 columns (#5774) XPlane driver: * add support for Taxi Location 1300 record found in V1000 == SWIG Language Bindings == All bindings: * bind GDALGetBandDataset() as Band.GetDataset() * add Feature.GetFieldAsBinary() Java bindings: * Pass eRWFlag to allow both reading or writing. Write was broken in DatasetRasterIO(). * updates to generate maven artifacts Perl bindings: * The breaking changes are described in more detail in swig/perl/Changes-in-the-API-in-2.0. * More comprehensive use of strings as constants (such as capabilities); they are also taken from bindings, which added new ones, and not hard-coded. * New classes (e.g., VSIF, GeoTransform, GeomFieldDefn) and new methods (e.g., constant lists, Dataset::SpatialReference). * Much improved documentation and switch to Doxygen::Filter::Perl. * New test codes. * Errors are confessed with stack trace and often caught earlier with better messages. * Use of attributes is deprecated and methods have been added to replace them. * Multiple geometry fields have necessitated some changes in schema and field related methods. * More support for named parameters (i.e., hashes as arguments). * NoDataValue: set max float if undef is given. * Unit: set '' if undef is given. * Also other changes that will also remove some "use of uninitialized value in subroutine entry" warnings. * Automatic handling of SQL result layers. * Fix issue with index attribute for field meta data (schema) (#5662) * Warn if attempt to create non-integer column for colors. * Remove prefix GCP from GCP swig made attributes. Python bindings: * add optional buf_xsize, buf_ysize and buf_type parameters to Dataset.ReadAsArray() and Dataset.LoadFile(), and use dataset RasterIO for better efficiency * avoid generating Python exception when PyString_FromStringAndSize() fails and GDAL errors as Python exceptions are disabled * Band.ReadRaster() and Dataset.ReadRaster(): clear the buffer in case there are holes in it due to odd spacings specified by the user * Fix hang of Python in case of repeated call to gdal/ogr.UseExceptions() and CE_Warning emitted (#5704) * for Python 2, accept unicode string as argument of Feature.SetField(idx_or_name, value) (#4608) * for Python 2, accept Unicode strings to be passed as key and/or value of the dictionary passed to SetMetadata() (#5833) * fix processing error of ogr_python.i with SWIG 3 (#5795) * NUMPY driver: avoid returning CE_None in GetGeoTransform() when there's no geotransform set (#5801) * Make GetFieldAsBinary() work with OFTString fields * For Python3 compat, make Feature.GetField() use GetFieldAsBinary() if GetFieldAsString() fails (#5811)