Gdal

Latest version: v3.10.2

Safety actively analyzes 706259 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 6 of 7

3.6.0

Not secure
Port

New features:
* Add CPLIsASCII()
* /vsis3/: Provide credentials mechanism for web identity token on AWS EKS (4058)
* /vsis3/: support source_profile in .aws/config pointing to a profile with a web_identity_token_file (6320)
* /vsistdin/: make size of buffered area configurable (751)
* add VSIIsLocal(), VSISupportsSequentialWrite() and VSISupportsRandomWrite()
* Configuration file: add a ignore-env-vars=yes setting (6326) in a \[general\] leading section
* Add a cpl::ThreadSafeQueue<> class

Enhancements:
* VSIFileFromMemBuffer(): allow anonymous files
* CPLCheckForFile(): do not request file size
* /vsicurl/: when CPL_CURL_VERBOSE is enabled, log as CPLDebug() message the error message from the server
* /vsicurl / CPLHTTPFetch(): add GDAL_HTTP_HEADERS configuration option (6230)
* VSIVirtualHandle: add a PRead() method for thread-safe parallel read and implement it in /vsimem/ and Unix virtual file system
* /vsis3/: make CPL_VSIS3_USE_BASE_RMDIR_RECURSIVE a path-specific configuration option
* Make GDAL_DISABLE_READDIR_ON_OPEN a path-specific configuration option
* Add VSISetPathSpecificOption() / VSIGetPathSpecificOption() / VSIClearPathSpecificOptions().
Deprecate VSISetCredential() / VSIGetCredential() / VSIClearCredentials()
* /vsicurl/ and other network file systems: add a DISABLE_READDIR_ON_OPEN=YES/NO VSIFOpenEx2L() option
* Add a VSIFilesystemHandler::SupportsRead() method
* Add GDAL_HTTP_TCP_KEEPALIVE/GDAL_HTTP_TCP_KEEPIDLE/GDAL_HTTP_TCP_KEEPINTVL configuration options to control TCP keep-alive functionality
* Make CPLODBCSession and CPLODBCStatement member variables 'protected' (6314)

Bugfixes:
* cpl_config.h: Don't use __stdcall on MinGW
* CPL recode: fix issues with iconv library integrated in musl C library
* CPLWorkerThreadPool::SubmitJob(): avoid potential deadlock when called from worker thread
* /vsicurl/: fix caching of first bytes of the files

Core

New features:
* Add a GDALRasterBand::GetSuggestedBlockAccessPattern() method, implement it in GTiff, JPEG, PNG, PDF drivers and use it in GDALCopyWholeRasterGetSwathSize().
* GDALJP2Box/GDALJP2Metadata: add support for reading/writing JUMBF box
* Add a GDALDeinterleave() function, to copy values from a pixel-interleave buffer to multiple per-component,
and add SSE2/SSSE3 optimizations for a few common scenarios like Byte/UInt16 3/4 components.
Use it in GTiff and MEM drivers.
* C API change: make GDALComputeRasterMinMax() return CPLErr instead of void (6300)
* Add a GDAL_DMD_MULTIDIM_ARRAY_OPENOPTIONLIST constant

Enhancements:
* GDALRasterBand::ComputeRasterMinMax(): add optimized implementation for Byte and UInt16 data types (~10 times faster)
* Multidim API: significantly enhance performance of reading transposed arrays for netCDF/HDF5
* GDALVersionInfo(): report if it is a debug build in --version output, and report compiler version in BUILD_INFO output
* /vsicurl/: cache the result of several collections/URL signing requests to Planetary Computer
* GDALCopyWholeRasterGetSwathSize(): aim for a chunk that is at least tall as the maximum of the source and target block heights
* GDALGetJPEG2000Structure(): add JP2_BOXES, CODESTREAM_MARKERS, STOP_AT_SOD, ALLOW_GET_FILE_SIZE options
* GDALDataset::BuildOverviews/IBuildOverviews(): add a CSLConstList papszOptions parameter
* GDALDataset::CreateLayer(): honor GDAL_VALIDATE_CREATION_OPTIONS (6487)

Breaking changes:
* Remove use of compatibility wrappers _GetProjectionRef / _GetGCPProjection / _SetProjection / _SetGCPs (6186)

Bugfixes:
* EXIFCreate(): fix writing of EXIF_UserComment
* GDALPamDataset::TrySaveXML(): do not set error if a subdataset name is set but the .aux.xml doesn't exist (5790)
* GDALOpen(): make recursive opening of dataset more reliable when papszAllowedDrivers is passed
* GetHistogram(): Support 64 bit images (6059)
* GetHistogram(): deal with undefined behavior when raster values are at infinity, or with pathological min/max bounds
* GDALPamRasterBand::SetOffset()/SetScale(): set the bOffsetSet/bScaleSet even if the value provided is the default offset/scale
* GDALDataset/GDALRasterBand::BuildOverviews/IBuildOverviews(): fix const correctness of panOverviewList and panBandList arguments
* Overview: tighten GAUSS and MODE to be exactly those names, and not starting with them
* Overview building: fix MODE resampling on large datasets (6587)

Algorithms

Enhancements:
* Transformer: add SRC_GEOLOC_ARRAY and DST_GEOLOC_ARRAY transformer options
* GDALChecksumImage(): make it return -1 in case of error

Utilities

New features:
* gdalinfo: add a STAC section to `gdalinfo -json` output (6265)
* gdal_translate: add a -ovr <level|AUTO|AUTO-n|NONE> flag (1923)
* gdal2tiles.py: add WEBP support with --tiledriver option
* gdalmdiminfo & gdalmdimtranslate: add -if (input format) flag (6295)
* gdal_grid: add 'radius' parameter to invdist, nearest, averge and metrics algorithm, to set radius1 and radius2 at the same time
* gdal_grid: add per-quadrant search capabilities for invdistnn, average, and metrics algorithms
* ogr_layer_algebra.py: promoted to official script (1581)

Enhancements:
* gdal2tiles.py: short circuit overview tile creation for --resume ahead of processing base tiles
* gdal2tiles.py: refactor transparent file check in overview creation
* gdalsrsinfo: use wkt2_2019 name instead of wkt2_2018
* gdal_viewshed: use -cc 1.0 as default for non-Earth CRS (6278)
* nearblack: skip erosion when pixel at edge is valid
* gdal_grid: produce north-up images
* gdal_grid: add validation of algorithm parameters and warn when a unknown parameter is specified
* gdal_grid: add a nSizeOfStructure leading structure member in GDALGridXXXXOptions structure, as a way to detect ABI issues when adding new parameters

Bugfixes:
* gdalwarp: modify 'sum' resampling to preserve total sum
* gdalwarp: fix issue with wrong resolution when reprojecting between geographic CRS with source extent slightly off [-180,180]
* gdalwarp: fix artifacts around antimeridian for average/mode/min/max/med/q1/q3/sum/rms resampling (6478)
* gdal2tiles.py: remove PIL deprecation warning by replacing ANTIALIAS with LANCZOS
* gdal2tiles: allow oversampling in -p raster mode (fixes 6207)
* gdal2xyz.py: fix parsing of -b option (5984)
* gdal_rasterize: fix ALL_TOUCHED on polygons whose boundaries coordinates are aligned on pixels (6414)

gdal_utils package

* standardized return codes (5561). Return 2 when utilities called without argumen

Raster drivers

ADRG driver:
* add SRP pixel spacing value (SRP_PSP) to the dataset metadata

COG driver:
* add a OVERVIEW_COUNT creation option to control the number of overview levels (6566)
* add DMD_EXTENSIONS metadata item (6073)
* properly set lossy WEBP compression when QUALITY_OVERVIEW < 100 but QUALITY = 100 (6550)

COSAR driver:
* handle version 2 files that contain half-foat samples (6289)

ECRGTOC driver:
* fix error on RasterIO() when GDAL_FORCE_CACHING=YES is set

ECW driver:
* strip off boring Kakadu and OpenJPEG COM marker comments

ENVI driver:
* implement 'default bands' to read/write R,G,B and gray color interpretation (6339)
* implement Get/Set Scale/Offset from ENVI 'data gain values'/'data offset values' (6444)
* use OGRSpatialReference::FindBestMatch() on reading to find a matching known CRS (6453)

GPKG driver:
* in CreateCopy() mode for Byte data, save the band count in a IMAGE_STRUCTURE metadata domain to be able to re-open the file with the appropriate number of bands
* default to PNG storage for single band dataset (qgis/QGIS40425)
* writer: write fully set tiles as soon as possible to decrease pressure on block cache

GTiff driver:
* add multi-threaded read capabilities (reqiures NUM_THREADS open option or GDAL_NUM_THREADS configuration option to be set)
* JXL codec: support more than 4 bands in INTERLEAVE=PIXEL mode (5704)
* JXL codec: preserve Alpha color interpretation when the Alpha band does not immediately follow color bands (e.g. R,G,B,undefined,Alpha), and fix decoding of such files
* add a WEBP_LOSSLESS_OVERVIEW=YES/NO configuration option (6439)
* report a COMPRESSION_REVERSIBILITY=LOSSLESS (possibly)/LOSSY metadata item in IMAGE_STRUCTURE for WEBP and JXL compression
* read/write JPEGXL and WEBP compression parameters (for main dataset only) in IMAGE_STRUCTURE metadata domain of GDAL_METADATA tag
* avoid potential crash on creation in a disk full situation
* fix reading a CompoundCRS of a LocalCS/EngineeringCS, and avoid warnings on writing (5890)
* report codec name (or code) when opening a file with a unhandled code
* WEBP: avoid unnecessary temporary buffer creation and copy (most of changes are in libtiff itself)
* force INTERLEAVE=PIXEL for internal overviews when using WEBP compression
* avoid SetMetadata() to cancel effect of SetGeoTransform() (6015)
* refuse to open files with SampleFormat=IEEEFP and BitsPerSample != 16, 24, 32 or 64
* SRS import: better deal when angular unit of the GEOGCS[] of the PROJCS[] doesn't match the one from the database
* SRS export: avoid error when exporting a Projected 3D CRS (6362)
* honour COMPRESS_OVERVIEW and INTERLEAVE_OVERVIEW for internal overviews (6344)
* CreateCopy(): fix marking alpha channels that are not the last one (6395)

HDF5 driver:
* multidim: fix crash on 'gdalmdiminfo HDF5:autotest/gdrivers/data/netcdf/alldatatypes.nc'

JP2KAK driver:
* use kdu_multi_analysis class for tile encoding, instead of very low level kdu_analysis
* use kdu_stripe_compressor whenever the required buffer size is < CACHE_MAX / 4, otherwise fallback to kdu_multi_analysis
* add (at least build) support for versions down to 7.3

All JPEG2000 drivers:
* report a COMPRESSION_REVERSIBILITY=LOSSLESS/LOSSLESS (possibly)/LOSSY metadata item in IMAGE_STRUCTURE domain

JP2OpenJPEG driver:
* for reversible compression, write a hint in the COM marker if the compression is lossy or not, and use it on reading

JPEG-XL driver:
* NEW!
* The JPEG-XL format is supported for reading, and batch writing (CreateCopy()), but not update in place.
The driver supports reading and writing:
- georeferencing: encoded as a GeoJP2 UUID box within a JUMBF box.
- XMP in the xml:XMP metadata domain
- EXIF in the EXIF metadata domain
- color profile in the COLOR_PROFILE metadata domain.

KEA driver:
* add support for 64 bit nodata functions

MRF driver:
* Add QB3 compression (5824)

netCDF driver:
* handle variables of type NC_SHORT with _Unsigned=true as GDT_UInt16 (6352)
* do not report metadata of indexing variables of dimensions not used by the variable of interest (6367)
* fix 2 issues with netCDF 4.9.0 of msys2-mingw64 (5970)
* multidim: workaround crash with using same file in 2 different threads (each thread with its own dataset object) (6253)
* ignore 'missing_value' when it is a non-numeric string
* multidim: use 'fill_value' attribute as an alternative for nodata, and add a USE_DEFAULT_FILL_AS_NODATA=YES array open option
* allow NETCDF:"/vsicurl_streaming/http[s]://example.com/foo.nc":variable_name (6610)

NITF driver:
* do not put PAM metadata in a Subdataset node of .aux.xml file if there's a single dataset (3.4.0 regression) (5790)
* avoid excessive memory allocation on broken files (ossfuzz52642)
ù fix crash when reading all metadata from a file without image segment, and allow creating such file
* add support for writing a TRE_OVERFLOW DES
* nitf_spec.xml: lower minlength for CSEPHA

PDF driver:
* avoid PROJ error when reading a CRS with a EPSG code that is actually a ESRI one (6522)

PNG driver:
* report cause when unable to create file

RMF driver:
* backup error state before min-max computation at FlushCache
* Ext header size checks improved

VRT driver:
* optimize speed of statistics and minmax computation when the VRT is a mosaics of non-overlapping simple sources
* ComputeStatistics(): for mosaicing case, enable it to be multi-threaded if GDAL_NUM_THREADS is set
* take into account open options when sharing sources (5989)

WEBP driver:
* report a COMPRESSION_REVERSIBILITY=LOSSLESS/LOSSY metadata item in IMAGE_STRUCTURE

