Skip to content

Commit 91d4b45

Browse files
committed
Merge remote-tracking branch 'upstream/master' into issue-11533
2 parents 1d1e6f7 + 2a041d2 commit 91d4b45

File tree

186 files changed

+9883
-1492
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

186 files changed

+9883
-1492
lines changed

.github/workflows/doc_checks.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ jobs:
5151
-DGDAL_BUILD_OPTIONAL_DRIVERS=OFF \
5252
-DOGR_BUILD_OPTIONAL_DRIVERS=OFF \
5353
-DGDAL_ENABLE_DRIVER_GTI=ON \
54-
-DOGR_ENABLE_DRIVER_GPKG=ON
54+
-DOGR_ENABLE_DRIVER_GPKG=ON \
55+
-DOGR_ENABLE_DRIVER_OPENFILEGDB=ON
5556
cmake --build . -j$(nproc)
5657
5758
- name: Print versions

.github/workflows/ubuntu_20.04/build.sh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ cmake "${GDAL_SOURCE_DIR:=..}" \
1515
-DCMAKE_INSTALL_PREFIX=/tmp/install-gdal \
1616
-DGDAL_USE_TIFF_INTERNAL=OFF \
1717
-DGDAL_USE_GEOTIFF_INTERNAL=OFF \
18-
-DGDAL_USE_EXPRTK=ON \
1918
-DECW_ROOT=/opt/libecwj2-3.3 \
2019
-DMRSID_ROOT=/usr/local \
2120
-DFileGDB_ROOT=/usr/local/FileGDB_API \

CITATION.cff

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ cff-version: 1.2.0
22
message: Please cite this software using these metadata or in the CITATION file.
33
type: software
44
title: GDAL
5-
version: 3.10.0
6-
date-released: 2024-11-01
5+
version: 3.11.0
6+
date-released: 2025-05-05
77
doi: 10.5281/zenodo.5884351
88
abstract: GDAL is a translator library for raster and vector geospatial data
99
formats that is released under an MIT style Open Source License by the Open

HOWTO-RELEASE

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -367,3 +367,4 @@ or your message manually approved, with an administrator of the list.
367367
c) Click on the Activate button
368368
d) Go to https://readthedocs.org/projects/gdal/, and in the "Compile a version" drop-down list,
369369
select the newt "release-X.Y" label and click on the "Compile a version" button
370+
e) Go to https://github.com/OSGeo/gdal/settings/variables/actions/STABLE_BRANCH and update it

NEWS.md

Lines changed: 62 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
# GDAL/OGR 3.11.0 "Eganville" *Preliminary* Release Notes
2-
3-
In progress... up to revision 7587621a9c3ffe5cfaea482025c5f5a22e0a090a
1+
# GDAL/OGR 3.11.0 "Eganville" Release Notes
42

