GDAL/OGR 3.0.0 Release Notes

In a nutshell…

  • Implement RFC 73: Integration of PROJ6 for WKT2, late binding capabilities, time-support and unified CRS database. PROJ >= 6 is now a build requirement

  • New GDAL drivers:
  • New OGR drivers:
    • MongoDBv3: read/write driver using libmongocxx v3.4.0 client (for MongoDB >= 4.0)
  • Improved drivers:
    • FITS: read/write support for scale, offset and CRS
    • netCDF: read support for groups
    • PDF: add a COMPOSITION_FILE creation option to generate a complex document
    • PDS4: subdataset creation support, read/write table/vector support
  • Support for minimal builds on Unix (#1250)
  • Add a docker/ directory with Dockerfile for different configurations
  • Continued code linting

New installed files

  • Resource file: pdfcomposition.xsd

Removed installed files

  • Removal of resource files related to EPSG and ESRI CRS databases: compdcs.csv, coordinate_axis.csv, datum_shift.csv, ellipsoid.csv, esri_epsg.wkt, esri_extra.wkt, esri_Wisconsin_extra.wkt, gcs.csv, gcs.override.csv, gdal_datum.csv, geoccs.csv, pcs.csv, pcs.override.csv, prime_meridian.csv, projop_wparm.csv, unit_of_measure.csv, vertcs.csv, vertcs.override.csv

Backward compatibility issues


GDAL/OGR 3.0.0 - General Changes


  • Allow internal drivers to be disabled (#1250)
  • Fix build with OpenBSD which doesn't support RLIMIT_AS (#1163)
  • Fix MacOS build failures due to json-c
  • Poppler: require pkg-config
  • PostgreSQL: Switch from pg_config to pkg-config (#1418)
  • fix build --without-lerc (#1224)
  • fix netcdf_mem.h detection in netcdf 4.6.2 (#1328)
  • Fix build --with-curl --without-threads (#1386)


  • nmake.opt: remove unicode character at line starting with '# 4275' that apparently cause build issues with some MSVC versions (#1169)


  • PROJ >= 6.0 is a required external dependency
  • libgeotiff >= 1.5 should be used for builds with external libgeotiff
  • Poppler: drop support for Poppler older than 0.23.0
  • Poppler: add support for 0.72.0, 0.73.0, 0.75.0, 0.76.0

GDAL 3.0.0 - Overview of Changes


  • Add capability to define external VSI virtual file systems from C API (#1289)
  • MiniXML: Fix wrong node order when calling CPLAddXMLAttributeAndValue() after CPLCreateXMLElementAndValue()
  • /vsicurl/: ReadMultiRange(): use default implementation if there is a single range (#1206)
  • /vsicurl/: ignore proxy CONNECT response headers (#1211)
  • /vsicurl/: automatically detect signed URLs where host ends with a port number; also detect signed URLs as created with the AWS4-HMAC-SHA256 method (#1456)
  • /vsizip/: Add config option to create zip64 extra fields by default (#1267)
  • /vsis3/, /vsigs/, /vsiaz/: add HTTP retry logic in writing code paths
  • Fix data race in VSIFileManager::Get
  • cpl_zipOpenNewFileInZip3: fix memory leak in error code path. Fixes
  • VSIGZipWriteHandleMT: avoid potential deadlock in case of error
  • Fix assertion in CPLGetValueType when testing non-ASCII chars
  • /vsihdfs/: fix Read() when more than one hdfsRead call is needed (#1349)
  • Fix potential buffer overflow in CPLODBCSession::Failed (#1390)
  • /vsitar/: handle .tar file header with space padding instead of 0 for file size (#1396)


  • Support blocks larger than 2 billion pixels/bytes
  • Make CPLHaveRuntimeSSSE3() and CPLHaveRuntimeAVX() use GCC constructor functions
  • Move RawDataset base class to gcore/ (#1268)
  • RasterBand/Dataset::RasterIO(): enforce access mode on write
  • PAM: preserve existing metadata when setting new one (#1430)
  • RawDataset: use generic RasterIO() implementation when non-nearest resampling is asked (#1301)
  • DumpJPK2CodeStream(): dump PLT and POC markers


  • RPC transformer: test success code of GDALRPCTransform() in GDALCreateRPCTransformer()
  • RPC transformer: add a RPC_FOOTPRINT transformer option to provide a polygon in long/lat space where the RPC is valid, and also make gdalwarp use GDALSuggestedWarpOutput2() to restrict the bounding box of the output dataset
  • GDALFillNodata(): fix wrong comparison in QUAD_CHECK() macro: nNoDataVal is only assigned to target_y values (#1228)
  • GDALFillNodata(): reinitialize panLastY array to nNoDataVal before bottom to top pass (#1228)
  • GDALFillNodata(): do an extra iteration to reach the maximum search distance in all quadrants (#1228)
  • GDALRasterizeLayersBuf():support any GDAL data type for buffer,and pixel and line spaceing arguments
  • GDALResampleChunk32R_Mode: performance improvement
  • Rasterize with MERGE_ALG=ADD: avoid burning several times intermediate points of linestrings (#1307)
  • rasterize: fix crash when working buffer is larger than 2GB (#1338)


  • gdal_translate: add "-nogcp" option (#1469)
  • gdal_contour: remove explicit width/precision=12/3 of the elev field (#1487)
  • gdaldem hillshade: add -igor option (#1330)
  • gdalwarp -crop_to_cutline: do not round computed target extent to be aligned on the grid of the source raster if -tr is set (restore partially pre 2.4 behaviour) (#1173)
  • gdalwarp: assume -tap when using -crop_to_cutline, -tr and -wo CUTLINE_ALL_TOUCHED=TRUE, so as to avoid issues with polygons smaller than 1x1 pixels (#1360)
  • gdal2tiles: give local tile layer and basemap layers same min/max zoom levels as generated tile cache
  • gdal2tiles: fix breakage of openlayers.html getURL() javascript function, introduced in GDAL 2.3.3 / 2.4.0 (#1127)
  • gdal2tiles: prevent accidental copy of full GeoTIFF into temporary .vrt file gdal2tiles: Refactor and fix multiprocessing completion handling
  • preserve color interpretation and table
  • do not set geotransform if source doesn't have one
  • gdalsrsinfo: do not silence errors when calling SetFromUserInput()
  • gdal_retile: Use nodata value from origin dataset
  • allow setting band-specific scale and offset values (#1444)
  • check if file is only greater than 512px (#1403)
  • report headers size

Multidriver fixes:

  • GTiff, GPKG, MBTiles, PostgisRaster drivers: ensure that main dataset and overviews share the same lock, so as to avoid crashing concurrent access (#1488)

ADRG driver:

  • modified to ensure that there is no confliction between ADRG and SRP when opening a .gen file (#953)


  • fix filename case adjustment that failed on /vsi filesystems (#1385)

BAG driver:

  • fix potential nullptr deref on corrupted file

COSAR driver:

EEDA driver:

  • switch to v1alpha API (#1506)

GPKG driver:

  • allow negative srs_id values in gpkg_spatial_ref_sys
  • reduce memory requirements for cached tiles

GTiff diver:

  • supports tiles/strips larger than 2GB
  • add APPEND_SUBDATASET=YES capability to create subdataset / new TIFF page to an existing file
  • only report scale/offset deduced from ModelTiepointTag and ModelPixelScaleTag if the SRS has a vertical component (and thus currently if GTIFF_REPORT_COMPD_CS is set) (
  • TIFF Lerc: properly initialize state after Create() so that BuildOverviews() succeed (#1257)
  • emit merged consecutive multi-range reads (#1297)
  • add warnings when using unsupported combination of internal mask+external overview, and fix COPY_SRC_OVERVIEWS=YES so that it does not copy ALL_VALID masks (#1455)
  • do not generate a TIFFTAG_GDAL_METADATA with color interpretation information for JPEG YCbCr compression
  • Internal libtiff and libgeotiff: resync with upstream

FITS driver:

  • new functions for Scale Offset and FITS World Coordinate System read and write (#1298)

GeoRaster driver:

  • Fix memory leaks

HDF5 driver:

IGNFHeightAsciiGrid driver:

  • add support for RAF18.mnt

JPEG driver:

  • fix GDAL 2.3.0 performance regression when decoding JPEG (or GPKG using JPEG) images (#1324)

KEA driver:

  • add support for /vsi file systems

KMLSuperOverlay driver:

MRF driver:

MrSID driver:

  • fix potential crash when a zoom level cannot be opened

netCDF driver:

  • implement support for NetCDF-4 groups on reading (#1180)
  • support complex data types (#1218)
  • fix crash when opening a dataset with an attribute of length 0 (#1303)
  • fix IWriteBlock() to support non-scanline blocks, and use the chunk size
  • better deal with datasets indexed with unusual order for x/y dimensions
  • avoid inappropriate shift by -360 when attribute axis=X is set (#1440)

NGW driver:

NITF driver:

PCIDSK driver:

PDF driver:

  • Add a COMPOSITION_FILE creation option to generate a complex document
  • And a sample script
  • Fix selection of Poppler PDF layers with duplicate names (#1477)
  • avoid division by zero when generating from vector content whose bounding box is almost a horizontal or vertical line. Fixes


  • fix decoding of band interleaved images (such as for CRISM HSP) (#1239)
  • add support for ENCODING_TYPE=DCT_DECOMPRESSED (#1457)

PDS4 driver:

  • add subdataset creation support, and getting/setting the band unit
  • update template and code to PDS v1B00 schema versions

VRT driver:

WCS driver:

  • avoid potential out-of-bound access

WMS driver:

  • use proper JSon parsing for ESRI MapServer document (#1416)
  • Add url parameters escaping to ArcGIS Server minidriver
  • avoid warning when a wms cache doesn't exist

XPM driver:

XYZ driver:

  • add creation options DECIMAL_PRECISION and SIGNIFICANT_DIGITS like with AAIGrid
  • fix regression regarding header lines that are not X,Y,Z (#1472)

OGR 3.0.0 - Overview of Changes


  • Add OGR_G_MakeValid() (requires GEOS 3.8)
  • change prototye of OGRFeature::SetField( int iField, int nBytes, GByte *pabyData ) to ( ... , const void* pabyData), and same for OGR_F_SetFieldBinary().
  • Polyhedral surface: fix importFromWKT to properly fix Z/M flag
  • OGRBuildPolygonFromLines: avoid generating effectively duplicate points
  • OGRBuildPolygonFromEdges(): improve performance.
  • OGRGeometryFactory::transformWithOptions(): if WRAPDATELINE=YES, test that the geometry SRS is geographic
  • OGRGeometryFactory::GetCurveParmeters(): fix assertion when coordinates are very near 0
  • Expat XML parsing: add OGR_EXPAT_UNLIMITED_MEM_ALLOC=YES config option to workaround failure for very specific cases
  • OGRLineString::segmentize(): fix issues when segment length is divisible by maxlength (#1341)
  • OGR SQL: limit recursion in swq_expr_node::Check(). Fixes
  • OGRGeometry / SFCGAL: fix dead code, memory leaks and potential nullptr deref.


  • Deep rework due to RFC 73 integration
  • SRS_WKT_WGS84 macro replaced by SRS_WKT_WGS84_LAT_LONG
  • Add OSRSetPROJSearchPaths(), OSRExportToWktEx(), OSRGetName(), OSRIsSameEx(), OSRGetCRSInfoListFromDatabase(), OSRGetAreaOfUse(),OSRGetAxisMappingStrategy(), OSRSetAxisMappingStrategy(), OSRGetDataAxisToSRSAxisMapping()
  • Add OCTNewCoordinateTransformationOptions(), OCTCoordinateTransformationOptionsSetOperation(), OCTCoordinateTransformationOptionsSetAreaOfInterest(), OCTDestroyCoordinateTransformationOptions(), OCTNewCoordinateTransformationEx(), OCTTransform4D()
  • Remove OSRFixupOrdering(), OSRFixup(), OSRStripCTParms(), OCTProj4Normalize(), OCTCleanupProjMutex(), OPTGetProjectionMethods(), OPTGetParameterList(), OPTGetParameterInfo()


  • ogrinfo: report TITLE metadata in summary layer listing
  • ogr2ogr: for drivers supporting ODsCCreateGeomFieldAfterCreateLayer, do not create geometry column if -nlt none
  • add shared='1' to speed-up -single mode with many layers

CARTO driver:

  • Overwrite tables in single transactions
  • Improve documentation and warnings around CARTODBFY (#1445)

CSW driver:

  • fix crash when geometry parsing fails (#1248)

DODS driver:

  • fixes related to memory leaks and null pointer dereferences

DXF driver:

FileGDB/OpenFileGDB drivers:

  • be robust when winding order of outer ring is incorrect (#1369)

Elasticsearch driver:

  • Fixed index comparison bug when a index have at least one mapping
  • Fix _mapping url for Elasticsearch 7 compatibility

GeoJSON driver:

GeoJSONSeq driver:

GML driver:

  • write SRSName element in .gfs when parsing a GML file with srsName only on top-level boundedBy element (#1210)
  • Add "FeatureType" to list of suffixes recognized by XSD parser (#1313)
  • GML/WFS: add minimum support for 'hexBinary' type (as string) (#1375)

GMLAS driver:

  • avoid null pointer dereference on some schemas
  • do not use space as separator for schema filename in XSD open option (#1452)

GMT driver:

  • use file extension based detection to accept files without header (#1461)

MongoDB driver:

MITAB driver:

MSSQLSpatial driver:

  • Add support for curve geometries (#1299)
  • Add option to expose the FID column as a feature attribute (#1227)
  • Adding improved extent queries
  • Fix extent calculation for geography type, take care of invalid geometries

NGW driver:

  • Fix get children API. Add authorization support to create dataset options
  • Add support for feature extensions in OGRFeature native data
  • Add feature query via chunks, attribute and spatial filter support
  • Add resource type and parent identifier to metadata
  • Fix batch update features
  • Add JSON_DEPTH open option
  • Add check forbidden field names, check duplicate field names.

OCI driver:

  • Add MULTI_LOAD to open options (#1233)
  • Fix memory leaks

ODS driver:

OGDI driver:

  • switch incorrect order for east/west bounds of spatial filter

PDS4 driver:

  • add read/write support for tables (vector support)

PGDump driver:

  • in WRITE_EWKT_GEOM=YES non-default mode, export geometries to ISO WKT so as to be able to export XYZM (#1327)
  • Fix emitted SQL when UNLOGGED=ON

PLScenes driver:

  • update plscenesconf.json with SkySatCollect and add missing fields for PSOrthoTile

SDTS driver:

Selafin driver:

Shapefile driver:

SQLite driver:

  • set sqlite3_busy_timeout, handle SQLITE_BUSY during tile read (#1370)
  • close database before freeing the spatialite context. Fix crashes on dataset closing, with VirtualShape and recent spatialite versions
  • Spatialite: fix update of geometry_columns_statistics when extent goes to infinity (#1438)

S57 driver:

SXF driver:

  • Fix wrong EPSG codes range (#1278)
  • Fix memory leaks in SetVertCS()

VFK driver:

  • fix curved geometries being ignored (#1351)

WFS3 driver:

  • handle paging wth missing type for rel:next, and better deal with user:pwd in URL
  • use 'id' attribute of collection items, if 'name' not available

SWIG Language Bindings

All bindings:

Python bindings:

  • fix Dataset.ReadAsRaster() on CInt16 data type (#82)
  • adding overviewLevel option to WarpOptions
  • add noGCP options to gdal.Translate()
Last modified 4 years ago Last modified on May 5, 2019, 2:40:21 AM
Note: See TracWiki for help on using the wiki.