OGR 3.6.0 - Overview of Changes

Core

New features:
* OGRLayer: add Arrow C stream based batch retrieval (RFC 86)
* Add OGRLayer::Upsert() operation support (6199). Implement it in MongoDBv3, ElasticSearch MEM, GPKG drivers
* Add OGR_G_ConcaveHull(), using GEOS >= 3.11 GEOSConcaveHull_r(), and map it to SWIG
* Add a OGRLayer::AlterGeomFieldDefn() / OGR_L_AlterGeomFieldDefn() to change geometry field definitions. Implement in MEM, Shapefile, GPKG, PG, OpenFileGDB drivers
* Add GDALRelationship class for describing a relationship between two tables,
and related API for retrieving the relationship
names and relationships in a dataset.
Implement discovery in FileGDB, OpenFileGDB, PGeo and GPKG drivers, SQLite
* Add API for relationship creation/deletion/update.
Implement in OpenFileGDB driver
* Add OGRLayer::GetGeometryTypes(). This method iterates over features to retrieve their geometry types.
This is mostly useful for layers that report a wkbUnknown geometry type.
Specialized implementation in GPKG and PG drivers.
* Add a GDAL_DMD_ALTER_GEOM_FIELD_DEFN_FLAGS driver metadata item
* Add DCAP_CREATE_LAYER for drivers which have support for layer creation
* Add DCAP_DELETE_LAYER for drivers which have support for layer deletion
* Add DCAP_DELETE_FIELD for drivers which have support for field deletion
* Add DCAP_REORDER_FIELDS for drivers which have support for field reordering
* Add GDAL_DMD_ALTER_FIELD_DEFN_FLAGS for drivers which describe the flags supported for a driver by the AlterFieldDefn API
* Add DCAP_CURVE_GEOMETRIES for drivers which support curved geometries
* Add DCAP_MEASURED_GEOMETRIES for drivers which support measured geometries
* Add driver capability for DCAP_Z_GEOMETRIES
* Add OLCZGeometries (equivalent to OLCMeasuredGeometries for Z support)
* Add ODsCZGeometries datasource capability flag
* Add driver metadata for DMD_GEOMETRY_FLAGS. Contains a list of (space separated) flags which reflect the geometry handling behavior of a driver.
Supported values are currently "EquatesMultiAndSingleLineStringDuringWrite", "EquatesMultiAndSinglePolygonDuringWrite".
* Add OGRParseDateTimeYYYYMMDDTHHMMSSZ() and OGRParseDateTimeYYYYMMDDTHHMMSSsssZ()
* Add GDAL_DMD_SUPPORTED_SQL_DIALECTS driver metadata.

Enhancements:
* Make isClockwise() available at the OGRCurve level
* Export OSRStripVertical() function in C API
* OGRSimpleCurve point iterator: make its modification instant on the parent curve (6215)

Bugfixes:
* OGRFeature::FillUnsetWithDefault(): do not set driver-specific default values on unset numeric fields
* OGR_SM_InitStyleString(): make it work with a style_name argument (5555)
* Fix loss of split/merge policy when cloning field domains
* OGRSQL: fix GetFeature() to return a feature such that GetFeature(fid).GetFID() == fid (5967)
* OGRGeometry::UnionCascaded(): avoid crash with GEOS < 3.11 on empty multipolygon input

OGRSpatialReference

New features:
* Add a OGRSpatialReference::FindBestMatch() method

Enhancements:
* Warping/coordinate transformation performance improvements
* OSRGetProjTLSContext(): make it faster on Linux by saving getpid() system call
* OGRSpatialReference::SetFromUserInput(): allow using strings like EPSG:3157+4617 where the 'vertical CRS' is actually the geographic CRS, to mean ellipsoidal height, which is supported in recent PROJ versions
* Improve OGRCoordinateTransformation::TransformBounds error handling (6081)
* OGRSpatialReference: evaluate OSR_DEFAULT_AXIS_MAPPING_STRATEGY config option at each object construction (6084)

Bugfixes:
* Avoid issues with PROJJSON with id in members of datum ensemble
* OGRSpatialReference::GetTargetLinearUnits(): fix getting linear units from a CompoundCRS of a LocalCS/EngineeringCS (5890)

Utilities

New features:
* ogr2ogr: add -upsert option

Bugfixes:
* ogr2ogr: make sure geometry column name is going through laundering when outputting to PG/PGDump (6261)
* ogr2ogr: take into account -limit when -progress is used

Vector drivers

All drivers:
* Add some missing DCAP_VECTOR capabilities to drivers

Arrow/Parquet drivers:
* implement faster SetAttributeFilter() for simpler filters.
Things like "col =/!=/>/>=/</<= constant", "col IS NULL", "col IS NOT NULL", possibly combined with AND.

CSV driver:
* make AUTODETECT_SIZE_LIMIT=0 open option to scan the whole file, including beyond 2 GB (for non-streaming input) (5885)
* fix width autodetection

DXF driver:
* Support files between 2 GB and 4 GB in size
* Prevent buffer from sometimes splitting CRLF newlines in MLEADER entities

FlatGeoBuf driver:
* make CreateLayer() to fail if output file cannot be
created

FileGDB driver:
* handle Shape_Area/Shape_Length fields on reading/writing
* avoid crash when reading layer with AliasName with XML special characters (issue with embedded libxml2 in SDK), and fallback to OpenFileGDB driver to reliably retrieve it (5841)
* Report relationships

GeoJSONSeq driver:
* add support for appending features to an existing file (2080)

GML driver:
* make FORCE_SRS_DETECTION=YES open option work with multiple geometry columns (6392)
* read <gml:description>, <gml:identifier>, <gml:name> fields in a feature (qgis/QGIS42660)
* OGRMergeGeometryTypesEx(): do not consider different type of MultiGeometries (ie MultiPoint, MultiLineString, MultiPolygon) as being mergeable as GeometryCollections (6616)

GMLAS driver:
* be robust to GML schemas being pointed to a location different from http://schemas.ogc.net/

GPKG driver:
* Do not list layers referenced in gpkg_contents but that have no corresponding table (qgis/qgis30670)
* Performance improvement in reading features
* Performance improvement in reading DateTime fields
* Performance improvement: do not request ignored fields
* Micro optimizations to improve CreateFeature() speed
* Performance improvement: implement background RTree creation in bulk insertion into a new table
* Implement a fast ST_Area() method
* optimization to remove bbox filtering when the spatial filter is larger than the layer extent
* remove code path specific to SQLite < 3.7.8 (PROJ requires SQLite >= 3.11)
* avoid integer overflow when trying to insert strings larger > 2 GB
* preliminary non-user-visible support for Related Tables Extension
* fix issue with ST_MakeValid() when the SQLite driver runs before GPKG on Alpine Linux
* Report relationships, through FOREIGN KEY constraints, and Related Tables extension.
* properly update gpkg_ogr_contents on INSERT OR REPLACE statements
* do not warn about http://ngageoint.github.io/GeoPackage/docs/extensions extensions in read-only mode
* Rename layer: take into account QGIS layer_styles extension
* add compatibility with GPKG 1.0 gpkg_data_column_constraints table

GRIB driver:
* fix crash and invalid metadata when processing index .idx file with sub-messages (6613)

HANA driver:
* pending batches are not flushed when layer is destroyed
* reset prepared statements when creating new field
* fix transaction support
* execute pending batches from other operations
* properly handle special characters in connection string

LIBKML driver:
* writer: add automatic reprojection to EPSG:4326 (6495)

MITAB driver:
* implements writing Text objects for Point geometries with LABEL style string (6149)

ODS driver:
* make it possible to open file without .ods extension if prefixed with ODS: (6375)

OpenFileGDB driver:
* Add write support
* handle Shape_Area/Shape_Length fields on reading
* fix use of indexes on strings when the searched value is longer than the max indexed string, or ending with space
* Report relationships

Parquet driver:
* add basic support for reading partitionned datasets
* add CREATOR option
* do not write statistics for WKB geometry columns
* make sure 'geo' metadata is embedded in ARROW:schema so that partitioned reading works fine
* implement SetNextByIndex()
* make it honour GDAL_NUM_THREADS, and assume min(4, ALL_CPUS) as default value

PG driver:
* make GEOM_TYPE layer creation option be taken into account by CreateGeomField() (instead of always assuming geometry)

PGDump driver:
* avoid extraneous harmless spaces in CREATE TABLE statements

S57 driver:
* resource files: fix missing punctuation (6000)

Selafin driver:
* remove likely broken logic in handing /vsigzip/foo.gz filenames

SQLite driver:
* Report relationships, through FOREIGN KEY constraints
* SQLiteVFS: fix semantics of xOpen(SQLITE_OPEN_CREATE) that could cause to wrongly truncate an attached database

VFK driver:
* add support for UTF-8 (VFK 6.0 switched from ISO-8859-2 to UTF-8)

XLSX driver:
* make it possible to open file without .xlsx extension if prefixed with XLSX: (6375)
* improve detection to recognize even if no XLSX: prefix or .xlsx extension

SWIG Language Bindings

All bindings:
* Add SWIG bindings for OGR_L_AlterGeomFieldDefn()
* fix SpatialReference.GetLinearUnitsName() to use OSRGetLinearUnits() to retrieve the name
* add SpatialReference.StripVertical()
* Create alias versions with/without GDAL_ prefix for c/java constants
* add inverseCT optional parameter to CoordinateOperation.SetOperation(), and add CoordinateOperation.GetInverse()
* make Band.ComputeStatistics() kwargs
* add options argument to Dataset.BuildOverviews()
* fix GDT_TypeCount value (affects C and Java bindings)

Python bindings:
* bindings for Arrow Batch functionality
* add numpy to extras_require option of setup.py
* add an optional can_return_none=True parameter to Band.ComputeRasteMinMax() to make it return None in case of error. Otherwise, return (nan, nan) (6300)

GDAL/OGR 3.6.4 Release Notes

GDAL 3.6.4 is a bugfix release.

3.5.0

Not secure
Port

* CPLRecode(): fix recoding between UTF-8 and CP_ACP/CP_OEMCP on Windows build that have iconv support
* CPLRecodeIconv(): avoid potential unsigned integer overflow (ossfuzz41201)
* Fix out of bounds read in CPLRecodeFromWCharIconV() (5542)
* Add VSISetCredential() to set /vsis3, /vsigs, /vsiaz ... credentials for a given file prefix
* VSICurl: Print response code for failed range requests
* /vsis3/: allow setting AWS_PROFILE to a profile that uses IAM role assumption
* IVSIS3LikeFSHandler::CopyFile(): always take into account ret code of CopyObject()
* VSISync() onto /vsis3/: allow x-amz- headers to be specified for object creation
* /vsis3/: ignore object class DEEP_ARCHIVE in addition to GLACIER, and add CPL_VSIL_CURL_IGNORE_STORAGE_CLASSES to configure which object classes should be ignored
* /vsis3/: make sure file properties of /vsis3_streaming/foo are invalidated when /vsis3/foo ones are
* /vsis3/ with GDAL_DISABLE_READDIR_ON_OPEN: do not hide when accessing non existing file (1900)
* VSISync(): fix sync'ing from /vsis3/, /vsigs/, /vsiaz/ to local disk, when the source contains implicit directories
* /vsiaz/: read credentials from ~/.azure/config as an additional fallback method. Add AZURE_STORAGE_SAS_TOKEN configuration option and deprecate AZURE_SAS
* /vsiaz/: allow authorization through an access token specified with the AZURE_STORAGE_ACCESS_TOKEN config option (to be used with AZURE_STORAGE_ACCOUNT)
* /vsiaz/: fix handling of BlobEndpoint in connection string, and fix signing of requests to handle a directory part in the endpoint
* /vsiaz/: implement container creation/destruction with VSIMkdir()/VSIRmdir()
* /vsiaz/: add compatibility with Azurite emulator
* /vsiadls/: add missing call to InvalidateParentDirectory()
* /vsigs/: Support type=user JSON file for authentication
* /vsigs/: fix upload of files > 4 MB in HTTP 1.1 (5267)
* /vsigs/, /vsiaz/, /vsiadls/: allow x-goog- / x-ms-/ headers to be specified for object creation
* ZIP support: avoid warnings on MacOS
* CPLZLibInflate(): workaround issue with /opt/intel/oneapi/intelpython/latest/lib/libz.so.1 from intel/oneapi-basekit Docker image
* /vsizip/: fix Eof() detection on stored (ie not compressed) files inside the zip (5468)
* /vsitar/: fix reading .tar.gz files when the size of the uncompressed .tar file is a multiple of 65536 bytes (5225)
* CPLGetCurrentDir(): use _wgetcwd() on Windows to get a UTF-8 filename
* CSLTokenizeString2(): make it work with strings > 2 GB
* CPLLoadConfigOptionsFromFile(): add a \[credentials\] section to load VSI credentials
* /vsimem/: VSIFTruncateL(): make sure to zeroize beyond the truncated area

Core