53
GDAL/OGR 3.11.0 is a feature release.
64
Those notes include changes since GDAL 3.10.0, but not already included in a
@@ -13,8 +11,9 @@ Highlight:
1311
* [RFC 104](https://gdal.org/en/latest/development/rfc/rfc104_gdal_cli.html):
1412
Adding a "gdal" front-end command line interface.
1513
- See the [list of commands](https://gdal.org/en/latest/programs/index.html#gdal-application)
16-
- Includes a completely new "gdal raster calc" utility.
17-
- Includes "gdal vsi list/copy/delete" (ports of Python sample scripts)
14+
- Includes new "gdal raster calc" and "gdal raster resclassify" utilities.
15+
- "gdal raster tile", C++ port of gdal2tiles, runs faster (3x to 6x in some cases)
16+
- Includes "gdal vsi list/copy/delete/move/sync" (ports of Python sample scripts)
1817
- Includes "gdal driver {driver_name}" for driver-specific commands.
1918
- Includes smart Bash autocompletion
2019
- Includes C, C++, Python API
@@ -94,7 +93,9 @@ See [MIGRATION_GUIDE.TXT](https://github.com/OSGeo/gdal/blob/release/3.11/MIGRAT
9493
* CMake: Switch from SameMinorVersion to SameMajorVersion compatibility
9594
* CMake: Fix PATHS keyword
9695
* CMake: Use NAMES_PER_DIR where needed
96+
* CMake: Export GDAL library targets
9797
* Fix compiler warning with libxml 2.14.0
98+
* Fix compiler warning with libarrow 20.0
9899

99100
## Docker
100101

@@ -137,6 +138,10 @@ See [MIGRATION_GUIDE.TXT](https://github.com/OSGeo/gdal/blob/release/3.11/MIGRAT
137138
* Add CPLQuietWarningsErrorHandler()
138139
* CPLGetPhysicalRAM(): cache result to avoid multiple file openings on repeated
139140
calls
141+
* infback9: Fix potential vulnerable cloned functions. (#12244, CVE-2016-9840)
142+
* Add VSIMove()
143+
* VSIMkdirRecursive(): fix VSIMdirRecursive('dir_name') (without slash)
144+
* CPLStrdod(): fix setting *endptr for values *starting* with inf/nan/etc. special values
140145

141146
### Core
142147

@@ -167,6 +172,16 @@ See [MIGRATION_GUIDE.TXT](https://github.com/OSGeo/gdal/blob/release/3.11/MIGRAT
167172
support APPEND_SUBDATASET=YES creation option
168173
* Add GDALIsValueInRangeOf()
169174
* Add GDALRasterBand::SetNoDataValueAsString()
175+
* Fix ComputeRasterMinMax() and ComputeStatistics() on a raster with all
176+
values to infinity
177+
* GDALComputeOvFactor(): try to return a power-of-two when possible (#12227)
178+
* Register KEA deferred plugin before HDF5
179+
* Improve error messages when creating a file with a known (deferred loading)
180+
driver but not installed
181+
* tilematrixset: add definitions of WorldMercatorWGS84Quad,
182+
PseudoTMS_GlobalMercator, GoogleCRS84Quad
183+
* GDALDriver::QuietDelete(): allow removing directories, except for containers
184+
of MapInfo and shapefiles
170185

171186
### Algorithms
172187

@@ -223,13 +238,19 @@ See [MIGRATION_GUIDE.TXT](https://github.com/OSGeo/gdal/blob/release/3.11/MIGRAT
223238
* gdalwarp: fail on invalid -et values
224239
* gdalwarp: in term progress, only display the short filename of the file being
225240
processed
241+
* gdalwarp: speed-up warping to COG with heavy transformers (TPS / geoloc)
242+
by avoiding to instantiate it twice (#12170)
243+
* gdalwarp: Emit error on invalid -srcnodata, -dstnodata
244+
* gdalwarp: Guard against numeric parsing failures in INIT_DEST
226245
* gdaldem: hillshade and slope: automatically set scale for geographic and
227246
projected CRS; add -xscale and -yscale
228247
* gdal_footprint: fix -lyr_name on a newly created dataset
248+
* gdal_rasterize: fix/simplify vertical/horizontal detection
229249
* add a gdal_minmax_location.py sample/unofficial script
230250
* gdal2tiles: apply srcnodata values in non-reprojected datasets
231251
* gdal2tiles: remap PIL (Python Imaging Library)' 'antialias' resampling to GDAL
232252
Lanczos (#12030)
253+
* gdal2tiles: fix wrong .kml file name and content at base resolution when --xyz is used
233254
* gdal2tiles: lealeft HTML: Enable the generated tile layer by default
234255
* gdal2tiles: change __version__ to be gdal.
235256
* rgb2pct: add --creation-option (#12031)
@@ -246,6 +267,9 @@ See [MIGRATION_GUIDE.TXT](https://github.com/OSGeo/gdal/blob/release/3.11/MIGRAT
246267
AVIF driver:
247268
* add read-only GeoHEIF support. Requires libavif master (#11333)
248269

270+
BMP driver:
271+
* fix reading files with BITMAPV4/BITMAPV5 headers (3.4 regression) (#12196)
272+
249273
COG driver:
250274
* add support for INTERLEAVE=BAND and TILE creation option (hyperspectral
251275
use cases)
@@ -288,9 +312,17 @@ HEIF driver:
288312
* add CreateCopy support (#11093)
289313
* add read-only GeoHEIF support. Requires libheif 1.19 (#11333)
290314

315+
HTTP driver:
316+
* Avoid warning with 'ogr2ogr out http://example.com/in.gpkg'
317+
291318
JPEGXL driver:
292319
* add support for reading Float16 (as Float32)
293320

321+
Leveller driver:
322+
* Fix for 64-bit platform compatibility (#12166)
323+
* Leveller: Increased highest supported document version number from 9 to 12.
324+
(#12191)
325+
294326
MBTiles driver:
295327
* Fix update with WEBP compression
296328

@@ -299,6 +331,7 @@ MEM driver:
299331

300332
MRF driver:
301333
* Fix JPEG max size and caching relative path handling (#11943)
334+
* DeflateBlock(): avoid potential buffer overrun
302335

303336
netCDF driver:
304337
* add support to identify a geolocation array for a variable that lacks a
@@ -336,6 +369,7 @@ STACIT driver:
336369
VRT driver:
337370
* VRT pixel functions: Add function to evaluate arbitrary expression (#11209)
338371
* VRT pixel functions: remove limitation to at least 2 sources for min/max builtin functions
372+
* VRT pixel functions: add 'reclassify' pixel function (#12232)
339373
* VRT pixel functions: Allow mul and sum to apply constant factor to a single
340374
band
341375
* allow to use a <VRTDataset> instead of a <SourceFilename> inside a
@@ -373,6 +407,7 @@ ZARR driver:
373407
* OGRGeometry classes: implement move constructor and move assignment operator
374408
* OGRGeometry classes: make clone() detect out-of-memory and return null
375409
* Add OGRPolygon::OGRPolygon(double x1, double y1, double x2, double y2)
410+
* Add OGRPolygon::OGRPolygon(const OGREnvelope &envelope) constructor
376411
* Add a OGRGeometryFactory::GetDefaultArcStepSize() method to get value of
377412
OGR_ARC_STEPSIZE config option
378413
* OGRGeometryToHexEWKB(): return empty string if out of memory happened
@@ -433,6 +468,8 @@ GeoJSON driver:
433468
* add a FOREIGN_MEMBERS=AUTO/ALL/NONE/STAC open option
434469
* writing: optimize speed of json_double_with_precision()
435470
* issue more warnings when invalid constructs are found (#11990)
471+
* do not advertise ODsCMeasuredGeometries, OLCMeasuredGeometries and
472+
ODsCMeasuredGeometries
436473

437474
GML driver:
438475
* add OGR_SCHEMA open option (RFC 103)
@@ -452,6 +489,11 @@ GPKG driver:
452489
* fix querying relationships immediately after creating tables
453490
* GPKG and SQLite: Fix out of sync (not restored) fields after a ROLLBACK
454491
(#11609)
492+
* call sqlite3_errmsg() in error messages (#12247)
493+
494+
KML driver:
495+
* when reassembling multi-line text content, use newline character instead of
496+
space (#12278)
455497

456498
LIBKML driver:
457499
* fix error when creating a Id field of type integer (#11773)
@@ -494,6 +536,10 @@ PG driver:
494536
PGDump driver:
495537
* detect out-of-memory on large geometries
496538

539+
S57 driver:
540+
* fix nullptr deref on invalid file when S57 data resource files are missing
541+
(ossfuzz#415669422)
542+
497543
Shapefile driver:
498544
* ogr2ogr to Shapefile: write DateTime as ISO8601 string, both in Arrow and
499545
non-Arrow code paths
@@ -506,6 +552,10 @@ SQLite driver:
506552
* SQLite/GPKG: run PRELUDE_STATEMENTS after end of initialization, in
507553
particular after Spatialite loading (#11782)
508554

555+
TopoJSON driver:
556+
* do not advertise Z capabilities
557+
* read a top level 'crs' member (#12216)
558+
509559
VFK driver:
510560
* Fix invalid parcel "banana" geometries (#3376, #11688)
511561

@@ -515,12 +565,15 @@ XODR driver:
515565

516566
## SWIG Language Bindings
517567

568+
* Add Driver.CreateVector()
569+
518570
### CSharp bindings
519571

520572
* Add VSIGetMemFileBuffer
521573

522574
### Python bindings
523575

576+
* Accept CRS definition in osr.SpatialReference constructor
524577
* Add osgeo.gdal.VSIFile class
525578
* Add a osgeo.gdal_fsspec module that on import will register GDAL VSI file
526579
system handlers as fsspec AbstractFileSystem
@@ -534,6 +587,10 @@ XODR driver:
534587
* Accept NumPy types in Driver.Create
535588
* Support os.PathLike inputs to Driver.Rename, Driver.CopyFiles
536589
* Expose gdal_translate -epo and -eco from Python
590+
* Add Dataset.ReadAsMaskedArray()
591+
* Add mask_resample_alg arg to ReadAsArray methods
592+
* fix compatibility issue with SWIG 4.3.1 and PYTHONWARNINGS=
593+
* avoid deprecation warning with setuptools >= 77.0.3
537594

538595
# GDAL/OGR 3.10.3 Release Notes
539596

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3.11.0
1+
3.12.0

alg/gdalwarper.cpp

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2423,3 +2423,55 @@ GDALWarpOptions *CPL_STDCALL GDALDeserializeWarpOptions(CPLXMLNode *psTree)
24232423

24242424
return psWO;
24252425
}
2426+
2427+
/************************************************************************/
2428+
/* GDALGetWarpResampleAlg() */
2429+
/************************************************************************/
2430+
2431+
/** Return a GDALResampleAlg from a string */
2432+
bool GDALGetWarpResampleAlg(const char *pszResampling,
2433+
GDALResampleAlg &eResampleAlg, bool bThrow)
2434+
{
2435+
if (STARTS_WITH_CI(pszResampling, "near"))
2436+
eResampleAlg = GRA_NearestNeighbour;
2437+
else if (EQUAL(pszResampling, "bilinear"))
2438+
eResampleAlg = GRA_Bilinear;
2439+
else if (EQUAL(pszResampling, "cubic"))
2440+
eResampleAlg = GRA_Cubic;
2441+
else if (EQUAL(pszResampling, "cubicspline"))
2442+
eResampleAlg = GRA_CubicSpline;
2443+
else if (EQUAL(pszResampling, "lanczos"))
2444+
eResampleAlg = GRA_Lanczos;
2445+
else if (EQUAL(pszResampling, "average"))
2446+
eResampleAlg = GRA_Average;
2447+
else if (EQUAL(pszResampling, "rms"))
2448+
eResampleAlg = GRA_RMS;
2449+
else if (EQUAL(pszResampling, "mode"))
2450+
eResampleAlg = GRA_Mode;
2451+
else if (EQUAL(pszResampling, "max"))
2452+
eResampleAlg = GRA_Max;
2453+
else if (EQUAL(pszResampling, "min"))
2454+
eResampleAlg = GRA_Min;
2455+
else if (EQUAL(pszResampling, "med"))
2456+
eResampleAlg = GRA_Med;
2457+
else if (EQUAL(pszResampling, "q1"))
2458+
eResampleAlg = GRA_Q1;
2459+
else if (EQUAL(pszResampling, "q3"))
2460+
eResampleAlg = GRA_Q3;
2461+
else if (EQUAL(pszResampling, "sum"))
2462+
eResampleAlg = GRA_Sum;
2463+
else
2464+
{
2465+
if (bThrow)
2466+
{
2467+
throw std::invalid_argument("Unknown resampling method");
2468+
}
2469+
else
2470+
{
2471+
CPLError(CE_Failure, CPLE_IllegalArg,
2472+
"Unknown resampling method: %s.", pszResampling);
2473+
return false;
2474+
}
2475+
}
2476+
return true;
2477+
}

alg/gdalwarper.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,9 @@ CPL_C_END
333333
#include <vector>
334334
#include <utility>
335335

336+
bool GDALGetWarpResampleAlg(const char *pszResampling,
337+
GDALResampleAlg &eResampleAlg, bool bThrow = false);
338+
336339
/************************************************************************/
337340
/* GDALWarpKernel */
338341
/* */

apps/CMakeLists.txt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ add_library(
3636
gdalalg_raster_overview_add.cpp
3737
gdalalg_raster_overview_delete.cpp
3838
gdalalg_raster_read.cpp
39+
gdalalg_raster_reclassify.cpp
3940
gdalalg_raster_reproject.cpp
4041
gdalalg_raster_resize.cpp
4142
gdalalg_raster_roughness.cpp
@@ -45,6 +46,7 @@ add_library(
4546
gdalalg_raster_sieve.cpp
4647
gdalalg_raster_slope.cpp
4748
gdalalg_raster_stack.cpp
49+
gdalalg_raster_tile.cpp
4850
gdalalg_raster_tpi.cpp
4951
gdalalg_raster_tri.cpp
5052
gdalalg_raster_unscale.cpp
@@ -110,7 +112,9 @@ gdal_standard_includes(appslib)
110112
target_compile_options(appslib PRIVATE ${GDAL_CXX_WARNING_FLAGS} ${WFLAG_OLD_STYLE_CAST} ${WFLAG_EFFCXX})
111113
target_include_directories(
112114
appslib PRIVATE $<TARGET_PROPERTY:gdal_vrt,SOURCE_DIR> $<TARGET_PROPERTY:ogrsf_generic,SOURCE_DIR>)
113-
115+
if (HAVE_ATOMIC_UINT64_T_WITH_ATOMIC)
116+
gdal_target_link_libraries(appslib PRIVATE atomic)
117+
endif()
114118
gdal_target_link_libraries(appslib PRIVATE PROJ::proj)
115119

116120
set_property(TARGET appslib PROPERTY POSITION_INDEPENDENT_CODE ${GDAL_OBJECT_LIBRARIES_POSITION_INDEPENDENT_CODE})
@@ -310,6 +314,7 @@ set(GDAL_DATA_FILES
310314
${CMAKE_CURRENT_SOURCE_DIR}/data/gdalinfo_output.schema.json
311315
${CMAKE_CURRENT_SOURCE_DIR}/data/gdalmdiminfo_output.schema.json
312316
${CMAKE_CURRENT_SOURCE_DIR}/data/ogrinfo_output.schema.json
317+
${CMAKE_CURRENT_SOURCE_DIR}/data/leaflet_template.html
313318
)
314319
set_property(
315320
TARGET ${GDAL_LIB_TARGET_NAME}

apps/data/gdalmdiminfo_output.schema.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,15 +166,20 @@
166166
"type": "string",
167167
"enum": [
168168
"String",
169+
"Int8",
169170
"Byte",
170171
"Int16",
171172
"UInt16",
172173
"Int32",
173174
"UInt32",
175+
"Int64",
176+
"UInt64",
177+
"Float16",
174178
"Float32",
175179
"Float64",
176180
"CInt16",
177181
"CInt32",
182+
"CFloat16",
178183
"CFloat32",
179184
"CFloat64"
180185
]

0 commit comments

Comments
 (0)