Gdal

Latest version: v3.9.2

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

Scan your dependencies

Page 5 of 7

3.6.2

Not secure
Core

* OGRGenSQLResultsLayer::GetFeatureCount(): fix it to return -1 when base layer
also returns -1 (6925)
* OGRXercesInstrumentedMemoryManager::deallocate(): avoid (likely harmless)
unsigned integer overflow in error code path.
* GPKG/SQLite dialect: fix issues when SQL statement provided to ExecuteSQL()
starts with space/tabulation/newline (6976)
* ArrowArray generic: FillBoolArray(): avoid out-of-bounds write access

Utilities

* ogr2ogr: make -nln flag with GeoJSON output even if a name exists in input
GeoJSON (6920)
* ogr2ogr: silent reprojection errors related to IsPolarToWGS84() in
OGRGeometryFactory::transformWithOptions()

Drivers

GML driver:
* fix recognizing WFS GetFeature response with a very long initial XML element
(6940)
* default srsDimension to 3 for CityGML files (6989)
* fix incorrect behavior when using GFS_TEMPLATE open option with a .gfs that
refers to FeatureProperty/FeaturePropertyList fields (6932)

GeoPackage driver:
* fix threaded RTree building when creating several layers (3.6.0 regression),
by disabling async RTree building
* avoid SQLite3 locking in CreateLayer() due to RemoveOGREmptyTable()

NGW driver:
* remove DCAP_ items set to NO (6994)

Parquet driver:
* update to read and write GeoParquet 1.0.0-beta.1 specification (6646)

Selafin driver:
* Fix DCAP_VECTOR metadata

GDAL/OGR 3.6.1 Release Notes

3.6.1

Not secure
Core

* OGRArrowArrayHelper::SetDate(): simplify implementation
* OGRSpatialReference::importFromWkt(): fix compatibility with PROJ master
9.2.0dev for DerivedProjectedCRS
* OGR layer algebra: make sure result layer has no duplicated field names
(6851)

Utilities