* Embedded Python: fixes to load Conda and mingw64 python on Windows
* Embedded python: list Python 3.10
* GDALDriver::QuietDelete(): take into account papszAllowedDrivers argument
* GDALDataset::MarkSuppressOnClose(): delete auxiliary files (4791)
* GDALPamRasterBand::CloneInfo(): deal correctly with NaN nodata to avoid generating useless .aux.xml file (4847)
* External overviews: automatically turn PLANARCONFIG_CONTIG for WebP overviews
* GDALDatasetCopyWholeRaster(): clarify INTERLEAVE option meaning and raises warning if invalid value is specified (4909)
* CreateCopy(): propagate INTERLEAVE from source data (4911)
* Add GDALPamDataset::DeleteGeoTransform() (4877)
* Metadata readers: remove thread-unsafe use of localtime()
* Pleiades metadata reader: fix to handle RPC for Pleiades Neo (5090)
* GeoEye metadata reader: avoid potential write stack-buffer overflow on long basename files (5506)
* Overview generation: fix Cubic resampling on boundaries between valid and transparent areas (5016)
* make GDALProxyRasterBand::RefUnderlyingRasterBand() / UnrefUnderlyingRasterBand() const. May affect out-of-tree drivers
* Add GDALRasterBand::IsMaskBand() and GetMaskValueRange() virtual methods
* Avoid CPLError() on number of drivers when PAM is disabled
* RawRasterBand::AccessBlock(): do not early return in case of truncated block

Algorithms

* Geoloc transformer: fix inverse transform to be exact (5520)
* Geoloc transformer: make it usable with arbitrary large geolocation arrays, using temporary GTiff storage (5520)
* gdal_grid: add facility to search points included in search ellipse for GDALDataMetrics (minimum, maximum, range, count, average_distance, average_distance_pts) in the already implemented quadtree data structure (5530)
* Rasterization of polygons: avoid underflow/overflow of output data type
* Rasterize: use rounding to integers of floating-point value, and handle +/- inf for floating point rasters
* Rasterize: make it possible to burn a Int64 attribute into a Int64 raster in a lossless way
* Warp kernel: avoid writing outside allocated buffer if more threads than needed are allocated
* warper: better guess output bounds when warping from a rotated pole projection that include poles
* transformer: implement DST_METHOD=GEOLOC_ARRAY
* avoid using any resampling kernel when doing just a subsetting of the source image (alignment on pixel boundaries) (5345)
* GDALBuildVRT(): in -separate mode, add support for sources such as MEM dataset or non-materialized VRT files

Utilities

* gdalinfo --build: report PROJ version of build and runtime
* gdaladdo -clean: remove overviews of mask (1047)
* gdalwarp -crop_to_cutline: relax epsilon to avoid extremely long loop (4826)
* gdalwarp: do not emit "Point outside of projection domain" / "tolerance condition error" (4934)
* gdalwarp: avoid useless use of CHECK_WITH_INVERT_PROJ when computed bounds are at the 'edges' of the geographic domain
* gdal_translate/gdalwarp: do not delete DIM_/RPC_ auxiliary XML files on converting a jp2 file to a tif file (5633)
* gdalbuildvrt: change logic to check homogeneous number of bands (5136)
* gdalsrsinfo: emit message when replacement of deprecated CRS occurs, with hint to set OSR_USE_NON_DEPRECATED=NO configuration option to avoid that (5106)
* gdalsrsinfo: return a non-zero exit code when specified SRS fails to load (5201)
* gdalbuildvrt: add a -strict/-non_strict flag, and in strict mode consider non-existing datasets as a failure (4755)
* gdal_pansharpen.py: display usage if not enough filenames provided
* gdal_polygonize.py: remove use of Unicode double quote characters
* gdal_polygonize.py: make -8 switch work again (5000)
* gdal_sieve.py: fix exception when source dataset has no nodata value (3.4.0 regression) (4899)
* gdal_calc.py: support wildcard for filenames, and use 3D arrays instead of list for multiple filenames per alpha
* gdal_calc.py: raise error when overwriting behavior is apparently wished but not specified (5270)
* gdal2tiles: make --no-kml option takes effect (4940)
* gdal2tiles: XML escape input filename (5032)
* gdal2tiles: remove/fix broken links in generated files
* gdal2tiles: implement parallel generation of overview tiles (5052)
* gdal2tiles: lower chunksize value to allow parallel processing when generating ~ 100 tiles
* gdal2tiles: fix issue with multiprocessing and the gdal2tiles launcher script on Windows and Python >= 3.8 (4951)
* gdal2tiles: support mpi4py multi-node parallelism (5309)
* gdal2tiles: detect write error when creating tiles, and allow outputting to /vsi filesystems (3382, 5370)
* gdal2tiles: do not generate .aux.xml files on overview tiles
* bash-completion: fixes and update gdal-bash-completion.sh

gdal_utils package

* Make scripts executable
* Add entry points for gdal-utils package (5281)

Raster drivers

AAIGRID driver:
* add support for 'null' as can be generated by D12 software (5095)

BAG driver:
* fix 'too many refinement grids' error (3759)

BMP driver:
* harden identify checks to avoid misidentification of other datasets (4713)

BYN driver:
* remove validation of nTideSys and nPtType fields

COG driver:
* only create RGB JPEG with mask if 4-band is alpha (4853)
* fix potential generation failure when main imagery has overview and mask none
* output exactly square pixels when using -co TILING_SCHEME (5343)
* add a ZOOM_LEVEL creation option (5532)

DIMAP driver:
* avoid warning when extracting metadata from unsupported band_id
* register metadata on all 6 PNEO bands
* validate raster dimensions to avoid further issues (ossfuzz 46762)

ECW driver:
* fix test failures with ECW 5.5
* do not try to open UInt32 JPEG2000 if the SDK is buggy (3860)
* fix non-nearest upsampling on multi-band datasets (5288)
* Added source read by swath to improve encoder performance

ERS driver:
* Add support for comments in ERS files (4835)

ESRIC driver:
* Fix bundle file name

FITS driver:
* fix non-conformant use of &v[0] that crashes with clang 14 -O2

GeoRaster driver:
* fix build without JPEG

GRIB driver:
* GRIB2: mode degrib hard-coded tables to .csv files in resource files
* GRIB2: merge content from WMO tables at https://github.com/wmo-im/GRIB2 with DEGRIB ones
* fix writing negative longitude of natural origin for Transverse Mercator, and fix reading it for TMerc, LCC, ACEA and LAEA
* fix thread-safetey of errSprintf() (4830)
* avoid read heap buffer overflow due to inappropriate split-and-swap on dataset with weird georeferencing (5290, ossfuzz 41260, ossfuzz 41637)
* consider longitudes that slightly exceed 360° as 360° for Split&Swap mode (5496)
* degrib: partial resynchroinzation with degrib 2.25 (degrib-20200921)
* fix use of uninitialized memory on some datasets (5290)
* multidim: fix crash when a .idx file is present (5569)

GTiff driver:
* explicitly enable strip choping to avoid issues with cmake libtiff builds
* JXL codec: use non-deprecated methods and update for compatibility with latest state of libjxl
* only emit warnings on libgeotiff PROJ errors (4801)
* SRS reading: add warning when CRS definition from geokeys is inconsistent with EPSG, and a GTIFF_SRS_SOURCE=EPSG/GEOKEYS configuration option to alter the SRS (5399)
* avoid warning with >= 5 bands and JPEG compression
* LERC overview related improvements (4848): MAX_Z_ERROR_OVERVIEW, ZLEVEL_OVERVIEW, ZSTD_LEVEL_OVERVIEW configuration options added
* propagate SPARSE_OK to overviews (4932), and add SPARSE_OK_OVERVIEW configuration option.
* fix performance issue when reading transfer functions (4923)
* avoid huge memory allocation when generating overviews on large single-band 1-bit tiled files (4932)
* make SetGCPs(), SetGeoTransform(), SetSpatialRef(), SetNoDataValue(), SetMetadata(Item)() write to PAM .aux.xml on read only files (4877)
* add support for reading/writing color table from/into PAM .aux.xml (4897)
* do not warn about buggy Sentinel1 geotiff files use a wrong 4326 code for the ellipsoid
* fix DISCARD_LSB with nodata value (5097)
* GTIFWktFromMemBufEx / GTIFMemBufFromSRS: use OSRSetPROJSearchPaths() (5184). Affects GeoJP2 encoding/decoding
* fix exposing WEBP_LOSSLESS option
* early checks for PREDICTOR settings, and update internal libtiff to support PREDICTOR=2 for 64-bit samples (rasterio/rasterio2384)
* remove limitation to 32,000 bytes when writing the GDAL metadata tag (4116)
* Create(): better detection of threshold when to switch to BigTIFF for tiled images (5479)
* unset geotransform from non-PAM source if PAM defines GCPs, and PAM is the prioritary source
* fix crash when building overviews and computing approx stats (5580)

HDF5 driver:
* fix issue when netCDF and/or HDF5 drivers built as plugins with multidim datasets
* detect Matlab .mat HDF5-based, or other files with HDF5 superblock at offset 512

HFA driver:
* Fix "Pulkovo 1942" datum write to IMG files

JP2KAK driver:
* add support for reading/writing Int32/UInt32 data types
* Add support for Creversible & RATE creation option (5131)

JP2OpenJPEG driver:
* add a STRICT=YES/NO open option to allow decoding some broken files (requires OpenJPEG 2.5)

JPEG driver:
* make sure that max memory usage check is done in all code paths that require it

KEA driver:
* print error message when opening of kea file fails

MRF driver:
* Fix padding space logic (5096)
* Add LERC2 padding when encoding
* Adjust PNG limits (5347)
* Allow using external libLerc (5386)

MSG driver:
* fix/workaround MSVC warnings

netCDF driver:
* handle 'crs_wkt' attribute
* always use WKT when found, without comparing with CF params (4725)
* limit SetFromUserInput() use to non file input
* disable filename recoding to ANSI on Windows for netCDF >= 4.8
* add WRITE_GDAL_VERSION and WRITE_GDAL_HISTORY creation option
* add a VARIABLES_AS_BANDS=YES/NO open option
* allow update mode of raster datasets
* implement SetMetadataItem()/SetMetadata()
* avoid warnings when CreateCopy() a non-georeferenced dataset, and opening a 1x1 non-georeferenced dataset
* add a IGNORE_XY_AXIS_NAME_CHECKS=YES open option (qgis/QGIS47158)
* recognize x/y axis from GMT generated files as geospatial axis (5291, qgis/QGIS47158, qgis/QGIS45704)
* read CF attributes giving CRS component names (5493)

NITF driver:
* Add ISO-8859-1 decoding for file and image header metadata
* avoid PROJ error to be emitted in Create() when ICORDS=N/S (5563)
* CADRG polar zone! CRS definition aligned with ADRG and SRP (5656)
* RPF.toc: skip plausibility check for Overviews and Legends; disable some checks for polar zones (5654)

PCIDSK driver:
* fix write heap-buffer-overflow (ossfuzz 41993)

PDS4 driver:
* write conformant Equirectangular when input raster is a geographic CRS

PDF driver:
* Named NEATLINE extraction from ISO32000 style Geospatial PDF (5504)

RRASTER driver:
* add support for CRS WKT2 (5473)

SAGA driver:
* implement SetNoDataValue() (5147)

SENTINEL2 driver:
* identify zipped S2 datasets from file content (5505)

TGA driver:
* fix reading images with runs crossing scanlines (5168)

TileDB driver:
* fix crash when creating array from subdatasets fails
* fix handling of relative paths on Windows
* avoid warnings about deprecated functions

USGSDEM driver:
* fix reading datasets with 1025 byte records ending with linefeed (5007)

VICAR driver:
* avoid undefined behavior on empty container (ossfuzz 46650)

VRT driver:
* Add div, polar, exp pixel functions. Improvements in sum, mul, inv (5298)
* pixel function: implements metadata, and replace_nodata and scale builtin functions (5371)
* Warped VRT: detect inconsistent block size between dataset and bands (4714)
* Warped VRT: do not serialize block size at band level, since already serialized at dataset level (4714)
* Warped VRT: advertise INTERLEAVE=PIXEL for faster processing of multiband
* Warped VRT: fix issue with blocks without sources and alpha band (4997)
* VRTWarpedDataset::ProcessBlock(): fix issue in the unlikely situation where a block would be > 4 GB
* Warped VRT opening: do not open the source dataset with GDAL_OF_SHARED
* fix serialization of relativeToVRT=1 when mix of relative and absolute paths for source and VRT (4983)
* GDALAutoCreateWarpedVRTEx(): avoid potential crash in case of error
* allow setting VRT description after CreateCopy('', src_ds)
* fix serialization of relativeToVRT=1 when mix of relative and absolute paths for source and VRT
* ComputeSourceWindow(): round source coordinates when very close (5343)

WMTS driver:
* disable clipping with TileMatrixSetLimits by default when using layer extent and add open options to control that behavior (4461)

XYZ driver:
* Fix incorrect failure to open ASCII-file due to floating point comparison

Zarr driver:
* be robust to duplicated array and group names in NCZarr metadata (ossfuzz 40949)
* fix nullptr dereference on array with zero-dim and Fortran order (ossfuzz 46717)

OGR 3.5.0 - Overview of Changes

Core

