Prepare for GDAL 3.6.0

This commit is contained in:
Even Rouault 2022-11-03 18:15:11 +01:00
parent dae35e2ae0
commit bc8cb193f6
No known key found for this signature in database
GPG Key ID: 33EBBFC47B3DD87D
12 changed files with 636 additions and 233 deletions

View File

@ -2,8 +2,8 @@ cff-version: 1.2.0
message: Please cite this software using these metadata or in the CITATION file.
type: software
title: GDAL
version: 3.5.3
date-released: 2022-10-21
version: 3.6.0
date-released: 2022-11-03
doi: 10.5281/zenodo.5884351
abstract: GDAL is a translator library for raster and vector geospatial data
formats that is released under an MIT style Open Source License by the Open

View File

@ -32,7 +32,7 @@ Process :
1) a) Regenerate swig generated files for python bindings and commit if changed.
Currently SWIG 4.0.2 is used.
b) "cd scripts; make completion" to regenerate scripts/gdal-bash-completion.sh
b) "make completion" to regenerate scripts/gdal-bash-completion.sh
if new command line switches have been added. scripts/completionFinder.py
must also be edited before if new utilities/scripts are added/removed.
@ -48,23 +48,20 @@ Process :
3) Update the VERSION file (if not already done)
3.1) Update the version information in the following files:
- ./swig/python/setup.py (gdal python package)
- ./swig/python/gdal-utils/osgeo_utils/__init__.py (gdal-utils python package)
- ./swig/python/README.rst (libgdal)
3.2) For major releases update the VERSION macro in nmake.opt (for 1.6, 1.7etc)
4) Update the GDAL_SOVERSION number at top of gdal.cmake according to the
directions given in the comment preceding it.
5) Prepare release overview in the NEWS file. For example, to get all changes
5) Prepare release overview in the NEWS.md file. For example, to get all changes
from v3.4.0 to current HEAD
git log --reverse -v v3.4.0..HEAD . ":(exclude)autotest" ":(exclude)doc" ":(exclude).github"
- commit new version to NEWS file.
For a feature release, e.g 3.6.0, you can use scripts/generate_log_feature_release.py to generate a log without commit that went in the previous 3.5.x bugfix releases with:
python scripts/generate_log_feature_release.py
Create a News page in Trac for the release, like
http://trac.osgeo.org/gdal/wiki/Release/3.1.0-News
- commit new version to NEWS.md file.
6) If this is a feature release (e.g 3.1), prepare a branch.

478
NEWS.md
View File