* ogr2ogr: densify points of spatial filter specified with -spat_srs to
avoid reprojection artifacts
* ogr2ogr: discard features whose intersection with -clipsrc/-clipdst
result in a lower dimensionality geometry than the target layer geometry
type (6836)
* ogr2ogr: add warning when -t_srs is ignored by drivers that
automatically reproject to WGS 84 (6859)
* ogr2ogr: make sure an error in GDALClose() of the output dataset result
in a non-zero return code (https://github.com/Toblerity/Fiona/issues/1169)

Vector drivers

CSV driver:
* accept comma as decimal separator in X_POSSIBLE_NAMES, Y_POSSIBLE_NAMES
and Z_POSSIBLE_NAMES fields

FileGDB driver:
* avoid crash in the SDK if passing incompatible geometry type (6836)

FlatGeoBuf driver:
* speed-up writing of DateTime/Date values

GPKG driver:
* fix corruption of spatial index on layers with >= 100 000 features,
with the default background RTree building mechanism introduced in
3.6.0 (https://github.com/qgis/QGIS/issues/51188, #6911) when flushing
transactions while adding features (triggered by ogr2ogr). See announcement
at top of release notes of this version.
* avoid nullptr dereference on corrupted databases
* add support for reading tables with generated columns (6638)
* fix bad performance of ST_Transform() by caching the
OGRCoordinateTransformation object
* improve multi-threaded implementation of GetNextArrowArray() on tables
with FID without holes and when no filters are applied (full bulk
loading)
* FixupWrongRTreeTrigger(): make it work with table names that need to be
quoted (https://github.com/georust/gdal/issues/235)
* Fix opening /vsizip//path/to/my.zip/my.gpkg with NOLOCK=YES open option
* speed-up writing of DateTime/Date values, and fix writing DateTime with
milliseconds with a locale where the decimal point is not dot, and when
spatialite is not loaded

MITAB driver:
* add support for 'Philippine Reference System 1992' datum

MSSQLSPATIAL driver:
* Get UID and PWD from configuration options (6818)

OpenFileGDB driver:
* do not use buggy .spx spatial index found in some datasets
(geopandas/geopandas2253)

Parquet driver:
* make sure that ArrowLayer destructor is available (for plugin building)

PCIDSK driver:
* advertise missing capabilities

PGDump driver:
* Fix support for the TEMPORARY layer creation option

PostgreSQL driver:
* avoid error when inserting single feature of FID 0 (6728)
* Fix support for the TEMPORARY layer creation option

SOSI driver:
* do not advertise GDAL_DCAP_CREATE_FIELD as it is not implemented

SQLite driver:
* Fix relationships determined through foreign keys have tables reversed
* Use 'features' as related table type instead of 'feature' to match
gpkg/filegdb

VDV driver:
* make creation of temporary .gpkg files more robust on some platforms

WFS driver:
* do not remove single or double quote character in a LIKE filter (also
applies to CSW driver)

SWIG bindings:
* add gdal.GetNumCPUs() and gdal.GetUsablePhysicalRAM()

CSharp bindings

* Default to dotnet 6 (6843)

Python bindings

* make Geometry.__str__() use ExportToIsoWkt() (6842)
* setup.py: improve numpy fixing (6700)
* add a 'python_generated_files' target that facilitate generation of bindings without building the lib

GDAL/OGR 3.5.0 Release Notes

In a nutshell...

* [RFC 84](https://gdal.org/development/rfc/rfc84_cmake.html):
Addition of a CMake build system, which deprecates the existing
autoconf/automake and nmake build systems, that will be removed
in GDAL 3.6.0. Users are encouraged to adopt the new CMake build system.
Documentation of the CMake build system is at
https://gdal.org/build_hints.html.
* Add GDT_Int64 and GDT_UInt64 data types and handle them in MEM, GTiff, netCDF and Zarr drivers
* Add read/write OGR Parquet (Apache Parquet) and 'Arrow' (Apache Arrow IPC File/Feather or stream) drivers. Only in CMake builds
* Add OGR HANA database driver. Only in autoconf & cmake builds
* Removed drivers: RDA, JPEG2000 (Jasper-based), CharLS, MG4 LIDAR, FujiBAS, IDA, INGR, ARCGEN, ArcObjects, CouchDB, Cloudant, DB2, FME, Geomedia, MDB (Java Jackess based), GTM, Ingres, MongoDB (old one. MongoDBv3 is the one to use now), REC, Walk, GMT raster, DODS raster and vector
* GDAL and OGR GRASS drivers moved to https://github.com/OSGeo/gdal-grass repository
* Tiger: remove deprecated write side of the driver (4216)
* Remove deprecated SWIG Perl bindings
* Code linting and security fixes
* Bump of shared lib major version

New optional dependencies

* odbc-cpp-wrapper (https://github.com/SAP/odbc-cpp-wrapper): for SAP Hana driver
* Apache arrow-cpp (https://github.com/apache/arrow/tree/master/cpp) libraries: for Parquet and Arrow drivers

New installed files

* lib/gdalplugins/drivers.ini: list of (known) drivers in the order they must be registered, for deterministic behavior with plugins
* shared/gdal/grib2_*.csv: resource files for GRIB driver

Removed files

* Remove deprecated testepsg utility (3993)

Backward compatibility issues

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

Build changes

Build(all):
* Drop support for non-reentrant external libqhull
* support libhdf5 1.13.0 (5061)
* Support latest Poppler versions (requires C++17)
* Support tiledb >= 2.7 (requires C++17)
* Updates for IJG libjpeg-9e
* Require using https://github.com/rouault/pdfium_build_gdal_3_5 for PDF PDFium support
* cpl_config.h: remove lots of unused defines, and severely restrict what we export in non-GDAL compilation mode

Build(autoconf/automake):
* fix detection of OpenEXR >= 3 (4766)
* Add support for PCRE2 (to replace deprecated PCRE) (4822)
* Add support for external libqhull_r (4040)
* add a --with-qhull-pkgname=qhull_r/qhullstatic_r option to select with qhull package to use
* generate test_ogrsf by default (but not installed)
* change default of RENAME_INTERNAL_LIBTIFF/LIBGEOTIFF/SHAPELIB_SYMBOLS to yes
* when building against internal libjpeg, prefix by default libjpeg symbols with gdal_ (4948)
* when building against internal libpng, prefix internal libpng symbols with gdal_ (5303)
* m4/acinclude.m4: fix detection of fseeko/ftello on netBSD
* detect xlocale.h to use LC_NUMERIC_MASK on Mac (5022)
* move generated headers to a generated_headers subdirectory to allow in a same git checkout, to continue to do autoconf in-source-tree builds as well as cmake out-of-source-tree build

Build(nmake):
* nmake.opt: fix wrong variable name in example MSODBCSQL_LIB
* nmake.opt: add a HAVE_ATLBASE_H variable that can be set to NO

Internal libraries

* Internal zlib: update to 1.2.12 (5587)
* Internal libtiff: resync with upstream
* Internal libgeotiff: resync with upstream
* Internal libpng: fix memleak on corrupted file (ossfuzz 44486)
* Internal libjson: update to 0.15.0
* Internal libLerc: Prevent LERC out of bounds access (5598)
* Internal libqhull: update to qhull_r 2020.2 (8.0.2)

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)

Page 5 of 7

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.