New features:
* Add layer renaming capacity, and implement it in GPKG, PG, FileGDB and Shapefile drivers
* Add GDALDataset::GetFieldDomainNames method to retrieve all field domain names which are available for a dataset. Implemented in OpenFileGDB, FileGDB, GPKG drivers
* Add GDALDataset::DeleteFieldDomain for deleting an existing field domain. Implemented in MEM driver
* Add GDALDataset::UpdateFieldDomain for replaciong the definition of an existing field domain. Implemented in MEM driver
* Add driver metadata for GDAL_DCAP_FIELD_DOMAINS and GDAL_DMD_CREATION_FIELD_DOMAIN_TYPES
* Add OGR_F_StealGeometryEx to steal more than the 1st geometry of a feature (5115)
* OGRFeature: add fast/unsafe field getters/setters
* OGREnvelope: add == and != comparison operators
* OGRFeature: add Reset() method

Bug fixes:
* OGRSimpleCurve::segmentize(): avoid too many memory reallocation (4826)
* OGR SQLite dialect: avoid being confused by an attribute and geometry field of same name
* OGRFormatFloat(): handle nan and inf
* OGRFeature::Equal(): fix when a Real or RealList field contains NaN
* OGRCurvePolygon::checkRing(): make it accept non-closed rings by default (5488)
* OGRCreateFromShapeBin(): do not report M if all NaN coordinates
* OGRGeometryFactory::forceTo(): fix dimensionality with empty geometries
* Multipoint WKT import: accept MULTIPOINT Z in non-backeted mode, like what PostGIS outputs
* OGR_F_SetFieldRaw() / OGRFeature::SetField( const char*, const OGRField *): fix const correctness of OGRField argument

OGRSpatialReference