@ -1,3 +1,481 @@
# GDAL/OGR 3.6.0 Release Notes
Those notes include changes since GDAL 3.5.0, but not already included in a GDAL 3.5.x bugfix release.
## In a nutshell...
* CMake is the only build system available in-tree. autoconf and nmake build systems have been removed
* OpenFileGDB: write and update support (v10.x format only), without requiring any external dependency, with same (and actually larger) functional scope as write side of the FileGDB driver
* [RFC 86](https://gdal.org/development/rfc/rfc86_column_oriented_api.html): Column-oriented read API for vector layers.
Implemented in core, Arrow, Parquet, GPKG and FlatGeoBuf drivers
* Add read/write raster [JPEGXL driver](https://gdal.org/drivers/raster/jpegxl.html) for standalone JPEG-XL files. Requires libjxl
* Add KTX2 and BASISU read/write raster drivers for texture formats. Require (forked) basisu library
* Vector layer API: table relationship discovery & creation, Upsert() operation
* GeoTIFF: add multi-threaded read capabilities (reqiures NUM_THREADS open option or GDAL_NUM_THREADS configuration option to be set)
* Multiple performance improvements in GPKG driver
* ogr_layer_algebra.py: promoted to official script (#1581)
* Code linting and security fixes
* Bump of shared lib major version
## New optional dependencies
* libjxl: for JPEGXL driver (it was already a potential dependency in past versions, when using internal libtiff, to get the JXL TIFF codec)
* libarrow_dataset: for Parquet driver
* [QB3](https://github.com/lucianpls/QB3): for QB3 codec in MRF driver
* [basisu](https://github.com/rouault/basis_universal/tree/cmake): required for KTX2 and BASISU drivers
## New installed files
* bin/ogr_layer_algebra.py
* include/ogr_recordbatch.h
## Removed installed files
None
## Backward compatibility issues
See [MIGRATION_GUIDE.TXT](https://github.com/OSGeo/gdal/blob/release/3.6/MIGRATION_GUIDE.TXT)
## Build changes
Enhancements:
* Add version suffix to DLL when compiling for MinGW target
* Add a -DBUILD_WITHOUT_64BIT_OFFSET advanced option (#5941)
* Add a USE_ALTERNATE_LINKER option
* Build iso8211 library conditionally to drivers requiring it
Fixes:
* Fix build without PNG (#5742) and JPEG (#5741)
* Various changes for CHERI-extended architectures such CHERI-RISC-V or Arm Morello with sizeof(void*) == 16
* FindMono.cmake: fix setting 'CSHARP_MONO_INTERPRETER_', to avoid having to run CMake twice
* swig/python/CMakeLists.txt: fix SWIG_REGENERATE_PYTHON mode
* FindNetCDF.cmake: fix when running on Ubuntu 16.04 regarding erroneous detection of netcdf_mem.h
* Remove uses of std::regex (#6358)
* honour CMAKE_INSTALL_RPATH for Python bindings, but only if it is an absolute path. (#6371)
* Python: fix to allow building in ubuntu 18.04 (#6443)
* Fixed building position independent static lib
* Fix issues when building/installing in directories with spaces, at least on Unix.
* fix LIBKML linking on Windows Conda
* make sure to register EEDAI driver when built as a plugin
## Internal libraries
* flatbuffers: updated
* internal libtiff: resynchroinzation with upstream
* internal libpng: use __UINTPTR_TYPE__ for png_ptruint when available
## GDAL 3.6.0 - Overview of Changes
### 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/QGIS#40425)
* 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)
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 (ossfuzz#52642)
ù 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/QGIS#42660)
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/qgis#30670)
* 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
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()
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.5.0 Release Notes
## In a nutshell...

View File

@ -1,232 +1,43 @@
= GDAL/OGR X.Y.Z Release Notes (r25919 to rXXXXX) =
# GDAL/OGR X.Y.Z Release Notes
== In a nutshell... ==
## In a nutshell...
* New GDAL drivers:
* New OGR drivers:
* For feature version, generally: Bump of shared lib major version
## New optional dependencies
## New installed files
== New installed files ==
## Removed files
== Backward compatibility issues ==
## Backward compatibility issues
== GDAL/OGR X.Y.Z - General Changes ==
See [MIGRATION_GUIDE.TXT](https://github.com/OSGeo/gdal/blob/release/X.Y/MIGRATION_GUIDE.TXT)
Build(Unix):
## Build changes
Build(Windows):
## Internal libraries
== GDAL X.Y.Z - Overview of Changes ==
## GDAL X.Y.Z - Overview of Changes
Port:
### Port
Core:
### Core
Algorithms:
### Algorithms
Utilities:
### Utilities
Multi driver changes:
### gdal_utils package
AAIGrid:
### Raster drivers
ACE2 driver:
## OGR X.Y.Z - Overview of Changes
ADRG driver:
### Core
BAG driver:
### OGRSpatialReference
BT driver:
### Utilities
CEOS2 driver:
### Vector drivers
DIMAP driver:
DTED driver:
ECW driver:
ENVI driver:
ENVISAT driver:
GeoRaster driver:
GIF driver:
GMT driver:
GTiff driver:
GRIB driver:
GSAG driver:
GS7BG driver:
GTX driver:
GXF driver:
HDF4 driver:
HDF5 driver:
HFA driver:
INGR driver:
ISIS3 driver:
JP2ECW driver:
JP2KAK driver:
JP2OpenJPEG driver:
JPEG driver:
JPEG2000 driver:
KMLSuperOverlay driver:
L1B driver:
MG4Lidar driver:
NetCDF driver:
NITF driver:
Northwood driver:
PDF driver:
PNG driver:
PostgisRaster driver:
Rasterlite driver:
RMF driver:
RPFTOC driver:
RS2 driver:
SDTS driver:
SRP driver:
TIL driver:
TSX driver:
VRT driver:
WCS driver:
WebP driver:
WMS driver:
XYZ driver:
== OGR X.Y.Z - Overview of Changes ==
Core:
OGRSpatialReference:
Utilities:
Multi driver changes:
AVCE00 driver:
AVCBin driver:
CSV driver:
DGN driver:
DXF driver:
FileGDB driver:
Geoconcept driver:
GeoJSON driver:
Geomedia driver:
GFT driver:
GML driver:
ILI driver:
Ingres driver:
KML driver:
Idrisi driver:
LIBKML driver:
MITAB driver:
MSSQLSpatial driver:
MySQL:
NAS driver:
NULL driver:
OCI driver:
ODBC driver:
NTF driver:
OCI driver:
PGeo driver:
PG driver:
PGDump driver:
REC driver:
SDE driver:
Shapefile driver:
S57 driver:
SQLite/Spatialite driver:
TIGER driver:
VFK driver:
VRT driver:
WFS driver:
XLS driver:
== SWIG Language Bindings ==
All bindings:
CSharp bindings:
Java bindings:
Perl bindings:
Python bindings:
## SWIG Language Bindings

View File

@ -24,9 +24,9 @@
#if !defined(DO_NOT_DEFINE_GDAL_DATE_NAME)
#ifndef GDAL_RELEASE_DATE
# define GDAL_RELEASE_DATE 20229999
# define GDAL_RELEASE_DATE 20221103
#endif
#ifndef GDAL_RELEASE_NAME
# define GDAL_RELEASE_NAME "3.6.0dev"
# define GDAL_RELEASE_NAME "3.6.0"
#endif
#endif

View File

@ -6,8 +6,8 @@
# a new member or virtual function in a public C++ class, etc.
# This will typically happen for each GDAL feature release (change of X or Y in
# a X.Y.Z numbering scheme), but should not happen for a bugfix release (change of Z)
# Previous value: 31 for GDAL 3.5
set(GDAL_SOVERSION 31)
# Previous value: 32 for GDAL 3.6
set(GDAL_SOVERSION 32)
# Switches to control build targets(cached)
option(ENABLE_GNM "Build GNM (Geography Network Model) component" ON)

View File

@ -254,7 +254,14 @@ def main(argv):
"gdal_create",
]
ogrtools = ["ogr2ogr", "ogrinfo", "ogrlineref", "ogrtindex", "ogrmerge.py"]
ogrtools = [
"ogr2ogr",
"ogrinfo",
"ogrlineref",
"ogrtindex",
"ogrmerge.py",
"ogr_layer_algebra.py",
]
# parse general options
generalOptions = parseGDALGeneralOptions()

View File

@ -407,7 +407,7 @@ _gdalmove.py()
_get_comp_words_by_ref cur prev
case "$cur" in
-*)
key_list=""
key_list="-s_srs -t_srs -et "
mapfile -t COMPREPLY < <(compgen -W "$key_list" -- "$cur")
return 0
;;
@ -444,11 +444,22 @@ _gdal_proximity.py()
_get_comp_words_by_ref cur prev
case "$cur" in
-*)
key_list=""
key_list="-srcband -dstband -of -co -ot -values -distunits -maxdist -nodata -use_input_nodata -fixed-buf-val -q "
mapfile -t COMPREPLY < <(compgen -W "$key_list" -- "$cur")
return 0
;;
esac
tool=${COMP_WORDS[0]}
case "$prev" in
-ot)
key_list="Byte Int16 UInt16 UInt32 Int32 Float32 Float64 CInt16 CInt32 CFloat32 CFloat64"
mapfile -t COMPREPLY < <(compgen -W "$key_list" -- "$cur")
;;
-of)
key_list="$( $tool --formats | tail -n +2 | cut -f 3 -d ' ')"
mapfile -t COMPREPLY < <(compgen -W "$key_list" -- "$cur")
;;
esac
return 0
}
complete -o default -F _gdal_proximity.py gdal_proximity.py
@ -578,7 +589,7 @@ _gdal_translate()
_get_comp_words_by_ref cur prev
case "$cur" in
-*)
key_list="--help-general --long-usage -ot -strict -if -of -b -mask -expand -outsize -tr -r -unscale -scale -exponent -srcwin -epo -eco -projwin -projwin_srs -a_srs -a_coord_epoch -a_ullr -a_nodata -a_scale -a_offset -nogcp -gcp -colorinterp{_bn} -colorinterp -mo -q -sds -co -stats -norat -noxmp -oo --version --build --license --formats --format --optfile --config --debug --pause --locale "
key_list="--help-general --long-usage -ot -strict -if -of -b -mask -expand -outsize -tr -ovr -r -unscale -scale -exponent -srcwin -epo -eco -projwin -projwin_srs -a_srs -a_coord_epoch -a_ullr -a_nodata -a_scale -a_offset -nogcp -gcp -colorinterp{_bn} -colorinterp -mo -q -sds -co -stats -norat -noxmp -oo --version --build --license --formats --format --optfile --config --debug --pause --locale "
mapfile -t COMPREPLY < <(compgen -W "$key_list" -- "$cur")
return 0
;;
@ -683,7 +694,7 @@ _ogr2ogr()
_get_comp_words_by_ref cur prev
case "$cur" in
-*)
key_list="--help-general -skipfailures -append -update -select -where -progress -sql -dialect -preserve_fid -fid -limit -spat -spat_srs -geomfield -a_srs -t_srs -s_srs -ct -f -overwrite -dsco -lco -nln -nlt -dim --version --build --license --formats --format --optfile --config --debug --pause --locale "
key_list="--help-general -skipfailures -append -upsert -update -select -where -progress -sql -dialect -preserve_fid -fid -limit -spat -spat_srs -geomfield -a_srs -t_srs -s_srs -ct -f -overwrite -dsco -lco -nln -nlt -dim --version --build --license --formats --format --optfile --config --debug --pause --locale "
mapfile -t COMPREPLY < <(compgen -W "$key_list" -- "$cur")
return 0
;;
@ -784,11 +795,48 @@ _ogrmerge.py()
_get_comp_words_by_ref cur prev
case "$cur" in
-*)
key_list=""
key_list="-o -f -single -nln -update -overwrite_ds -append -overwrite_layer -src_geom_type -dsco -lco -s_srs -t_srs -a_srs -progress -skipfailures --help-general --version --build --license --formats --format --optfile --config --debug --pause --locale "
mapfile -t COMPREPLY < <(compgen -W "$key_list" -- "$cur")
return 0
;;
esac
tool=${COMP_WORDS[0]/ogrtindex/ogr2ogr}
case "$prev" in
-f)
key_list="$( $tool --formats | tail -n +2 | grep -o -E '"[^"]+"' | sed 's/\ /__/')"
for iter in $key_list; do
if [[ $iter =~ ^$cur ]]; then
COMPREPLY+=( "${iter//__/ }" )
fi
done
;;
esac
return 0
}
complete -o default -F _ogrmerge.py ogrmerge.py
_ogr_layer_algebra.py()
{
local cur prev
COMPREPLY=()
_get_comp_words_by_ref cur prev
case "$cur" in
-*)
key_list="-input_ds -input_lyr -method_ds -method_lyr -output_ds -output_lyr -overwrite -opt -f -dsco -lco -input_fields -method_fields -nlt -a_srs "
mapfile -t COMPREPLY < <(compgen -W "$key_list" -- "$cur")
return 0
;;
esac
tool=${COMP_WORDS[0]/ogrtindex/ogr2ogr}
case "$prev" in
-f)
key_list="$( $tool --formats | tail -n +2 | grep -o -E '"[^"]+"' | sed 's/\ /__/')"
for iter in $key_list; do
if [[ $iter =~ ^$cur ]]; then
COMPREPLY+=( "${iter//__/ }" )
fi
done
;;
esac
return 0
}
complete -o default -F _ogr_layer_algebra.py ogr_layer_algebra.py

View File

@ -0,0 +1,62 @@
#!/usr/bin/python
import os
import sys
if len(sys.argv) == 1:
VERSION = open("VERSION", "rt").read()
VERSION = VERSION.split(".")
last_release_branch = "%d.%d" % (int(VERSION[0]), int(VERSION[1]) - 1)
else:
last_release_branch = sys.argv[1]
print("Generating /tmp/log.txt with changes not in %s branch" % last_release_branch)
os.system(
f'git log --reverse -v v{last_release_branch}.0..HEAD . ":(exclude)autotest" ":(exclude)doc" ":(exclude).github" > /tmp/log_raw.txt'
)
os.system(
f'git log --no-merges --reverse -v v{last_release_branch}.0..release/{last_release_branch} . ":(exclude)autotest" ":(exclude)doc" ":(exclude).github" > /tmp/log_bugfixes.txt'
)
class Commit(object):
def __init__(self):
self.metadata = ""
self.message = ""
def get_commits(filename):
commits = []
commit = None
for l in open(filename, "rt").readlines():
if l.startswith("commit "):
commit = Commit()
commits.append(commit)
commit.metadata += l
elif commit.message == "" and l == "\n":
commit.message += l
elif commit.message == "":
commit.metadata += l
else:
commit.message += l
return commits
raw_commits = get_commits("/tmp/log_raw.txt")
bugfixes_commits = get_commits("/tmp/log_bugfixes.txt")
set_bugfixes_commit_messages = set()
for commit in bugfixes_commits:
set_bugfixes_commit_messages.add(commit.message)
with open("/tmp/log.txt", "wt") as f:
for commit in raw_commits:
is_bugfix = False
message = commit.message.split("\n")[1]
for bugfix_commit_message in set_bugfixes_commit_messages:
if message in bugfix_commit_message:
is_bugfix = True
break
if not is_bugfix:
f.write(commit.metadata)
f.write(commit.message)

View File

@ -16,7 +16,7 @@ reference documentation, but the `GDAL API Tutorial`_ includes Python examples.
Dependencies
------------
* libgdal (3.5.0 or greater) and header files (gdal-devel)
* libgdal (3.6.0 or greater) and header files (gdal-devel)
* numpy (1.0.0 or greater) and header files (numpy-devel) (not explicitly
required, but many examples and utilities will not work without it)

View File

@ -1,5 +1,5 @@
__package_name__ = "gdal-utils"
gdal_utils_version = (3, 5, 99, 0)
gdal_utils_version = (3, 6, 0, 0)
__version__ = ".".join(str(i) for i in gdal_utils_version)
__author__ = "Frank Warmerdam"
__author_email__ = "warmerdam@pobox.com"

0
swig/python/gdal-utils/scripts/ogr_layer_algebra.py Normal file → Executable file
View File