* OGRSpatialReference::GetName(): workaround a PROJ 8.2.0 bug for BoundCRS
* add a OGR_CT_PREFER_OFFICIAL_SRS_DEF config option (fixes https://github.com/OSGeo/PROJ/issues/2955)
* OGRSpatialReference::importFromEPSG(): document OSR_USE_NON_DEPRECATED=NO configuration option (5106)
* OGRSpatialReference::SetFromUserInput(): make it work with 'IAU:XXXX' and 'IAU:2015:XXXX' (when using PROJ >= 8.2)
* OGRSpatialReference::SetFromUserInput(): do not emit error message on unrecognized string when ALLOW_FILE_ACCESS=NO (Toblerity/Fiona1063)
* Add a OSR_DEFAULT_AXIS_MAPPING_STRATEGY configuration option
* OGRProjCT: add missing copying of epoch related fields in copy constructor
* Add OGRSpatialReference::GetOGCURN()

Utilities

* ogr2ogr: propagate error in final CommitTransaction() to status code of the utility (5054)
* ogr2ogr: make detection of FID layer creation option more robust
* ogr2ogr: fix cutting of geometries in projected coordinates intersecting antimeridian, in some configurations
* ogr2ogr: avoid (in-memory) copying of source feature to target feature when possible
* ogr2ogr: make 'ogr2ogr [-f PostgreSQL] PG:dbname=.... source [srclayer] -lco OVERWRITE=YES' work as if -overwrite was specified (5640)

Vector drivers

CAD driver:
* libopencad: fix crash on corrupted datasets (ossfuzz 45943, ossfuzz 46887, osffuzz 45962)

CSV driver:
* when the .csvt indicates WKT and in default KEEP_GEOM_COLUMNS=YES mode, prefix the geometry field name with 'geom_'

DXF driver:
* Do not copy final DXF when MarkSuppressOnClose was called.
* Fix long line handling in edge case

DWG driver:
* Add block attributes to entities layer (5013)
* support AcDbFace reading (5034)
* read block attributes as feature fields (5055)
* add DWG_ALL_ATTRIBUTES to get all attributes (5103)

DWG/DGNv8 driver:
* avoid potential crash with ODA 2022 on Linux

ElasticSearch driver:
* do not try to open reserved .geoip_databases to avoid error message with recent Elastic versions
* add a AGGREGATION open option (4962)
* support GetLayerByName() with multiple layers and/or wildcard (4903)

ESRIJSON driver:
* fix dimensionality of PolygonZ

FileGDB driver:
* add support for writing field domains
* implement database compaction on 'REPACK' SQL command
* workaround a crash involving binary field and CDF datasets
* fix crash related to feature of FID 2147483647

FlatGeoBuf driver:
* If CRS WKT detected to be non UTF-8, force it to ASCII (5062)
* catch exception on GetFeature() on corrupted index
* fix GetFeature() when featuresCount != 0 and indexNodeSize == 0
* in SPATIAL_INDEX=NO mode, write a meaningful featureCount and extent in the header

GeoJSON driver:
* reader: expose EPSG:4979 as CRS when none is specified and 3D geoms are found
* use OGRSpatialReference::GetOGCURN() to handle compound CRS when writing 'crs' member
* writer: in RFC7946=YES mode, reproject to EPSG:4979 if source CRS is 3D
* report OFSTJSON subfield type for properties we can't map to a native OGR type, and better handling of mixed content in properties (3882)

GMLAS driver:
* be robust to leading spaces in <gml:coordinates> element (5494)

GMT driver:
* allow writing to /vsistdout/ (4993)

GPKG driver:
* fix nullptr dereference on corrupted databases with sqlite >= 3.35
* deal explicitly with CPL_VSIL_USE_TEMP_FILE_FOR_RANDOM_WRITE=YES for /vsi network file systems (5031)
* when adding a 'epoch' column to gpkg_spatial_ref_sys, one must use the 'gpkg_crs_wkt_1_1' extension instead of 'gpkg_crs_wkt'
* DeleteField(): use ALTER TABLE ... DROP COLUMN if sqlite >= 3.35.5, and run foreign_key_check only if foreign_keys is ON (fixes qgis/qgis47012)
* AlterFieldDefn(): use ALTER TABLE ... RENAME COLUMN when only renaming is to be done and sqlite >= 3.26.0, and do not run integrity_check in that situation (fixes qgis/qgis47012)
* intercept 'ALTER TABLE table RENAME COLUMN src_name TO dst_name' and 'ALTER TABLE table DROP COLUMN col_name'
* add a NOLOCK=YES option to open a file without any lock (for read-only access) (helps fixing qgis/qgis2399)
* add ST_MakeValid() SQL function if not linking against Spatialite or if Spatialite lacks ST_MakeValid()

GPSBabel driver:
* Allow identifying tcx (gtrnctr) files directly

ILI driver:
* IMDReader: fix various potential crashes on invalid input

MapInfo driver:
* allow reading MID/MIF files with lines up to 1 million bytes (3943)
* fix parsing .mid files with newline character in string field (4789)
* .tab writing: correctly detect datum when creating a layer from a WKT2 CRS string (5217)
* Add GSK2011 and PZ90.11 to list of ellipsoids (5541)
* add WindowsBalticRim / CP1257 charset mapping (5608)

MSSQL driver:
* fix build warnings on Linux
* GetLayerDefn(): fix potential memory leak
* DeleteLayer(): fix read after free
* fix issue when inserting strings in bulk copy mode on Linux
* make GetNextFeature() end bulk copy mode
* CreateFeature in bulk copy mode: make it use feature geometry SRID when set
* disable bulk mode when a UUID field is found, as this doesn't work currently
* do not set field width when reading smallint/int/bigint/float/real columns, and correctly roundtrip smallint/Int16 (3345)

MVT driver:
* writing: using MakeValid() when possible on polygon output

ODS driver:
* avoid huge memory allocations on files abusing repeated cells (ossfuzz 40568)
* avoid crashing 'floating-point exception' when evaluating -2147483648 % -1 (ossfuzz 41541)

OpenFileGDB driver:
* correctly parse raster fields of type == 2 which are inlined binary content (4881)
* do not report extent with NaN values
* fix crash related to feature of FID 2147483647
* fix dimensionality of MULTILINESTRING M geometries
* add support for reading (non-default) UTF16 encoding for strings

OSM driver:
* add a railway attributes to lines (5141)

PGeo driver:
* Always request numeric column values as numeric types (4697)

PostgreSQL driver:
* skip all leading whitespace in SQL statements. (4787)
* error out if non UTF-8 content is transmitted in COPY mode, when client_encoding=UTF8 (4751)
* propagate errors in deferred EndCopy() call in CommitTransaction() (5054)
* make ogr2ogr -lco GEOM_TYPE=geography work when the source layer has a named geometry column, and also reject creating geography columns with a SRS != EPSG:4326 (5069)
* support other geographic SRS than EPSG:4326 for geographic type (5075)

S57 driver:
* enable recoding to UTF-8 by default (RECODE_BY_DSSI=YES open option) (4751)
* handle more than 255 updates to a feature (5461)
* only apply an update if update.UPDT == 1 + previous.UPDT, or update.EDTN == 0 (5461)

Selafin driver:
* fix time step count when none dataset in the file

Shapefile driver:
* better deal with ETRS89 based CRS with TOWGS84\[0,0,0,0,0,0,0\]
* writer: avoid considering rings slightly overlapping as inner-outer rings of others (5315)
* fix perf issue when writing multilinestring with lots of parts (5321)
* consider rings at non-constant Z as outer rings (5315)
* fix unlikely nullptr dereference (5635)

SOSI driver:
* avoid segfault on invalid geometries (5502)

SQLite driver:
* add a STRICT=YES layer creation option to create tables as SQLite >= 3.37 STRICT tables
* workaround MacOS system SQLite non-default settings that cause issues with WAL and AlterFieldDefn() when patching CREATE TABLE DDL
* deal explicitly with CPL_VSIL_USE_TEMP_FILE_FOR_RANDOM_WRITE=YES for /vsi network file systems (5031)
* DeleteField(): use ALTER TABLE ... DROP COLUMN if sqlite >= 3.35.5, and run foreign_key_check only if foreign_keys is ON (refs qgis/qgis47012)
* AlterFieldDefn(): use ALTER TABLE ... RENAME COLUMN when only renaming is to be done and sqlite >= 3.26.0
* fix crash when doing select load_extension('libgdal.so') from a statically linked sqlite3 console application
* add a OGR_SQLITE_LOAD_EXTENSIONS configuration option
* fix VirtualShape support with spatialite 5.0.1 or older and sqlite 3.38.0

TopoJSON driver:
* fix duplicate 'id' field, and other potential issues when reading fields (3.4.0 regression)

VFK driver:
* avoid crash when a SQLite3 statement fails

WFS driver:
* if COUNT is present in WFS >= 2, use it as the page size

SWIG Language Bindings

All bindings:
* add missing CPLES_SQLI constant (4878)
* add gdal.DataTypeUnion()
* Geometry.ExportToWkb()/ExportToIsoWkb(): use Intel order by default to avoid useless byte swapping
* use OGR_G_CreateFromWkbEx() in ogr.CreateGeometryFromWkb() to be able to handle > 2 GB WKB

C Bindings:
* Re-target C bindings apps to netcoreapp2.2 (4792)
* Switch default platform target to AnyCPU 1368

Python bindings:
* for Windows and Python >= 3.8, automatically add the first path with (lib)gdal*.dll with os.add_dll_directory()
* Change GetFieldAsBinary to use VSIMalloc. (4774)
* add xmp=True/False argument to gdal.Translate()
* fix/workaround setuptools 60.0 and Debian --install-layout
* replace unsafe use of tempfile.mktemp() by mkstemp()
* utilities-as-lib: propagate warnings to custom error handler when UseExceptions is on (5136)
* remove all traces of distutils
* make sure GetUseExceptions() doesn't clear the error state (5374)
* make feature.GetField() returns a bool for a (type=OFTInteger, subtype=OFSTBool) field

GDAL/OGR 3.4.3 Release Notes

3.4.3

Not secure
Port

* /vsizip/: fix Eof() detection on stored (ie not compressed) files inside the zip (5468)
* /vsiaz/: do not sign request in AZURE_NO_SIGN_REQUEST mode even when we have credentials
* /vsimem/: VSIFTruncateL(): make sure to zeroize beyond the truncated area
* Fix memory leak in VSICurlClearCache() (5457)
* Fix out of bounds read in CPLRecodeFromWCharIconV() (5542)

Core

* GeoEye metadata reader: avoid potential write stack-buffer overflow on long basename files (5506)

Utilities

* gdalbuildvrt: fix potential out-of-bounds access when using -b option
* gdalwarp: fix issue with vertical shift mode when only one of the CRS is 3D, with PROJ 9.1

Raster drivers

FITS driver:
* fix crash at runtime with clang 14 -O2

GRIB driver:
* consider longitudes that slightly exceed 360° as 360° for Split&Swap mode (5499)
* multidim: fix crash when a .idx file is present (5569)

GTiff driver:
* SRS reading: add warning when CRS definition from geokeys is inconsistent with EPSG, and a GTIFF_SRS_SOURCE=EPSG/GEOKEYS configuration option to alter the SRS (5399)
* avoid hang when trying to create a larger than 4GB classic TIFF, and switch to BigTIFF before that happens
* fix crash when building overviews and computing approx stats (5580)

MRF driver:
* Prevent LERC out of bounds access (5598)

NITF driver:
* avoid PROJ error to be emitted in Create() when ICORDS=N/S (5563)

VICAR driver:
* avoid undefined behavior on empty container (ossfuzz 46650)

OGR 3.4.3 - Overview of Changes

Core

* OGREnvelope: ignore fp warnings for operator== like IsInit()
* GML geometry importer / GMLAS: be robust to leading spaces in <gml:coordinates> element (5494)
* Multipoint WKT import: accept MULTIPOINT Z in non-backeted mode, like what PostGIS outputs

Utilities

* ogr2ogr: fix cutting of geometries in projected coordinates intersecting antimeridian, in some configurations

Vector drivers

ESRIJSON driver:
* fix dimensionality of PolygonZ

FlatGeoBuf driver:
* catch exception on GetFeature() on corrupted index
* fix GetFeature() when featuresCount != 0 and indexNodeSize == 0

GPKG driver:
* fix opening files in NOLOCK=YES mode that contains '?' or '' (fixes qgis/QGIS48024)

MITAB driver:
* add WindowsBalticRim / CP1257 charset mapping (5608)

OpenFileGDB:
* fix dimensionality of MULTILINESTRING M geometries

S57 driver:
* fixes related to update files (5461)

SOSI driver:
* avoid segfault on invalid geometries (5502)

GDAL/OGR 3.4.2 Release Notes

Build

* Fix build against Poppler > 21 (5071)
* Fix build against libhdf5 1.13.0 (5061)
* Fix build with tiledb >= 2.7 (5409)

3.4.2

Not secure
Port

* Google cloud - Support type=authorized_user JSON file for authentication
* /vsigs/: fix upload of files > 4 MB in HTTP 1.1 (5267)
* /vsitar/: fix reading .tar.gz files when the size of the uncompressed .tar file is a multiple of 65536 bytes (5225)
* VSICurl: Print response code for failed range requests

Core

* Pleiades metadata reader: fix to handle RPC for Pleiades Neo (5090)
* Driver manager: make sure oMapNameToDrivers.size() == nDrivers when querying a non existing driver
* Overview generation: fix Cubic resampling on boundaries between valid and nodata areas.

Algorithms

* Rasterization of polygons: avoid underflow/overflow of output data type
* warper: better guess output bounds when warping from a rotated pole projection that include poles

Utilities

* gdal_calc.py: raise error when overwriting behavior is apparently wished but not specified (5270)
* gdalbuildvrt: change logic to check homogeneous number of bands (5136)
- if no explicit band list is specified, all source datasets must have
the same number of bands (previously we checked that the second,
third, etc. datasets had at least a number of bands greater or equal
than the first one, which made things order dependent).
- if an explicit band list is specified, we tolerate a different number of bands, provided that datasets have at least all requested bands.
* gdalbuildvrt: add a -strict/-non_strict flag, and in strict mode consider non-existing datasets as a failure (4755)
* gdalsrsinfo: emit message when replacement of deprecated CRS occurs
* gdalsrsinfo: return a non-zero exit code when specified SRS fails to load (5201)
* gdal2tiles: remove/fix broken links in generated HTML files
* gdal2tiles: fix issue with multiprocessing and the gdal2tiles launcher script on Windows and Python >= 3.8 (4951)
* gdal2tiles: detect write error when creating tiles, and allow outputting to /vsi filesystems (3382, 5370)

Raster drivers

BAG driver:
* fix 'too many refinement grids' error (3759)

BSB driver:
* Add missing kap file extension in driver metadata

BYN driver:
* remove validation of nTideSys and nPtType fields

COG driver:
* output exactly square pixels when using -co TILING_SCHEME (5343)
* and emit warning messages when using RES or EXTENT options in that mode.

DIMAP driver:
* register metadata on all 6 PNEO bands (5420)

ECW driver:
* fix non-nearest upsampling on multi-band datasets (5288)

ESRIC driver:
* Fix bundle file name

FileGDB driver:
* workaround a crash involving binary field and CDF datasets

GTiff driver:
* fix DISCARD_LSB with nodata value (5097)
* Updates for IJG libjpeg-9e
* GTIFWktFromMemBufEx / GTIFMemBufFromSRS: use OSRSetPROJSearchPaths() (5187). Affects GeoJP2 encoding/decoding
* fix exposing WEBP_LOSSLESS option
* remove limitation to 32,000 bytes when writing the GDAL metadata tag (4116)

GRIB driver:
* fix write heap-buffer-overflow when using 'split and swap column' mode when the split column is not equal to width / 2 (5290)

HFA driver:
* Fix "Pulkovo 1942" datum write to IMG files

MRF driver:
* Fix padding space logic (5096)
* Adjust PNG limits (5347)

netCDF driver:
* add a IGNORE_XY_AXIS_NAME_CHECKS=YES open option (refs qgis/QGIS47158)
* recognize x/y axis from GMT generated files as geospatial axis (5291, qgis/QGIS47158, qgis/QGIS45704)

PNG driver:
* Internal libpng: fix memleak on corrupted file.

TGA driver:
* fix reading images with runs crossing scanlines (5168)

WMTS driver:
* disable clipping with TileMatrixSetLimits by default

OGR 3.4.2 - Overview of Changes

OGRSpatialReference

* OGRSpatialReference::SetFromUserInput(): make it work with 'IAU:XXXX'

Vector drivers

CSV driver:
* Fix issues with attribute and geometry fields of same name

FlatGeobuf driver:
* If CRS WKT detected to be non UTF-8, force it to ASCII (5062)

GPKG:
* deal explicitly with CPL_VSIL_USE_TEMP_FILE_FOR_RANDOM_WRITE=YES for /vsi network file systems (5031)
* use ALTER TABLE ... RENAME/DROP COLUMN when possible
* when adding a 'epoch' column to gpkg_spatial_ref_sys, one must use the 'gpkg_crs_wkt_1_1' extension instead of 'gpkg_crs_wkt'
* add a NOLOCK=YES option to open a file without any lock (for read-only access) (helps fixing qgis/qgis23991, but requires QGIS changes as well)

MapInfo driver:
* .tab writing: correctly detect datum when creating a layer from a WKT2 CRS string (5217)

PG driver:
* ogr2ogr/PG: propagate errors in CommitTransaction() (5054)
* support other geographic SRS than EPSG:4326 for geographic type (5075)

Shapefile driver:
* writer: fix speed issue when writing multilinestring with lots of parts (5321)
* writer: fixes for slightly overlapping parts in a multipolygon, and non-horizontal multipolygon Z (5315)

SQLite:
* deal explicitly with CPL_VSIL_USE_TEMP_FILE_FOR_RANDOM_WRITE=YES for /vsi network file systems (5031)
* use ALTER TABLE ... RENAME/DROP COLUMN when possible
* SQLite SQL dialect: Fix issues with attribute and geometry fields of same name
* fix crash when doing select load_extension('libgdal.so') from a statically linked sqlite3 console application
* fix VirtualShape support with spatialite 5.0.1 or older and sqlite 3.38.0

SWIG bindings

CSharp bindings:
* Switch default platform target to AnyCPU (1368)

Python bindings:
* utilities-as-lib: propagate warnings to custom error handler when UseExceptions is on (5136)
* make sure GetUseExceptions() doesn't clear the error state (5374)

GDAL/OGR 3.4.1 Release Notes

Build

* configure.ac: fix detection of OpenEXR >= 3 (4766)
* Add support for PCRE2 (to replace deprecated PCRE) (4822)
* nmake.opt: fix wrong variable name in example MSODBCSQL_LIB
* Add support for external libqhull_r (4040)

3.4.1

Not secure
Algorithms

* viewshed.cpp: remove hidden bidirectional unicode character in code comment

Port

* CPLRecodeIconv(): avoid potential unsigned integer overflow (ossfuzz 41201)
* CPLRecode(): ZIP support: avoid warnings on MacOS
* IVSIS3LikeFSHandler::CopyFile(): always take into account ret code of CopyObject()
* CPLZLibInflate(): workaround issue with /opt/intel/oneapi/intelpython/latest/lib/libz.so.1 from intel/oneapi-basekit Docker image

Core

* GDALDataset::MarkSuppressOnClose(): delete auxiliary files (4791)
* GDALPamRasterBand::CloneInfo(): deal correctly with NaN nodata to avoid generating useless .aux.xml file (4847)
* External overviews: automatically turn PLANARCONFIG_CONTIG for WebP overviews

Utilities

* gdaladdo -clean: remove overviews of mask (1047)
* gdalwarp -crop_to_cutline: fix extremely long loop (4826)
* gdalwarp: do not emit "Point outside of projection domain" / "tolerance condition error" (4934)
* gdal_polygonize.py: remove use of Unicode double quote characters
* gdal_polygonize.py: make -8 switch work again (5000)
* gdal_sieve.py: fix exception when source dataset has no nodata value (3.4.0 regression) (4899)
* gdal2tiles: making --no-kml option takes effect (4936)
* gdal2tiles: XML escape input filename (5032)

Raster drivers

COG driver:
* only create RGB JPEG with mask if 4-band is alpha (4853)
* fix potential generation failure when main imagery has overview and mask none

ECW driver:
* do not try to open UInt32 JPEG2000 if the SDK is buggy (3860)

ERS driver:
* Add support for comments in ERS files (4835)

GRIB driver:
* fix thread-safetey of errSprintf()
* avoid read heap buffer overflow due to inappropriate split-and-swap on dataset with weird georeferencing (ossfuzz 41260, 41637)
* fix writing negative longitude of natural origin for Transverse Mercator

GTiff driver:
* only emit warnings on libgeotiff PROJ errors (4801)
* Initialize jxl structures with zeros.
* LERC overview related improvements (4848):
+ COMPRESS_OVERVIEW configuration option now honours LERC_DEFLATE and LERC_ZSTD for external overviews
+ MAX_Z_ERROR_OVERVIEW configuration option is added for LERC compressed internal and external overviews.
+ ZLEVEL_OVERVIEW configuration option is added for DEFLATE/LERC_DEFLATE compressed internal and external overviews.
+ ZSTD_LEVEL_OVERVIEW configuration option is added for ZSTD/LERC_ZSTD compressed internal and external overviews.
* fix performance issue when reading transfer functions (4923)
* propagate SPARSE_OK to overviews (4932)
* avoid huge memory allocation when generating overviews on large single-band 1-bit tiled files (4932)
* make SetGCPs(), SetGeoTransform(), SetSpatialRef(), SetNoDataValue(), SetMetadata[Item]() write to PAM .aux.xml on read only files (4877)
* add support for reading/writing color table from/into PAM .aux.xml (4897)
* do not warn about buggy Sentinel1 geotiff files use a wrong 4326 code for the ellipsoid
* Internal libtiff: fix issue with rewrite-in-place logic of libtiff 309

KEA driver:
* print error message when opening of kea file fails

NITF driver:
* Add ISO-8859-1 decoding for file and image header metadata

PCIDSK driver:
* fix write heap-buffer-overflow (ossfuzz 41993)

PDS4 driver:
* write conformant Equirectangular when input raster is a geographic CRS

USGSDEM driver:
* fix reading datasets with 1025 byte records ending with line feed (5007)

VRT driver:
* Warped VRT: fix issue with blocks without sources and alpha band (4997)

XYZ driver:
* Fix incorrect failure to open ASCII-file due to floating point comparison

Zarr driver:
* be robust to duplicated array and group names in NCZarr metadata, which could lead to performance issues
* fixes 'runtime error: reference binding to null pointer of type 'unsigned char' (ossfuzz 41517)

OGR 3.4.1 - Overview of Changes

OGRSpatialReference

* OGR_CT: add a OGR_CT_PREFER_OFFICIAL_SRS_DEF config option

Vector drivers

DXF driver:
* Do not copy final DXF when MarkSuppressOnClose was called

DWG/DGNv8 drivers:
* avoid potential crash with ODA 2022 on Linux when driver unloading doesn't occur properly
* DWG: Add block attributes to entities layer (5013)

ElasticSearch driver:
* do not try to open reserved .geoip_databases to avoid error message with recent Elastic versions

GPKG driver:
* fix nullptr dereference on corrupted databases with sqlite >= 3.35

MSSQL driver:
* fix compilation warnings on Linux
* avoid GetLayerDefn() to return null, and call it in GetExtent()
* DeleteLayer(): remove suspicious test 'strlen(pszTableName) == 0' that causes a read after free
* fix issue when inserting strings in bulk copy mode on Linux
* make GetNextFeature() end bulk copy mode
* CreateFeature in bulk copy mode: make it use feature geometry SRID when set
* disable bulk mode when a UUID field is found, as this doesn't work currently
* do not set field width when reading smallint/int/bigint/float/real columns, and correctly roundtrip smallint/Int16 (3345)

ODS driver:
* avoid crashing 'floating-point exception' when evaluating -2147483648 % -1 (ossfuzz 41541)

OpenFileGDB driver:
* correctly parse raster fields of type == 2 which are inlined binary content (4881)

PG driver:
* skip all leading whitespace in SQL statements. (4787)

Selafin driver:
* fix time step count when none dataset in the file

Shape driver:
* better deal with ETRS89 based CRS with TOWGS84[0,0,0,0,0,0,0]

SQLite driver:
* Various fixes for MacOS system SQLite

S57 driver:
* enable recoding to UTF-8 by default (RECODE_BY_DSSI=YES open option) (4751)

TopoJSON driver:
* fix duplicate 'id' field, and other potential issues when reading fields

WFS driver:
* if COUNT is present in WFS >= 2, use it as the page size. Also clarify doc

SWIG Language Bindings

All bindings:
* add missing CPLES_SQLI constant (4878)

CSharp bindings:
* Re-target apps to netcoreapp2.2, fix broken build (4792)

Java bindings:
* add_javadoc.c: robustness fixes and fix crash on MacOS

Python bindings:
* Change GetFieldAsBinary to use VSIMalloc. (4774)
* install target: fix/workaround for setuptools 60.0 and Debian --install-layout

GDAL/OGR 3.4.0 Release Notes

In a nutshell...

* [RFC 81](https://gdal.org/development/rfc/rfc81_coordinate_epoch.html):
Support for coordinate epochs in geospatial formats.
Implemented in FlatGeoBuf, GeoPackage, MEM, VRT
* New GDAL drivers:
- [Zarr](https://gdal.org/drivers/raster/zarr.html):
read/write support for ZarrV2 (and experimental V3), using 2D classic raster
API or multidimensional API:
- [STACIT](https://gdal.org/drivers/raster/stacit.html):
Spatio-Temporal Asset Catalog Items as virtual mosaics
* Other improvements:
- number of enhancements in file system operations of /vsigs/
- NITF: additions to comply with NITF Version 2.1 Commercial Dataset
Requirements Document (NCDRD)
- ODBC and PGeo: multiple fixes and improvements
- SAFE (Sentinel1): multiple improvements related to SLC/calibration (change
subdataset naming)
- multidimensional API: caching, and other improvements
* Code linting and security fixes
* Bump of shared lib major version
* MDB driver (Java based) mark as deprecated. Planned for removal for GDAL 3.5.
ODBC driver is the preferred solution (with up-to-date MDBTools library on
non-Windows platforms)
* Writing side of Tiger driver deprecated and will be removed in GDAL 3.5
* Remainder: DODS, JPEG2000(Jasper), JPEGLS, MG4LIDAR, FUJIBAS, IDA, INGR and
vector driver ARCGEN, ArcObjects, CLOUDANT, COUCHDB, DB2, DODS, FME, GEOMEDIA,
GTM, INGRES, MONGODB, REC, WALK are planned for removal in GDAL 3.5. As well
as Perl bindings

New optional dependencies

* libjxl (master) when using internal libtiff for JPEG-XL support in TIFF
* liblz4, libblosc: recommended for Zarr driver (as well as existing libzstd, liblzma)
* libbrunsli for JPEG-XL support in MRF driver (as well as existing libzstd)

New installed files

* include/cpl_compressor.h

Removed installed files

* no longer build testepsg utility by default, which has been superseded by
gdalsrsinfo for many years. It will be finally removed in GDAL 3.5

Backward compatibility issues

See [MIGRATION_GUIDE.TXT](https://github.com/OSGeo/gdal/blob/release/3.4/gdal/MIGRATION_GUIDE.TXT)

Build changes

Build(General):
* Changes to build against Xerces-c 4.0dev

Build(Unix):
* configure file no longer in git. autogen.sh must be run
* configure: fix explicit disabling of geos/sfcgal (3782)
* configure.ac: also check netcdf presence by using static linking
* fix lack of compilation of nasakeywordhandler.o with some old/non-gnu versions of grep (3836)
* configure.ac: Add compatibility with autoconf 2.71. Set 2.69 as minimum version
* include local files with quotes, and for Unix build, use -iquote instead of -I (4091)
* Use pkg-config for libdap when dap-config is not available.

3.4.0

Not secure
Port
* Add cpl_compressor.h API
* Add VSIAbortPendingUploads() to abort pending multipart uploads on /vsis3/ and /vsigs/
* /vsiaz/: avoid appending same chunk several times
* /vsigs/: switch to using S3-style multipart upload API, which is now supported
* /vsigs/: enable parallel multipart upload
* /vsigs/: add support for reading/writing ACLs through GetFileMetadata/SetFileMetadata with the ACL domain
* /vsigs/: implement UnlinkBatch() (efficient implementation only works with OAuth2 authentication)
* /vsigs/: implement RmdirRecursive() (efficient implementation only works with OAuth2 authentication)
* /vsigs/: add support for GS_USER_PROJECT config option to specify the project ID to bill for requester pays access
* /vsigs/: add support for GS_NO_SIGN_REQUEST=YES
* /vsigs/: implement SetFileMetadata(filename, metadata, 'HEADERS')
* /vsiswift/: Fix openstack swift endpoint detection, add application_credential authentication support (3960)
* /vsiswift/: properly cache stat() results
* VSISwiftFSHandler::Stat(): fix potential nullptr dereference (ossfuzz 37906)
* /vsis3/ , /vsiaz/: properly set mode field into file property cache
* /vsicurl/: fix to be able to read /vsis3/zarr-demo/store/spam
* /vsicurl/: make it work without explicit CPL_VSIL_CURL_USE_HEAD=FALSE with .earthdata.nasa.gov/ URLs (4641)
* /vsicurl/: fix crash with curl 7.79.0 to get file size when retrieving headers only
* /vsizip/: fix memory leak in error code path (ossfuzz 29715)
* /vsitar/: support prefixed filename of ustar .tar archives (4625)
* /vsitar/ etc: avoid potential long processing time on invalid filenames in archive (ossfuzz 30312, ossfuzz 39129)
* IVSIS3LikeFSHandler::Sync(): add missing lock
* VSIS3FSHandler::GetOptions(): fix non-XML conformity
* cpl_odbc.cpp: fix segfault in debug message due to nullptr dereference
* CPLODBCSession::ConnectToMsAccess(): try various DSN template combinations because the combo odbcinst 2.3.7 from Ubuntu 20.04 + self compiled mdbtools-0.9.3 doesn't like double quoting of DBQ
* MDBTools driver installation: do not error out if /etc/odbcinst.ini contains an entry for Access, and also add /usr/lib64/odbc as a path to please Fedora
* Add CPLJSONObject::DeleteNoSplitName()
* CPLJSONDocument::Load(): increase max document size to 100 MB
* CPLJSONDocument::LoadMemory(): fix parsing 'true' and 'false'
* Add CPLQuadTreeRemove()
* VSIGetMemFileBuffer(): delay destroying VSIMemFile on bUnlinkAndSeize (4158)
* Fix VSIMemHandle::Read(buffer,nSize=0,nCount=1) to return 0
* minixml parser: fix performance issue on very large processing instructions. (ossfuzz 37113)
* VSIOpenDir(): add a PREFIX option to select only filenames starting with the specified prefix
* Unix file system: implement OpenDir() with a NAME_AND_TYPE_ONLY option
* VSIReadDirRecursive(): use VSIOpenDir() / VSIGetNextDirEntry()
* VSIStatExL(): add a VSI_STAT_CACHE_ONLY flag to avoid attempting any network access
* CPLCreateUserFaultMapping(): better error message when userfaultfd system call fails due to permission issue
* userfaultfd: make it work with kernel >= 5.11 without special OS settings
* CPL logging mechanism: fix writing non-ASCII UTF-8 filenames on Windows (4492)
* VSI cache: fix crash when a Read() to the underlying file fails (4559)

Core
* Add a GDAL_DCAP_COORDINATE_EPOCH driver capability set by drivers which support storing/retrieving coordinate epoch
* fixed issue with GDALLoadRPBFile failing when RPB file does not contain errBias or errRand fields
* CPLKeywordParser / IMD parser: accept .IMD files with non-properly quoted values (4037)
* NASAKeywordHandler: fix performance issues (ossfuzz 39092)
* IMD writer: properly quote values that have spaces (4037)
* ComputeStatistics(): tiny speed improvements for SSE2 Byte/UInt16 cases
* Overview generation: use per band mask with nodatavalue and average (3913)
* GMLJP2v2 writing: fix axis order issue for gml:Envelope (3866)
* Overview/rasterio: fix RMS on large Float32 values
* Overview/rasterio: RMS resampling: add AVX2 implementation for Float and UInt16
* Overview building: fix crash possibility if user interrupting multi-threaded computation
* GDALDriver::DefaultCreateCopy(): preserve coordinate epoch
* PAM: support coordinate epoch as a SRS.coordinateEpoch attribute (RFC 81)
* GDALDataset::BlockBasedRasterIO(): fixed progress calculation
* GDALDataset::BlockBasedRasterIO(): fix when an overview is selected and non-integer window coordinates are involved (fix issue with GeoRaster driver. 4665)
* GetIndexColorTranslationTo(): fix non-exact color matching when palettes don't have the same number of entries (4156)
* Block cache: fix potential infinite loop in case of high concurrency and multi-threaded writing (3848)
* GDALDataset::GetFileList(): avoid cyclic calls on odd/corrupted datasets (ossfuzz 37460)
* GDALOpenInfo(): fix issue when passing a directory on netBSD and potentially other BSDs
* DumpJPK2CodeStream(): dump COC, QCD and QCC segments, and add HTJ2K specificities
* GDALGetJPEG2000Structure(): limit default number of lines in output to avoid excessive memory and processing time (ossfuzz 14547)
* GDALMDReaderPleiades::LoadRPCXmlFile(): fix nullptr dereference on non-conformant file (ossfuzz 38998)
* GDALDataset::FlushCache() and GDALRasterBand::FlushCache(): add a bool bAtClosing argument (fixes 4652)
* Make GDALRasterBand::TryGetLockedBlockRef() public

Multidimensional API
* Add GDALMDArray::IsRegularlySpaced() and GDALMDArray::GuessGeoTransform()
* Add GDALMDArray::GetResampled() to get a resampled / reprojected view
* Add a GDALMDArray::GetCoordinateVariables() method
* Add a GDALMDArray::Cache() method to cache an array/view into a .gmac side car file
* Add GDALMDArray::IsCacheable() so that drivers can disable attempts at opening cache file on main dataset
* API: add JSON as a possible subtype of (string) extended data type
* GDALRasterBand::AsMDArray(): fix data axis to SRS Axis mapping in the return of GetSpatialRef()
* GDALMDArray::AsClassicDataset(): fix RasterIO() when buffer data type is not native data type
* Add GDALPamMDArray and GDALPamMultiDim classes to be able to serialize/deserialize metadata (SRS for now) from GDALMDArray
* Add GDALExtendedDataTypeCreateStringEx() and map it to SWIG

Algorithms
* Warper: Eliminate thread lock timeouts on Windows (3631)
* Warper: prevent potential int overflows for > 2 GB work buffers
* Warper: force SAMPLE_GRID=YES when target output includes one pole (4064)
* Warper: OpenCL: remove extra double quote character in resampling kernel (4404)
* Warper: avoid selecting Float64 working data type with a Float32 raster and a nodata value compatible of it (4469)
* geolocation transformer: use GDALFillNodata() to fill holes in the backmap
* GDALSuggestedWarpOutput2(): better guess of bounds when transforming with a geolocation array
* gdalgeoloc: fix if the backmap would be larger than 2 Giga pixels
* gdalgeoloc: backmap generation: prevent averaging that would lead to unexpected results
* gdalgeoloc: improve backmap hole filling
* Polygonize: fix self intersection polygon when raster image contains complex holes (1158, 3319)
* Deprecate GDALOpenVerticalShiftGrid() and GDALApplyVerticalShiftGrid() that are no longer needed. Will be removed in GDAL 4.0

Utilities
* gdalinfo: report coordinate epoch (RFC 81)
* gdalinfo: avoid displaying thousands of filename in /vsizip/ if open fails
* gdal_translate: add -a_coord_epoch switch (RFC 81)
* gdalwarp: allow vertical shift when using EPSG codes (4566)
* gdalwarp: preserve coordinate epoch in output SRS (RFC 81)
* gdalwarp: add a -s_coord_epoch/_t_coord_epoch switches (RFC 81)
* Fix gdalwarp / exporting to WKT when a projection that isn't supported in WKT1 is involved (4133)
* gdalwarp: allow reprojecting a rater with geotransform = (0,1,0,0,0,-1) (4147)
* gdalwarp: slightly change default behavior of unified src band masking when a pixel is evaluate to the nodata value on all bands (4253)
* gdal_contour: fix bad coordinate order when outputting from raster with geographic CRS to KML driver (3757)
* gdal_viewshed: fix incorrect calculation if target height is specified (4381)
* gdal_viewshed: Fix incorrect progress reporting (4390)
* gdal_viewshed: change default value of -cc (curvature coefficient) to 0.85714, standard value for atmospheric refraction (4415)
* gdal_polygonize.py: fix output driver guessing
* gdal_fillnodata.py: copy pixel data after metadata
* gdal_fillnodata.py: fix -si option (4192)
* gdal_fillnodata.py: remove broken -nomask option. It has likely never worked, and was equivalent to the default mode
* gdal_sieve.py: preserve NoData value when output to a new file
* gdal2tiles: fix tile grid origin of openlayers with -p geodetic --tmscompatible --xyx as arguments
* gdal2tiles: avoid potential race when creating directories (4691)
* gdal_pansharpen.py: display usage if not enough filenames provided
* gdalmdiminfo: add dimension_size and block_size in output
* gdalmdimtranslate: add -oo switch to specify open option of source dataset

gdal_utils package
* Various linting and improvements in gdal_utils package
* Create ogrmerge(), gdalproximity(), gdal_sieve(), rgb2pct(), pct2rgb(), gdal_fillnodata(), gdal_polygonize() functions
* fix GetOutputDriversFor for ext == 'nc' (4498)

Raster drivers

AIGRID driver:
* avoid integer overflow (ossfuzz 31766)
* fix crash when accessing twice to a broken tile (4316)

BAG driver:
* ignore pixel at nodata value when updating min/max attributes (4057)

BMP driver:
* harden identify checks to avoid misidentification of other datasets (4713)

CEOS2 driver:
* Add ASF Compatibility (4026)

COG driver:
* Default to LZW compression (4574)
* Add LZMA to compressions list
* don't crash if GDALCreateGenImgProjTransformer2() fails
* Fix error messages when creating JPEG compressed COGs from RGBA

DIMAP driver:
* expose virtual overviews (4400)
* fix integer overflows (ossfuzz 39027, 39795)
* fix potential performance issue in SetMetadataFromXML() (ossfuzz 39183)
* avoid excessive memory allocation / almost infinite loop on corrupted dataset (ossfuzz 39324)

ECW driver:
* Enable reading ECW files from virtual file systems for ECW SDK 3.3

EEDAI driver:
* Point at highvolume EE API endpoint by default

EIR driver:
* avoid excessive memory allocation on small files (ossfuzz 9408)

ENVI driver:
* Open(): use .hdr as an additional extension in priority over a replacement one (4317)
* use newer Get/SetSpatialRef API to avoid performance issue (ossfuzz 38295)

ENVISAT driver:
* avoid potential buffer overflow (CID 1074533)

ERS driver:
* avoid long open delay on bogus datasets that reference themselves (ossfuzz 36701)
* Fix off-by-one error when reading ERS header

EXR driver:
* fix build against OpenEXR 3.0.1 (3770)

GeoRaster driver:
* Fix the Oracle DB connection when user and pwd are empty, while Oracle wallet is used. (3768)
* Set the SRID value for the extent when flushing the metadata to the database. (4106)
* fix issue when user name is not provided in connection string (4460)
* Add owner checking in the query (4565)

GRIB driver:
* use sidecar .idx file and lazy initialization (3799)
* implement transparent [0,360] to [-180,180] translation, in reading and writing (4524, 3799)
* add/fill a few GRIB1 ECMWF table to read a ERA5 product (3874)
* turn debug messages about unknown GRIB1 table as warnings
* fix stack read buffer overflow (ossfuzz 38610)
* fix wrong check related to memory allocation limit (ossfuzz 38894)
* fix potential crashes on big GRIB1 files on low-memory condition (ossfuzz 38971)
* multidim: catch potential exception in case of out-of-memory situation

GTiff driver:
* add support for coordinate epoch with a new CoordinateEpochGeoKey=5120 GeoKey (RFC 81)
* Enable JPEG-in-TIFF for 12 bit samples (for internal libtiff), whatever libjpeg is used for 8 bit sample support
* Add support for JPEG-XL codec when using internal libtiff, through libjxl master (4573)
* fix overviews with NaN nodata value
* when reading NoData value of Float32 dataset, cast it to float to avoid overprecision (3791)
* Fix SetDefaultRAT() (3783)
* signedbyte: do not write 0 values for tiles/strips entirely at a negative nodata value (3984)
* Set color interpretation on overview bands (3939)
* SRS reading: ignore vertical information when one of the tag has a value in the private user range (4197)
* write georeferencing info to PAM .aux.xml when using PROFILE=BASELINE
* do not try to export a DerivedGeographic CRS to GeoTIFF, but fallback to PAM
* fix corruption in TIFF directory chaining when altering nodata value after IFD crystallization (3746)
* Update internal libtiff to latest upstream
* limit error message count, mainly with Fax3 decoder, to avoid performance issues (ossfuzz 38317)

HDF5 driver:
* multidim: fix crash when extracting a field from a compound HDF5 data type
* fix issue when netCDF and/or HDF5 drivers built as plugins with multidim datasets

HFA driver:
* enable to read GCPs from PAM .aux.xml (4591)

Idrisi driver:
* Add support of Cylindrical Equal Area (3750)

JP2KAK driver:
* fix Unix build with Kakadu 8.2 (4306)
* accept files with .jhc extension (HTJ2K codestreams)
* report Corder metadata item in IMAGE_STRUCTURE domain instead of default domain

JP2OpenJPEG driver:
* add a TLM=YES creation option to write Tile-part Length Marker (requires openjpeg >= 2.5)

JPEG driver:
* fix wrong detection of bit ordering (msb instead of lsb) of mask band (4351)

KMLSuperOverlay driver:
* Allow reading kml documents with a GroundOverlay element directly inside a Document element (4124)

MEM driver:
* Open(): add support for the 'GEOTRANSFORM' options
* multidim: faster copying when data type conversion is involved
* multidim: add MEMAbstractMDArray::SetWritable, IsModified and SetModified methods

MRF driver:
* add JPEG-XL (brunsli) support (3945)
* add ZStd compression (4177)

MSG driver:
* fix race condition in satellite number lookup (4153)

NetCDF driver:
* expose Sentinel5 verbose metadata in json:ISO_METADATA/ESA_METADATA/EOP_METADATA/QA_STATISTICS/GRANULE_DESCRIPTION/ALGORITHM_SETTINGS metadata domains
* use new PROJ method 'rotated pole netCDF CF convention'
* add write support for rotated pole method
* be more restrictive on axis to decide if to advertise a geotransform.
* fix wrong offsetting by -360 of longitude values when huge nodata value found at beginning or end of line
* fix reading MODIS_ARRAY.nc file that has non CF-compliant way of expressing axis and CRS (4075)
* support more possibilities for content of 'crs' attribute in some opendatacube datasets
* accept degree_north/degree_east (degree singular) as acceptable unit for latitude/longitude axis (4439)
* accept "degrees_E"/"degrees_N" as valid axis names (4581)
* Accept HDF5 files if HDF5 driver is not available and libnetcdf has support for them
* properly deal with Polar Stereographic in reading and writing (4144)
* parse correctly valid_range/valid_min/valid_max attributes when they are of non-integer type (4443)
* no longer do filename recoding with netCDF >= 4.8 on Windows
* multidim: make opening /vsimem/ file work when netCDF MEM API is available (avoids using userfaultfd)
* multidim: make /vsi access work with netcdf >= 4.7
* multidim: avoid crash when getting data type of a char variable with 2 dimensions.
* multim: GetBlockSize(): fix heap buffer write overflow on 2D char variables (ossfuzz 39258)
* multidim: fix use of coordinates attribute to find the indexing variable of a dimension

NITF driver:
* add PROFILE=NPJE_VISUALLY_LOSSLESS/NPJE_NUMERICALLY_LOSSLESS with JP2OpenJPEG driver, to comply with STDI-0006 NITF Version 2.1 Commercial Dataset Requirements Document (NCDRD)
* fix writing of COMRAT field in JPEG/JPEG2000 mode, when there are FILE TREs
* expose ISUBCAT for each band (if non-empty) (4028)
* add capability to add several images in a file
* extend nitf_spec.xml to contain DES subheader user-data fields definitions for CSATTA DES, CSSHPA DES, CSSHPB DES and XML_DATA_CONTENT
* Slightly modify xml:DES output, such that field names no longer have the NITF_ prefix

PCIDSK driver:
* fix retrieval of RPC metadata (3.3 regression) (4118)
* avoid big memory allocation and processing time (ossfuzz 37912)
* avoid long processing time by limiting the number of bands (ossfuzz 38885)

PDF driver:
* update PDFium dependency to pdfium/4627. Requires use of https://github.com/rouault/pdfium_build_gdal_3_4 PDFium fork
* avoid potential nullptr dereference on corrupted datasets (ossfuzz 28635)
* Poppler backend: limit CPU time when reading extremely corrupted file. (ossfuzz 37384)

PDS4 driver:
* update template to CART_1G00_1950 version
* add support for reading PositiveWest longitudes, MapRotation and Oblique Cylindrical
* add write support for Oblique Cylindrical
* fix opening of some .xml files with large number of <?xml-model> tags
* accept optional <Reference_List> element in template.
* fixes for compatibility with sp:Spectral_Characteristics in template.
* projection writing: honor LONGITUDE_DIRECTION=Positive West by negating longitudes in projection parameters

PNG driver:
* disable Neon optimizations for internal libpng as we don't include the needed source file (fix build issue)

PostgisRaster driver:
* support for libpq services (3820)
* do not append generated application_name in subdataset names

RMF driver:
* Fix delta compression with non-initialized elevation min-max (4399)

SAFE driver:
* multiple improvements related to SLC/calibration (change subdataset naming)

SRTMHGT driver:
* support .hgts files from NASADEM SHHP. Also support auxiliary files with .err, .img, .num, .img.num and .swb extensions from other NASADEM products (4239)

TileDB driver:
* fix crash when creating array from subdatasets fails
* fix handling of relative paths on Windows

TGA driver:
* fix heap buffer overflow (ossfuzz 35520)

VICAR driver:
* add read/write support for GeoTIFF encoding of CRS and geotransform

VRT driver:
* Support named arguments to C++ derived band pixel functions (4049)
* Add interpolate_linear pixel function
* use source floating point coordinates when valid (4098)
* make SourceProperties element no longer needed on reading for deferred opening of sources
* avoid potential very deep call stack if SourceFilename contains empty string (ossfuzz 37530)
* Add a per-thread mechanism to count call depth and use it in VRT driver to avoid infinite recursive calls on corrupted datasets (ossfuzz 37717)
* GDALDatasetPool: avoid potential crash during destruction (4318)
* VRT pixelfunc: make it work with buffers larger than 2 giga pixels
* fix issue with sources with nodata and OverviewList resampling='average' that triggers a 'recursion error' message
* GDALAutoCreateWarpedVRTEx(): do not set padfSrcNoDataReal/padfDstNoDataReal if already set in passed-in options (rasterio/rasterio2233)
* avoid recursion issue on ComputeStatistics()/.ComputeRasterMinMax()/GetHistogram() with implicit overviews and approximation enabled (4661)

WCS driver:
* fix issue with negative coordinates (4550)

WebP driver:
* Support 'exact' option to preserve the RGB values under transparent areas.

WMS driver:
* Add an option to disable the cache (4097)
* use correct default bbox according to the SRS (4094)

WMTS driver:
* Add an option to disable the cache (4097)
* do not take into account a TileMatrixSetLink that points to a non-existing TileMatrixSet

ZMap driver:
* undeprecate it since we got feedback it is still useful (4086)

OGR 3.4.0 - Overview of Changes

Core
* Add support for reporting hiearchical organization of vector layers, and implement it in FileGDB/OpenFileGDB drivers. (Trac 5752)
* Add GDALGroup::GetVectorLayerNames() and OpenVectorLayer(), and corresponding C and SWIG API
* Geometry::MakeValid(): add option to select the GEOS 3.10 'structure' method
* Support multiline geometry WKT input
* OGRGeometryFactory::createFromGeoJson(): Support importing GeoJSON fragments in non-null terminated strings (3870)
* OGR SQL: fix wrong evaluation of attribute filter when a OR with >= 3 clauses is nested inside in another OR (3919)
* OGR SQL: Support ISO-8601 literal dates with IN operator (3978)
* OGRFeature::GetFieldAsSerializedJSon(): fix nullptr dereference on empty string list (3831)
* Add OGRGetGEOSVersion() and map it to SWIG (4079)
* Add GDAL_DCAP_MULTIPLE_VECTOR_LAYERS capability (4135)
* Add virtual method GDALDataset::IsLayerPrivate

OGRSpatialReference
* Improve OGRProjCT::Clone() and export OGRCoordinateTransformation::Clone() to C API (3809)
* Export OCTGetSourceCS(), OCTGetTargetCS() and OCTGetInverse() to C API (3857)
* Add OGRSpatialReference::IsDynamic() to check if a CRS is a dynamic one
* Add OGRSpatialReference::SetCoordinateEpoch()/GetCoordinateEpoch()
* Coordinate transformation: take into account SRS coordinate epoch if the coordinate tuple has no time value
* Fix crash in AutoIdentifyEPSG/GetEPSGGeogCS() on some WKTs (3915)
* Fix wrong quoting for WKT spatial CS type
* Add DERIVEDPROJCRS to WKT keywords for OGRSpatialReference::SetFromUserInput
* Support GetLinearUnits for ellipsoidal and spherical coordinate systems that have a height axis (4030)
* AutoIdentifyEPSG(): do not add AUTHORITY node if the axis order of the geographic CRS contradicts the one from EPSG (4038)
* OGR_CT: fix transformation between CRS that only differ by axis order (related to 4038)
* OGR_CT: when a WKT def contradicts its AUTHORITY node, use the WKT def (relates to 4038)
* OGR_CT: deal with bogus NaN coordinates as output of PROJ (4224)
* OGR_CT with OGR_CT_OP_SELECTION=BEST_ACCURACY: fix for non-Greenwich prime meridian
* OGR_CT: take into account PROJ_NETWORK=ON in OGR_CT_OP_SELECTION=BEST_ACCURACY/FIRST_MATCHING modes
* OGRSpatialRef::SetFromUserInput(): add options to disallow file and network access, and use it various drivers (ossfuzz 35453)
* importFromCRSURL() / importFromWMSAUTO() / importFromURN(): avoid excessive memory allocation and processing time on invalid input (ossfuzz 37922 and 38134)
* OGRSpatialReference::GetAxesCount(): fix on CompoundCRS of BoundCRS
* fix retrieving projection parameters from WKT1 name on a Projected 3D CRS (OSGeo/PROJ2846)
* Fix EPSGTreatsAsLatLong with compoundCRS (4505)
* OSRProjTLSCache: avoid use of exceptions (4531)
* exportToWkt(): use WKT2 for DerivedProjectedCRS (3927)
* Add OSRSetPROJEnableNetwork() / OSRGetPROJEnableNetwork(), and expose them to SWIG
* Adds OCTTransformBounds to the C and SWIG API to transform a bounding box (4630)

Utilities
* ogrinfo: report hiearchical organization of layers
* ogrinfo: report SRS coordinate epoch (RFC 81)
* ogrinfo: Report private layers with a "[private]" suffix
* ogr2ogr: add a -a_coord_epoch/-s_coord_epoch/_t_coord_epoch switches (RFC 81)
* ogr2ogr: fix quadratic performance if many source field names are identical (ossfuzz 37768)

Vector drivers

Multiple drivers:
* geomedia, walk: Check sql tables for required tables before trying to query them when trying to open a .mdb dataset

CSV driver:
* improve concatenation performance of multi-line records (ossfuzz 37528)
* OGREditableLayer (affects CSV driver): fix quadratic performance when creating field (ossfuzz 37768)
* limit to 2000 fields in opening by default. (ossfuzz 39095)

DGN driver:
* avoid potential buffer overflow (CID 1074498)
* replace undefined behavior 1 << 31 by 1U << 31. Not sure of the consequences

DXF driver:
* Improved handling of very long lines of text in DXF file (3909)
* Correctly handle hidden (invisible) INSERTs

DWG driver:
* Make Closed AcDb2dPolyline and AcDb3dPolyline to Closed OGRLineString (4264)

ESRIJSON driver:
* make 'ESRIJSON:http://' connection string scroll results

FlatGeoBuf driver:
* add support for coordinate epoch (RFC 81)
* fix memory leaks when reading invalid geometries (ossfuzz 37752, 37834, 38166)
* set minimum alignment to 8 bytes

FileGDB driver:
* report hiearchical organization of layers
* Fix reading of field domains when data source is wrapped in OGRDataSourceWithTransaction
* Ensure tables which are present in the catalog but not listed in GDB_Items can be read by the driver (4463)
* faster CreateLayer() w.r.t SRS identification
* Implement Identify method

GeoJSON driver:
* writer: emit error msg when geometry type is not supported in GeoJSON (4006)
* recognize URL of likely OAPIF items response page (4601)

GML driver:
* reading: fix reading compound curves with gml:ArcByCenterPoint and in a projected CRS in northing/easting axis order (4155)
* writer: use GML 3.2 as the new default version (instead of GML 2)
* read/write srsName as a XML comment in .xsd
* store geometry element name as geometry column name when reading without .gfs/.xsd (4386)
* avoid read heap-buffer-overflow (ossfuzz 35363)
* avoid performance issue on too nested structure (ossfuzz 21737)
* fix warning when reading .gfs file with a polyhedral surface
* expose field names in a more consistent orders when some feature lacks some fields (qgis/QGIS45139)

GMLAS driver:
* avoid uncaught exception when opening corrupted .xsd
* use our own network accessor to honour GDAL_HTTP_TIMEOUT (ossfuzz 37356)
* fix potential crash on XMLString::transcode() failure (ossfuzz 37459)
* fix potential crash in ProcessSWEDataArray() (ossfuzz 37474)
* improve performance of field name truncation (ossfuzz 37836)
* fix likely quadratic performance in LaunderFieldNames() (ossfuzz 39797)
* error out on huge mem allocation / processing time in Xerces (ossfuzz 38073)
* fix performance issue (ossfuzz 38707)

GPKG driver:
* add support for coordinate epoch (RFC 81)
* accept CreateField with a column with the fid column name and type=real, width=20, precision=0 (qgis/qgis25795)
* fix wrong gpkg_metadata_reference_column_name_update trigger (qgis/qgis42768)
* fix for compatibility with SQLite 3.36.0 and views (4015)
* add error message when prepare fails
* capitalize cartesian as Cartesian for SRS of id -1 'Undefined Cartesian coordinate reference system' (4468)

GPX driver:
* avoid potential integer overflow on writing (ossfuzz 30937)

ILI driver:
* Fix non contiguous curves for COORD/ARC sequences (3755)

KML driver:
* add read support for non-conformant MultiPolygon/MultiLineString/MultiPoint elements (4031)

LIBKML driver:
* add read support for non-conformant MultiPolygon/MultiLineString/MultiPoint elements (4031)

LVBAG driver:
* add field definition for "gerelateerdewoonplaats" (4161)
* add Field verkorteNaam to OpenbareRuimte FT (4286)

Memory driver:
* add support for coordinate epoch (RFC 81)

MITAB driver:
* Fix mapping of mapinfo symbol numbers to corresponding OGR symbol IDs (3826)

MongoDB3 driver:
* fix deprecation warnings with mongocxx >= 3.6

MVT driver:
* use 'number' instead of wrong 'numeric' when generating metadata tilestats (4160)
* reader: be tolerant to broken points generated by Mapserver

OCI driver:
* Don't try to create new layer with TRUNCATE option (4027)

ODBC driver:
* Fix incorrect ODBC type mapping for a number of SQL types
* Optimise testing if mdb is a PGeo/Walk/Geomedia database
* Add support for LIST_ALL_TABLES open option
* Update driver metadata
* Move MDB Tools access driver installation to CPLODBCDriverInstaller, and ensure driver installation is attempted when trying to open an MDB file using the ODBC driver
* Add identify support
* Add GetLayerByName override which can retrieve private layers by name
* Implement IsLayerPrivate support

ODS driver:
* limit maximum number of fields to 2000 by default (ossfuzz 7969)

OGR_GMT driver:
* fix performance issue. (ossfuzz 38158)

OpenFileGDB driver:
* report hiearchical organization of layers
* fix reading of raster fields
* Add a "LIST_ALL_TABLES" open option
* Support detection of private layers
* Correctly list non-spatial, non-private tables which are not present in the GDB_Items table (4463)

PDS4 vector:
* add a LINE_ENDING=CRLF/LF layer creation option for DELIMITED and CHARACTER tables
* fix quadratic performance when creating fields (ossfuzz 37768)
* avoid warning about wrong field subtype when parsing ASCII_Boolean
* fix issue with layer names with non alphanum characters or leading digit

PG driver:
* support postgresql:// connection strings (4570)

PGeo driver:
* add search path for libmdbodbc on Ubuntu 20.04
* use SELECT COUNT(*) for GetFeatureCount() with mdbtools only if it appears to be working (4103)
* Make identification of system tables case insensitive
* Add more internal tables to block list
* Always promote polygon or line layers to multi-type geometries (4255)
* Correctly reflect whether layers have m values in the layer types
* Correctly return failure when getting extent for non-spatial pgeo select layer
* Correctly set no geometry type for pgeo select queries with no shape column
* Add support for field domains (4291)
* Add support for retrieving layer definition and metadata with special "GetLayerDefinition table_name" and "GetLayerMetadata table_name" SQL queries
* Add LIST_ALL_TABLES open option
* Implement IsLayerPrivate()
* Add GetLayerByName override which can retrieve private layers by name (4361)
* Add identify method (4357)

PGDump driver:
* fix performance issue on huge number of columns (ossfuzz 38262)
* set limit to number of created fields to 1600, consistently with PostgreSQL

PLScenes driver:
* add PSScene and SkySatVideo item types to conf, and update other item types
* raster side: make it work with Sentinel2L1C and Landsat8L1G

Shapefile driver:
* fix wrong SRS when reading a WGS 84 SRS with a TOWGS84[0,0,0,0,0,0,0] (3958)
* Communicate why the file size cannot be reached when appending features (4140)

SQLite/Spatialite driver:
* fix crash when calling GetMetadataItem() with domain==nullptr (qgis/qgis43224)
* fix for compatibility with SQLite 3.36.0 and views (4015)
* Implement IsLayerPrivate()
* support reading tables WITHOUT ROWID (3884)
* Add missing SQL datatypes

Tiger driver:
* tag writing side as deprecated and for removal in 3.5 (4215)

VRT driver:
* add support for coordinate epoch (RFC 81)
* Fix spatial filter for geometry column names with space
* fix performance issue (ossfuzz 38629)

WasP driver:
* fix likely wrong condition in line merging (spotted by cppcheck)

WFS driver:

XLS driver:
* Set OLCStringsAsUTF8 capability to TRUE

SWIG Language Bindings

All bindings:
* add VSI_STAT_SET_ERROR_FLAG constant
* Map CPLSetThreadLocalConfigOption() and CPLGetThreadLocalConfigOption()

Python bindings:
* add MDArray.GetNoDataValueAsString() / SetNoDataValueString()
* change gdal.EscapeString() to return a bytearray() when input is bytes(), to make it compatible with backslash escaping of non-ASCII content
* fix GDALPythonObjectFromCStr() to return a bytes() object rather than a corrupted unicode string when invalid UTF-8 sequences are found
* make GDALAttribute.Write() accept a dictionary for JSON attributes, and make GDALAttribute.Read() return a dictionary for a JSON attribute
* fix resampleAlg=gdal.GRA_Sum/Med/Min/Max/Q1/Q3 in gdal.Warp()
* Fix inversion between GRA_ and GRIORA_ enums in gdal.Warp()/Translate()/BuildVRT()
* fix bilinear, cubic, cubicspline resampling for gdal.BuildVRT()
* make GetMetadata(None) work
* fix MDArray.ReadAsArray() with CInt16/CInt32 data type
* fix memleak in gdal|ogr|osr.DontUseExceptions()
* fix crash when reading null strings with MDArray.Read()
* catch potential exception thrown by SWIG_AsCharPtrAndSize()
* Build windows python wrappers with -threads argument
* Python >= 3.8 on Windows: automatically add path with [lib]gdal*.dll with os.add_dll_directory()
* Python >= 3.8 import: fix exception when PATH has nonexistent paths on Windows (3898)
* fix behavior of SetMetadata() when a value is of type bytes (4292)
* no longer use distutils (deprecated since python 3.10) when setuptools is available (4334)
* remove call to __del__() in Geometry.Destroy(), which no longer exists in SWIG 4

GDAL/OGR 3.3.0 Release Notes

In a nutshell...

* RFC 77 (https://gdal.org/development/rfc/rfc77_drop_python2_support.html): Drop Python 2 support in favor of Python 3.6 (#3142)
* RFC 78 (https://gdal.org/development/rfc/rfc78_gdal_utils_package.html): Add a gdal-utils Python package
* New driver:
- STACTA: raster driver to read Spatio-Temporal Asset Catalog Tiled Assets
* Add /vsiadls/ virtual file system for Azure Data Lake Storage Gen2
* Improved drivers: DIMAP, NITF
* Number of improvements in Python bindings
* Add automatic loading of configuration options from a file
* Add support for enumerated, constraint and glob field domains in MEM, FileGDB/OpenFileGDB and GeoPackage drivers
* Deprecation:
- Disable by default raster drivers DODS, JPEG2000(Jasper), JPEGLS, MG4LIDAR, FUJIBAS, IDA, INGR, ZMAP and vector driver ARCGEN, ArcObjects, CLOUDANT, COUCHDB, DB2, DODS, FME, GEOMEDIA, GTM, INGRES, MONGODB, REC, WALK at runtime, unless the GDAL_ENABLE_DEPRECATED_DRIVER_{drivername} configuration option is set to YES. Those drivers are planned for removal in GDAL 3.5
- Perl bindings are deprecated. Removal planned for GDAL 3.5. Use Geo::GDAL::FFI instead
* Removal of BNA, AeronavFAA, HTF, OpenAir, SEGUKOOA, SEGY, SUA, XPlane, BPG, E00GRID, EPSILON, IGNFHeightASCIIGrid, NTV1 drivers. Moved to (unsupported) https://github.com/OSGeo/gdal-extra-drivers repository.
* Continued code linting (cppcheck, CoverityScan, etc.)
* Bump of shared lib major version

Backward compatibility issues

See MIGRATION_GUIDE.txt

GDAL/OGR 3.3.0 - General Changes

General:
* fix build with recent gcc/clang

Build(Unix):
* Support CharLS 2.1 on Debian as well. (3083)
* disable LERC on big-endian hosts, as it is not big-endian ready
* gdal-config (non installed): add -I/gnm in CFLAGS
* fix compilation failure with gcc < 5 in Elasticsearch driver
* configure: Also save LDFLAGS when checking compatibility.
* configure: Ensure --with-geos/sfcgal fail if unavailable.
* configure: check presence of linux/fs.h for Linux builds
* configure: Fix gdal compilation when using proj-8.0.0 and libtiff with static jpeg support
* GDALmake.opt.in: in non-libtool LD_SHARED builds, do not link applications against libgdal dependencies, but only against libgdal itself

Build(Windows):
* add missing makefile.vc for heif

Page 6 of 7

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.