Skip to content

SHPOpenLL(): avoid GDAL specific error message when .shx is missing #130

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 29, 2024

Conversation

rouault
Copy link
Member

@rouault rouault commented May 29, 2024

Fixes #129

Copy link
Contributor

@thbeu thbeu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just to avoid the trailing blank.

rouault added a commit to rouault/gdal that referenced this pull request May 29, 2024
rouault added a commit to rouault/gdal that referenced this pull request May 29, 2024
Copy link
Contributor

@thbeu thbeu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just to clarify: Gdal does not need to change its build. But other distributors should define SHP_RESTORE_SHX_HINT_MESSAGE at build time.

Edit: SHPRestoreSHX is a library method, thus not GDAL specific.

rouault added a commit to rouault/gdal that referenced this pull request May 29, 2024
rouault added a commit to rouault/gdal that referenced this pull request May 29, 2024
@rouault rouault merged commit 011083c into OSGeo:master May 29, 2024
6 checks passed
@thbeu
Copy link
Contributor

thbeu commented May 29, 2024

Thanks for the fast fix. 🚀

rouault added a commit to OSGeo/gdal that referenced this pull request May 29, 2024
clrpackages pushed a commit to clearlinux-pkgs/gdal that referenced this pull request Mar 25, 2025
AbelPau (29):
      Miramon: fixes and additional tests
      MiraMonVector fixes (2) tests improvements (+10) (#9744)
      MiraMonVectorDriver: deleting unused functions/parameters (#9759)
      MiraMonVector driver. Adding tests
      MIraMonVector Fix.
      MiraMonVector: fix memleak in creation error case (#9805)
      Miramon: correcting Boolean Field (and removing unnecessary things) (#9812)
      MiraMon: precision related fixes, and other fixes (#9815)
      Little fixes in MiraMon metadata files
      MiraMonVector fix: better condition & variable type (#9835)
      MiraMonVector: Two minor corrections (#9840)
      MiraMonVector: Fix unsigned integer overflows (ossfuzz#68585) (#9841)
      MiraMonVector: adding wich polygon cycles the arc in the metadata info
      MiraMonVector: free allocated memory
      MiraMonVector: Adding more matchs in the look-up table MM_m_idofic.csv
      MiraMonVector: Fixing error in linestring (from not polygon) metadata file
      MiraMonVector: Fixing the way that Z are written in MiraMon layers (#9938)
      MiraMonVector: Fixing chromium bug 68809
      Fixing chromium bug 68809 correctly
      MiraMonVector: fix a case of sensitive comparison
      MIraMonVector: fixing MMResetFeatureRecord
      MiraMonVector: fixing accepted metadata versions/subversions
      MiraMonVector: fix Issue 70860 in oss-fuzz
      MiraMonVector: Fix Issue 69168 oss-fuzz
      MiraMonVector: fix memory leak on corrupted products (oss-fuzz 369216702) (#10872)
      MiraMonVector Fix issue 5250834764464128
      MiraMonVector: fix issue 372358476
      MiraMonVector: fix a case of mutirecord (lists) in some fields (#11148)
      MiraMonVector: Fix issue 393742177 oss-fuzz

Alan Thomas (1):
      Improve error message when OGRSimpleCurve point limit is exceeded

AlbertXingZhang (1):
      OpenFileGDB: add missing GetIndexCount() in FileGDBTable::CreateIndex

Alessandro Pasotti (33):
      [argparse] Return argument reference from add methods
      gdal_contour: use GDALArgumentParser (#9739)
      typo in gdaltindex.rst
      argparse: update to upstream b85a0a414d415 with store_into<set>
      GDALArgumentParser: add add_layer_creation_options_argument method
      Use add_layer_creation_options_argument when possible
      [gdal_tindex] Use GDALArgumentParser
      [ogrtindex] Use GDALArgumentParser (#9832)
      [gdal_footprint] Use GDALArgumentParser (#9845)
      [argparser] Add method for -dsco option
      Apply dsco changes to gdal_footprint
      [gdal_create] Use GDALArgumentParser (#9884)
      [gdalmdiminfo] Use GDALArgumentParser (#9896)
      [gdalmdimtranslate] Use GDALArgumentParser (#9912)
      GDALArgumentParse: support sub-parsers (take ownership)
      [gdaldem] Use GDALArgumentParser
      Fix MSVC warning
      [argparse] update library
      Apply https://github.com/p-ranav/argparse/pull/360
      Remove scan<double> now that argparse supports multiple actions
      [gdalmanage] Use GDALArgumentParser
      [gdalmanage] Update/fix documentation
      [gdalmanage] Tests
      [ogrlineref] Use GDALArgumentParser (#10147)
      [gdalwarp] Fix -ovr {absolute_value} (#10193)
      [gpkg] Implement ALTER TABLE RENAME for rasters (#10213)
      [gdal_contour] Allow to use -fl with -i and -e (#10471)
      gdal_rasterize: port to argument parser (#10741)
      [gdal_rasterize] Fix crash with no options after argparser (#10770) (master only)
      [gdal_contour] Fix argparse nargs issue
      [gdal_contour] Fix regression when fixed level == raster max (#10885)
      [gdal_rasterize] allo -q in library mode
      [gdal_rasterize] Also accept doubles for -ts (#11830)

Anders Barfod (1):
      Docs: update pmtiles.rst with examples (#9977)

Andrea Giudiceandrea (6):
      Fix coordinate_epoch.rst since PROJ 9.4
      Fix verb tense in ogr2ogr.rst
      Fix verb tense in gdalwarp.rst
      Fix verb tense in gdaltransform.rst
      docs ogrinfo: add a note to -so option with -json
      Docs: fix incorrect and missing World Files ref

Andrew Bell (12):
      argparse.hpp: robustify some store_into() methods
      viewshed: rework to be more C++ish
      viewshed: Use member functions and clarify variable names.
      gdal_viewshed: multi-threaded implementation (#9991)
      Viewshed: create current extent (no functional change) (#10184)
      Viewshed: address potential issues with line-based interpolation (#10237)
      Viewshed: support observers to left and right of input raster (#10264)
      Viewshed: support observer above and below the raster. (#10352)
      Thread pool: Use std::function as pool job function (#10505)
      Add support for accepting std::function<void()> in a job queue. (#10628)
      Add support for cumulative viewshed (#10674)
      GDALDatasetPamInfo: use std::array<> for adfGeoTransform member (#10795)

Andrew C Aitchison (2):
      flake8 config does not support inline comments
      GTIFF: store bJXLLossless as a bool

Andrew Harvey (1):
      Update gdal2tiles.rst typo webp->jpeg in jpeg options section (#10286)

Andrew Johnston (1):
      Fix rendering of code block in python readme

Anywalker (1):
      OpenFileGDB: exclude straight line segments when parsing arcs

Bart Louwers (1):
      Link to felt/tippecanoe

Ben Lewis (1):
      User configuration docs: mention default User-Agent (#10124)

Ben Peters (1):
      examples/crs2crs2grid.py: Update to work with current data output format from HTDP (fixes #2655) (#10389)

Björn Harrtell (1):
      FlatGeobuf: fix reading of conformant single-part MultiLineString (#10775)

Brad Hards (3):
      Doc: fix language related to georeferencing source selection (#9919)
      heif: make simple identification more robust (#10618)
      avif: typo fix

Curtis Doty (2):
      Avoid confusing/misleasing error
      Show proper error when lcms2 is missing

Dan Baston (3):
      autotest: Add a VSIFile wrapper class (#8222)
      Python bindings: Avoid linear scan in gdal_array.NumericTypeCodeToGDALTypeCode (#10694)
      gdalwarp: allow specifying units of warp memory (#10976)

Daniel Baston (50):
      Python bindings: Make ogr.DataSource a synonym of gdal.Dataset
      Python bindings: Remove ogr.Driver
      Doc: Provide Python docstrings for some ogr functions
      Python API: Ensure that ogr functions return known type if gdal not imported
      GDALDriver: Support OGR API Spy
      autotest ograpispy.py: use tmp_path
      autotest: avoid calling deprecated Dataset.Destroy
      CMake: Add missing dependency on gdal_operations_docs.i
      Doc: Add Python docstring for gdal.FillNodata
      Doc: Set rst_prolog to make substitutions.rst available in all files
      Doc: Update option lists with info on how to set options
      Doc: substitutions.rst: shorten Python references
      OGRGeometry: Add BufferEx method
      Doc: Add comments on how to update API documentation
      Python scripts: Use decorator to enable exceptions
      Python bindings: Avoid crash when using orphaned subgeometry
      Doc: Updates to download.rst
      Doc: Move 3.8.5 to download_past.rst
      Doc: Add ancient releases to download_past.rst
      Doc: Add some dev info from wiki
      CMake: Remove unneeded dependency on Java AWT
      Doc: Use html_static_path and html_extra_path to handle non-rst HTML content
      Doc: Add ReadTheDocs configuration
      Doc: Setup redirects using ReadTheDocs
      Doc: Hide TOC using rst syntax
      Doc: Avoid shellcheck warning in RTD script
      Doc: Restore links to PDF and ZIP versions of docs
      Doc: Config changes to support ReadTheDocs addons
      Doc: Add a robots.txt file
      Doc: redirect pre-versioned URLs to /en/latest/
      Doc: Add additional static resources
      CI: Reduce scope of doc_build.yml, rename to doc_checks.yml
      CI: Fix warning from spell check
      CI: Avoid compiling tests in doc checks
      Doc: Fix URL in GitHub edit links
      Doc: Restore driver list on main page
      Doc: Make sidebar version text visible
      Doc: Add Python doc for SpatialReference.StripVertical
      Doc: Clarify behavior of gdalwarp -et option
      GDALCreateApproxTransformer: Clarify dfMaxError description in docstring
      CI: Fix ReadTheDocs test for [ci skip] with multiline commit messages
      Doc: Add more detail to THRESHOLD config option
      Doc: Add high-level description of gdalwarp procedure
      Doc: Add description of gdalwarp source pixel weighting
      autotest: add tests for OGR AddCurveDirectly methods
      OGRGeometry: Factor isRingCorrectType out of checkRing
      CPLDebug: Accept values of YES,TRUE,1
      Doc: Add summary of user survey
      Docs: Clarify behavior of gdalbuildvrt -te when source extends beyond inputs.
      VRT processed dataset: Read scale and offset from src dataset

Daniel Evans (2):
      Fix "intput" typo in gdal_merge.rst
      Update ESRI WMS links

Dirk Vanden Boer (1):
      Add new shapelib API functions to the symbol rename header

Edouard Choinière (3):
      CI: Add branches-ignore on pushes to backport branches for CodeQL workflow
      CI: Add branches-ignore on pushes to dependabot branches
      CI(CodeQL): Speed up workflow by not compiling tests and using debug builds

Erik Schnetter (3):
      gdalmultidim.cpp: Remove superfluous semicolon
      Zarr: Allow int64 attributes (#10065)
      gdalmultidim: correct error message (#10435)

Even Rouault (1488):
      CI: add a stale target for pull requests without recent activity
      Update master to 3.10.0dev
      CI: disabled running Python autotests on OSX Arm64 (works around #9723)
      GPKG: suppress Coverity Scan false positive about missing lock (CID 1525521)
      VSIMemHandle::Eof(): add lock (CID 1525499)
      MVT: add lock (CID 1525450)
      GTiff: replace CPLMutex* usage with std::mutex
      GTiff: avoid Coverity Scan false positive about missing lock (CID 1525497, 1525186)
      CPLReleaseLock(): suppress Coverity false positive (CID 1525432)
      cpl_vsil_gzip.cpp: avoid accessing a variable outside of a lock (CID 1525353)
      /vsicurl: suppress false positive missing_lock (CID 1525347, 1525063)
      GDALDestroyGlobalThreadPool(): destroy it under mutex (CID 1525281)
      cpl_worker_thread_pool.cpp: suppress Coverity Scan false positive about missing lock (CID 1525235)
      GWKProgressMonoThread(): suppress Coverity Scan false positive about missing lock (CID 1525221)
      CPLMutexHolder constructor: try to avoid Coverity LOCK_EVASION warning (CID 1525195)
      test_cpl.cpp: suppress Coverity Scan false positive about missing lock (CID 1525189)
      overview.cpp: suppress Coverity Scan false positive about missing lock (CID 1525129, 1525097)
      GDALGridProgressMonoThread(): suppress Coverity Scan false positive about missing lock (CID 1525052)
      GDALSuggestedWarpOutput2(): make changes of PR #9336 honour SRC_METHOD=NO_GEOTRANSFORM
      TileDB: fix crash in previous commit
      TileDB: use GEOM_WKB type when creating geometry columns with TileDB >= 2.21
      gdalurlopen(): handle http.client.RemoteDisconnected exception
      CMake: add missing dependency to generate_gdal_version_h target when building {plugin}_core targets
      Miramon: avoid harmless unsigned integer overflow (https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=68240)
      Miramon: avoid unsigned integer overflow (https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=68241)
      TileDB: remove TILEDB_DEPRECATED suppression
      CMake: require TileDB >= 2.15
      cppcheck.sh: avoid warnings related to PROJ
      Add OSRIsDerivedProjected() / OGRSpatialReference::IsDerivedProjected()
      OGR_CT: use PROJJSON rather than in WKT:2019
      TileDB: cleanups related to requiring TileDB >= 2.7
      TileDB: cleanups related to requiring TileDB >= 2.9
      TileDB: cleanups related to requiring TileDB >= 2.10
      TileDB: cleanups related to requiring TileDB >= 2.11
      TileDB: cleanups related to requiring TileDB >= 2.14
      TileDB: make cppcheck happy
      TileDB: cleanups related to requiring TileDB >= 2.15
      ossfuzz build.sh: update for latest poppler [ci skip]
      Update p-ranav/argparse to latest master
      ogrinfo and ogr2ogr: update to use store_into(GIntBig&)
      GDALArgumentParser: fix dealing with positional arguments that are negative numeric values (needed for gdallocationinfo)
      gdallocationinfo: use GDALArgumentParser
      Miramon: CMakeLists.txt: tag the driver as PLUGIN_CAPABLE NO_DEPS, instead of just PLUGIN_CAPABLE
      GDALOpen(): avoid double '.' in error messages related to plugin drivers
      CI: add a configuration testing numpy 2.0.0rc1
      Docker: update ubuntu-small to 24.04 [ci skip]
      ogr2ogr.rst: clarify -gcp
      pyproject.toml: use numpy>=2.0.0rc1 for python >=3.9
      Docker: update ubuntu-full to 24.04 [ci skip]
      GDALVectorInfo(): fix 3.9.0beta1 regression regarding passing layer names
      Doc: JSon -> JSON
      Update scripts/typos_allowlist.txt [ci skip]
      Shapelib: resync with upstream
      OGRPGDecodeVersionString(): cleanup
      swig/python/README.rst: document workaround if numpy 2 cannot be installed
      source/api/python_bindings.rst: resync with swig/python/README.rst
      docker/ubuntu-full/Dockerfile: re-enable QB3 [ci skip]
      Miramon: avoid Unsigned-integer-overflow in MMCreateExtendedDBFIndex()
      docker/ubuntu-full/bh-proj.sh: shellcheck fix
      Doc: updates to support building with upcoming update proj-docs Docker image updated to Ubuntu 24.04
      Internal libtiff: EvaluateIFDdatasizeReading(): avoid unsigned integer overflow (master only)
      Arrow/Parquet: fix writing empty point Z with GEOMETRY_ENCODING=GEOARROW_INTERLEAVED, and test spatial filtering of that encoding
      CI: fix Conda platform names for latest GHA MacOS name changes
      Revert "CI: fix Conda platform names for latest GHA MacOS name changes"
      CI: conda.yml: change macos-latest to macos-13
      doc_build.sh: fix 'deploy ssh key' step
      CI: add a Ubuntu 24.04 config
      ogr2ogr.rst: remove out of topic LIMIT 2
      typo fixes [ci skip]
      gdalinfo and ogrinfo -json: add newline character at end of JSON output
      OGRFeature::SetField(): add warnings when detecting some lossy conversions (refs #9792)
      OGRLayer::WriteArrowBatch(): add tolerance for field type mismatches if int32/int64/real
      Parquet: fix ResetReading() implementation, when using the ParquetDataset API and when there's a single batch
      Parquet: fix opening single file Parquet datasets with the ParquetDataset API when using PARQUET:filename.parquet
      Really fix Coverity Scan warning
      OGRCloneArrowArray(): add missing support for 'tss:' Arrow type
      NEWS.md: update with 3.9.0beta2 [ci skip]
      dependabot.yml: change interval to monthly
      TileDB: C++ify things a bit
      tiledb: modernize tests
      tiledb_write.py: test ds.GetSubDatasets()
      TileDB raster: allow to potentially read/write more than 2GB at once
      TileDB: IRasterIO(): fix checks related to pixel/line/band spacing for optimized code paths
      TileDB: CopySubDatasets(): support very large number of blocks and very large block size
      misc.py: add exemption for TileDB
      TileDB raster: in Create()/CreateCopy() mode, defer dimension/domain/attribute/array creation at the maximum
      TileDB: CreateCopy(): return nullptr in error cases
      TileDB raster: implement GetNoDataValue()/SetNoDataValue()
      gdal_viewshed, nearblack, ogr2ogr: call store_into() after default_value()
      HDF5: support HDF5EOS metadata where the GROUP=GridStructure has an empty sub GROUP=Dimension
      HDF5: implement GetOffset() and GetScale() for netCDF metadata items add_offset and scale_factor
      gdal2tiles: support an input dataset name not being a file (fixes #9808)
      python_bindings.rst: fix formatting
      Doc building: import GDAL Python bindings early
      CI: re-enable MacOS Python tests
      docker/ubuntu-full/Dockerfile: update OGDI packaging bug workaround [ci skip]
      TileDB multidim: prevent infinite recursion when opening an array in a group where there are 2 or more 2D+ arrays
      TileDBGroup::OpenMDArray(): fix opening an array, member of a group, which has no explicit name
      doc/Makefile: add a 'doxygen_check_warnings' target to ease local checks
      CI: mingw64: add mingw-w64-x86_64-blosc dependency
      ogrtindex.rst: fix example
      Make sure GDALDestroy() appears in Doxygen output
      Deprecate GDALDestroyDriverManager() and OGRCleanupAll()
      Remove MSVC 'horrible hacks' dating back from 2014, and hopefully no longer needed
      doc/Makefile: make it work with any BUILDDIR (refs #5484)
      CMake: add html, man, latexpdf, doxygen, doxygen_check_warnings, clean_doc targets
      CI: code_checks.yml: run doxygen check on ghcr.io/osgeo/proj-docs to get Doxygen >= 1.9.3
      Warper: add a NODATA_VALUES_PCT_THRESHOLD warping option
      gdal2tiles: add --nodata-values-pct-threshold option
      Rename variable to avoid false positive typo alert
      typo fixes
      VSI CopyFile() implementations: make them actually robust to pszSource==nullptr
      Add VSICopyFileRestartable() to allow restart of upload of large files
      CheckCitationKeyForStatePlaneUTM(): avoid integer overflow (fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=68675)
      Doc: indicate how to configure /vsis3/ with Minio
      Fix 2 minor Coverity Scan warnings
      /vsigs/: fix RmdirRecursive() on an empty directory
      /vsigs/ UnlinkBatch(): make sure that path config options are checked for the deleted files and not '/vsigs/batch/'
      /vsiaz/ UnlinkBatch(): make sure that path config options are checked for the deleted files
      scripts/completionFinder.py: fix it to be compatible of the output of GDALArgumentParser, and other fixes
      Refresh gdal-bash-completion.sh
      Java and CSharp bindings: do not build sample/tests programs if BUILD_TESTING=OFF
      NEWS.md: refresh with 3.9.0rc1 [ci skip]
      PG: LoadTables(): do not list ogr_system_tables schema in non-PostGIS mode or LIST_ALL_TABLES=YES
      PG: fix retrieving layer description in non-PostGIS mode
      ogr_pg.py: make only_without_postgis annotation really test non-PostGIS mode
      PG: emit warning when using GEOMETRY_NAME!=wkb_geometry on non-PostGIS enabled database (fixes #9852)
      PG: avoid aborting transactions when calling LoadMetadata() and ogr_system_tables.metadata doesn't exist
      GenBIN: avoid integer overflow (fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=68709)
      VSICopyFileRestartable(): add support for multi-threading in /vsis3/ implementation
      PDF: C++'ify m_papoLayers member
      PDF vector reading: fix wrong order of matrix multiplication for 'cm' operator... (fixes #9870)
      PDF vector reading: make ExploreContentsNonStructured() be able to parse OGCs in Resources.XObject.Resources.Properties as generated by ArcGIS 12.9 (fixes #9870)
      PDF vector reading: just ignore unknown objects referenced by /Do (fixes #9870)
      PDF vector reading: add debug traces with stream line number
      PDF vector reading: make GraphicState a inner class of PDFDataset
      PDF vector reading: propagate GraphicState when recursively calling ParseContent
      gdaltest.download_file(): make chunk size configurable
      ogr_pdf.py: add test case for #9870
      AVCBin: avoid integer overflow (fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=68814)
      MapInfo .mif/.tab: implement read/write support for MapInfo logical type to OGR OFSTBoolean
      PDF: fix build with PoDoFo >= 0.10 with C++20 compilation (fixes #9875)
      cpl_recode.cpp / swq_op_general.cpp: fix compiler errors in C++20 mode
      netCDF: fix build error with gcc 13.2 -std=c++23
      VRT: avoid 'Deprecate implicit capture of this via [=]' warnings in C++20
      Workaround various false-positive -Wnull-dereference warnings in C++23 -O2 with gcc 13.1
      GMLAS: fix gcc 13.2 warning
      .github/workflows/alpine/build.sh: use CMAKE_CXX_STANDARD=23
      vsis3.py: simplify testing a bit
      MITAB .tab: AlterFieldDefn(): fix data corruption when altering (for example) renaming a Integer/Float32 field of size 4 (or Integer64/Float64 field of size 8
      gdal_priv.h: fix issue with Doxygen unnamed parameters for methods of GDALDataset and GDALRasterBand
      GML: fix memory leak due do xlink:href substitution in a non-nominal case.
      Doc: better explain what NoDataFromMaskSource is used for
      Miramon: remove always true/false conditions
      GTiff: fix nMaxBits computation for Float32/Float64
      Workaround various false positive of cppcheck 2.13.0 (as shipped in ubuntu 24.04)
      cppcheck.sh: add/update a few defines
      CI: add a job with cppcheck of Ubuntu 24.04
      STACIT: add a OVERLAP_STRATEGY opening option to determine how to handle sources fully overlapping others, and taking into accout nodata values
      Doc: advertize 3.9.0
      Fix -Werror=calloc-transposed-args with gcc 14
      Fix false-positive -Wnull-dereference with gcc 14
      configure.cmake: fix build with mingw64 with gcc 14
      test_gdalmdimtranslate_classic_to_multidim(): make it robust to gcore/data/byte.tif.aux.xml presence
      Fix a few tests to not create data/byte.tif.aux.xml
      autotest/conftest.py: detect unintended creation of gcore/data/byte.tif.aux.xml
      CI: Tune Ubuntu 22.04 VM ASLR to workaround issue with clang ASAN
      FlatGeoBuf: more explicit error message in case of feature geometry type != layer geometry type
      CI: remove useless skip ci conditions
      Rasterize: mention that behavior is unspecified when the polygon is just touching the pixel center in ALL_TOUCHED=NO mode
      docker/ubuntu-full: update to tiledb 2.23.0 [ci skip]
      OSR importFromESRI() Arc/Info 7 .prj: fix importing LAMBERT_AZIMUTHAL with a 'radius of the sphere of reference'
      docker/README.md: advertize 3.9.0 images [ci skip]
      CI Conda: remove no longer needed patches
      gti.py: remove temporary file
      GDALIdentifyDriverEx(): pass nIdentifyFlags to GDALOpenInfo, so that drivers can see which type of dataset is asked for
      OpenFileGDB Identify: if nOpenFlags == GDAL_OF_RASTER, and the dataset is local, check file extensions to better identify
      OpenFileGDB: more informative warning message when opening a dataset with a .cdf file and FileGDB driver isn't there
      SQL SQLite dialect: fix translation of "x IN (NULL)" with "recent" (at least > 3.31.1) versions of SQLite3
      Doc: gdalmdimtranslate: document -strict
      OGR SQL: fix compliance of NOT and IN operators regarding NULL values
      autotest: make test_ogr_gmlas_get_gml_and_iso_schemas() more robust to Inspire server being not available
      ogrinfo: fix error message when not specifying a filename
      GDALNoDataMaskBand::IRasterIO(): fix crash on memory allocation failure
      Fix 5 CodeQL cpp/integer-multiplication-cast-to-long warnings
      GetNextArrowArray() generic implementation: avoid calling VSI_MALLOC_ALIGNED_AUTO_VERBOSE() with a zero size
      VSIMallocAligned(): make behaviour more predictable when nSize == 0
      GDALNoDataMaskBand::IRasterIO(): speed optimization, and reduce copy&paste
      Parquet dataset (multi-file typically): enable use of bounding box columns for spatial filter
      Parquet: harmonize thread handling between non-dataset and dataset mode
      Add OGRArrowIsGeoArrowStruct() and use it
      Arrow/Parquet: add a OGRArrowLayer::SanityCheckOfSetBatch() method
      Parquet dataset (multi-file typically): implement SetIgnoredFields()
      Parquet dataset (multi-file typically): make spatial filter work ignoring geometry field
      Parquet dataset (multi-file typically): optimize spatial filtering
      Parquet dataset (multi-file typically): implement SetAttributeFilter()
      Parquet dataset (multi-file typically): optimize spatial filtering on GeoArrow struct Point even when there is no bounding box column
      Add a static version of OGRLayer::FilterWKBGeometry()
      Add OGRGeometry::IsRectangle() and use it in OGRLayer::InstallFilter()
      Add testing for OGRGeometry::IsRectangle()
      Parquet dataset (multi-file typically): implement geometry intersection from WKB column as a Arrow compute function
      Parquet: bring back run-time compatibility with libarrow <= 13
      Doc: add hint to use paths with forward slashes on Windows
      JSONFG identification: recognize more JSON-FG specification version
      Test opening a JSONFG file with just coordRefSys as a hint it is one
      GeoJSON/JSONFG: do not recognize GeoJSON files with a featureType feature property as JSONFG
      GeoJSON/JSONFG: make it possible with -if/papszAllowedDrivers to force opening a JSONFG file with the GeoJSON driver
      GDALIdentifyDriverEx(): transmit papszAllowedDrivers to Identify(),
      Add CPLJSonStreamingParser::StopParsing()
      autotest: test_wms_15: make it robust to flaky server
      JSONFGIsObject: use CPLJSonStreamingParser::StopParsing()
      typo fix [ci skip]
      Extend scripts/typos_allowlist.txt [ci skip]
      CPLHTTPFetch(): add a RETRY_CODES option (GDAL_HTTP_RETRY_CODES config option)
      README.md: update Travis-CI badge [ci skip]
      gdalwarp: fix help message for -wm (fixes #9960)
      CI: try to fix Travis-Ci Graviton2 builds
      GDALRasterizeGeometries(): document OPTIM option
      GDALRasterizeGeometries(): various robustness fixes
      GDALPansharpenOperation::PansharpenResampleJobThreadFunc(): make it more robust
      GDALDataset::RasterIO() / GDALDatasetRasterIO[Ex](): accept a const int* panBandList, instead of a int*
      Fix a few Coverity Scan warnings
      Make GDALDataset::IRasterIO() implementations ready to switch to use const int* panBandList
      CI: enable -DGDAL_BANDMAP_TYPE_CONST_SAFE on ubuntu 24.04 config
      GDALCopyWords(): adjust documentation
      Link RasterIO() doc to GDALCopyWords64()
      CI: fix Conda builds
      CI: workaround issue with latest version of coverallsapp/coverage-reporter
      VSIS3WriteHandle -> VSIS3WriteHandle class renaming
      OpenFileGDB: add partial read-only support for tables with 64-bit ObjectIDs
      Add C++ facilities for HTTP retry logic
      /vsiaz/: add BLOB_TYPE=BLOCK and CHUNK_SIZE options to VSIFOpenEx2L()
      vsiadls.py: fix test on machines with ~/.azure credentials available
      ISIS3: Create(): open file(s) in wb+ mode if possible
      PDS4: Create(): open file in wb+ mode if possible
      /vsimem/: make Read() error for a file not opened with read permissions
      /vsicrypt/: if opening in write-only mode, do so on the underlying file as well
      /vsigzip/: sanitize Eof() detection
      Add VSIFErrorL() and VSIFClearErrL(), and implement them
      Use VSIFErrorL() in complement of VSIFEofL()
      VSIWin32Handle: Read(): unhandle cleanly nSize * nCount > UINT32_MAX
      /vsigzip/: Read(): detect attempts to read more than 4 GB at once
      test_vsifile_CopyFileRestartable(): silence error message
      cpl_vsil_crypt.cpp: remove a few useless casts
      VSICopyFile(): detect error when reading source file, and delete output file on error
      PDF: fix build against PoDoFo with MSYS2 UCRT64 and CLANG64 environments
      CI: add package mingw-w64-x86_64-podofo
      OGRSQL: validate column name in COUNT(field_name)
      PDF: split import of SDK headers into separate file per backend
      ogr_sql_test.py: enable exceptions, and parametrize more tests
      CI: linux_build.yml: remove pin to coverage-reporter-version v0.6.10
      OGRGenSQLResultsLayer: modernize C++ usage
      LIBKML: fix handling of styleUrl element referencing to an external document
      SWIG Python/Java: replace sprintf() with snprintf() to avoid warnings on OSX
      VSIFOpenExL(): clarify that CHUNK_SIZE also works for /vsis3/, /vsigs/, /vsioss/
      Arrow/Parquet: fix compiler warnings on 32bit with clang -Wshorten-64-to-32
      Fix various compiler warnings on 32bit with clang -Wshorten-64-to-32
      CI: switch Alpine 32bit to Clang
      docker: update Alpine images to 3.20 [ci skip]
      Doc: reduce width of synopsis of gdalwarp and ogr2ogr
      Doc: Mark GDALSimpleImageWarp() and GDALReprojectImage() as superseded per GDALWarp()
      scripts/cppcheck.sh: ignore stlIfStrFind warning
      ESRIJSON: make it able to parse response of some CadastralSpecialServices ESRI APIs
      ESRIC: ingest more bytes to be able to identify more datasets
      OpenFileGDB writer: correctly set flag on non-editable Shape_Length/Shape_Area special fields
      OpenFileGDB writer: .gdbtable header must be rewritten when updating an existing feature at the end of file
      OpenFileGDB: BuildSRS(): do not use CPLErrorReset()
      OpenFileGDB: detect and try to repair corruption of .gdbtable header
      IVSIS3LikeFSHandler::GetUploadChunkSizeInBytes(): rewrite test in a way to please Coverity Scan (CID 1546505, 1546504)
      Doc: explain what DOI is (fixes #10020)
      Add GDALArgumentParser::add_extra_usage_hint()
      gdal_contour: add help hint that one and only of -i, -fl or -e must be used
      argparse.hpp: add argument name after 'Too few arguments' error
      Python utilities: avoid UseExceptions() related deprecation warning when launched from launcher shell scripts
      Python bindings: do not emit warnings about not having used [Dont]UseExceptions() if run under gdal.ExceptionMgr()
      Python bindings: avoid gdal.ExceptionMgr() to re-throw a GDAL exception already caught under it
      Python bindings: avoid exception emitted and caught under gdal.ExceptionMgr() to cause later issues
      gdaltest.run_py_script(): add a return_stderr: bool argument
      Python scripts: use local exception manager, instead of global UseExceptions()
      autotest/pyscripts: check that python scripts don't emit the FutureWarning about UseExceptions()
      test_gdal2xyz.py: skip on sanitize CI
      CI: skip test_gdal2tiles_py_invalid_srs on sanitize CI
      TileDBRasterBand::IRasterIO(): avoid reading out-of-raster with TILEDB_ATTRIBUTE creation option, when the block size is not a multiple of the raster size
      TileDB: CreateCopy(): do not force returned dataset to be in read-only mode
      Add a more C++ friendly GDALRegenerateOverviewsMultiBand() signature
      Add VSIToCPLErrorWithMsg()
      /vsis3/: avoid emitting a CPLError() when bSetError=false and access=r+b ; GTiff: turn VSIError into CPLError on creation
      cpl_error.h: provide 'do {} while(0)' expansion for empty CPLDebug/CPLDebugOnly()/CPLAssert()
      TileDB: clarify code comment
      include_tiledb.h: reintroduce MSVC 4996 warning suppression that was removed per 130560b919ef774d204f702fde533fe896eb4e0f
      TileDB: catch potential TileDB exceptions in Open() and IRasterIO()
      TileDB raster: honor CREATE_GROUP=YES, and implement BuildOverviews() in that mode
      TileDB raster: implement BuildOverviews() for base dataset not in group mode
      TileDB: document existing open and creation options
      TileDB: document new CREATE_GROUP creation option
      TileDB: add a overview_model.rst design document
      TileDB tests: add a test to check deprecated GeoTIFF side-car .ovr is still functional
      Revert "TileDB raster: implement BuildOverviews() for base dataset not in group mode"
      TileDB raster: change name of overview level arrays to 'l_{level}'
      TileDB: overview_model.rst: update it with latest changes
      TileDB: advertize GDAL_DCAP_CREATE_LAYER
      TileDB: change CREATE_GROUP default value to YES for rasters
      ESRIJSON: do not set width on DateTime field
      CI: skip test_gdal_polygonize_help on sanitize CI
      gdal_pansharpen.py: fix previous wrong change
      HDF5: add support for libhdf5 >= 1.14.4.2 when built with Float16
      gdal_python_utilities.rst: remove note
      Doc: add note regarding Creation vs Copy for raster drivers
      CSV: error out if invalid/inconsistent value for GEOMETRY layer creation option
      Shapelib: resync with https://github.com/OSGeo/shapelib/pull/130
      GML: GML_SKIP_RESOLVE_ELEMS=HUGE: keep gml:id in .resolved.gml file
      GML: avoid assertion due to trying to load existing .gfs file after reading .resolved.gml
      GML: fix issue with nested elements with identical names in GML_SKIP_RESOLVE_ELEMS=HUGE mode
      GML: make sure SRS is detected when using GML_SKIP_RESOLVE_ELEMS=HUGE on a AIXM file, otherwise GML_SWAP_COORDINATES might not work correctly
      gml.rst: add note about deleting .gfs file
      TAB_CSLLoad(): simplify, and make it work properly with /vsitar (related to recent VSIFErrorL() changes)
      TABSeamless::OpenForRead(): avoid potential double-free
      typo fix
      STACIT: honour MAX_ITEMS=0 as meaning unlimited as documented
      CMake: add infrastructure so we can build plugins that can be loaded against a libgdal that has been without any support for them
      CMake: add_gdal_driver(): try trick to make sure we get a different object file
      OCI: use NO_SHARED_SYMBOL_WITH_CORE
      MrSID: use NO_SHARED_SYMBOL_WITH_CORE
      PostGISRaster: use NO_SHARED_SYMBOL_WITH_CORE
      HEIF: use NO_SHARED_SYMBOL_WITH_CORE
      netCDF: avoid issue with CMAKE_UNITY_BUILD=ON
      netCDF: use NO_SHARED_SYMBOL_WITH_CORE
      GeoRaster: use NO_SHARED_SYMBOL_WITH_CORE
      PDF: use NO_SHARED_SYMBOL_WITH_CORE
      JPEGXL: use NO_SHARED_SYMBOL_WITH_CORE
      JPEG: use NO_SHARED_SYMBOL_WITH_CORE
      WebP: use NO_SHARED_SYMBOL_WITH_CORE
      EXR: use NO_SHARED_SYMBOL_WITH_CORE
      KEA: use NO_SHARED_SYMBOL_WITH_CORE
      WMTS: use NO_SHARED_SYMBOL_WITH_CORE
      PDS: use NO_SHARED_SYMBOL_WITH_CORE
      HDF5: use NO_SHARED_SYMBOL_WITH_CORE
      Rasterlite: use NO_SHARED_SYMBOL_WITH_CORE
      GIF: use NO_SHARED_SYMBOL_WITH_CORE
      PCRaster: use NO_SHARED_SYMBOL_WITH_CORE
      JP2Lura: use NO_SHARED_SYMBOL_WITH_CORE
      ECW: use NO_SHARED_SYMBOL_WITH_CORE
      GRIB: use NO_SHARED_SYMBOL_WITH_CORE
      OpenJPEG: use NO_SHARED_SYMBOL_WITH_CORE
      NITF: use NO_SHARED_SYMBOL_WITH_CORE
      PCIDSK: use NO_SHARED_SYMBOL_WITH_CORE
      FITS: use NO_SHARED_SYMBOL_WITH_CORE
      DDS: use NO_SHARED_SYMBOL_WITH_CORE
      JP2KAK: use NO_SHARED_SYMBOL_WITH_CORE
      WMS: use NO_SHARED_SYMBOL_WITH_CORE
      GTA: use NO_SHARED_SYMBOL_WITH_CORE
      Zarr: use NO_SHARED_SYMBOL_WITH_CORE
      WCS: use NO_SHARED_SYMBOL_WITH_CORE
      MSG: use NO_SHARED_SYMBOL_WITH_CORE
      MRF: use NO_SHARED_SYMBOL_WITH_CORE
      PNG: use NO_SHARED_SYMBOL_WITH_CORE
      BASISU/KTX2: use NO_SHARED_SYMBOL_WITH_CORE
      JPIPKAK: use NO_SHARED_SYMBOL_WITH_CORE
      TileDB: use NO_SHARED_SYMBOL_WITH_CORE
      HDF4: use NO_SHARED_SYMBOL_WITH_CORE
      MySQL: use NO_SHARED_SYMBOL_WITH_CORE
      Carto: use NO_SHARED_SYMBOL_WITH_CORE
      XLS: use NO_SHARED_SYMBOL_WITH_CORE
      VFK: use NO_SHARED_SYMBOL_WITH_CORE
      Parquet: use NO_SHARED_SYMBOL_WITH_CORE
      PG: use NO_SHARED_SYMBOL_WITH_CORE
      OGDI: use NO_SHARED_SYMBOL_WITH_CORE
      OpenFileGDB: use NO_SHARED_SYMBOL_WITH_CORE
      MSSQLSpatial: use NO_SHARED_SYMBOL_WITH_CORE
      LIBKML: use NO_SHARED_SYMBOL_WITH_CORE
      Feather: use NO_SHARED_SYMBOL_WITH_CORE
      ODBC: use NO_SHARED_SYMBOL_WITH_CORE
      GMLAS: use NO_SHARED_SYMBOL_WITH_CORE
      DWG/DGNv8: use NO_SHARED_SYMBOL_WITH_CORE
      Elastic: use NO_SHARED_SYMBOL_WITH_CORE
      FileGDB: use NO_SHARED_SYMBOL_WITH_CORE
      SOSI: use NO_SHARED_SYMBOL_WITH_CORE
      CAD: use NO_SHARED_SYMBOL_WITH_CORE
      HANA: use NO_SHARED_SYMBOL_WITH_CORE
      IDB: use NO_SHARED_SYMBOL_WITH_CORE
      PLScenes: use NO_SHARED_SYMBOL_WITH_CORE
      MongoDBV3: use NO_SHARED_SYMBOL_WITH_CORE
      CMake: make NO_SHARED_SYMBOL_WITH_CORE compulsory when CORE_SOURCES is declared
      Update RFC96 with NO_SHARED_SYMBOL_WITH_CORE changes
      STACIT: implement paging using POST method
      Update doc/source/programs/gdal_fillnodata.rst
      ogr2ogr: error out if GCP transform creation fails
      ogr2ogr: use more std::unique_ptr<>
      GCPTransformer: accept only 2 points for order=1 transformer
      CI: Travis-CI: disable arm64-graviton2 builds, due to the OSGeo Travis-CI plan being downgraded to 2 concurrent builds [ci skip]
      ogr2ogr: do not call CreateLayer() with a geom field defn of type wkbNone
      FileGDB: be robust to be called with a geometry field definition of type wkbNone
      Doc adjustments (from https://github.com/OSGeo/gdal/pull/10089)
      gdal_create.rst: clarify -burn
      ESRIJSON: fix paging when URL contains f=pjson instead of f=json
      docker/ubuntu-full/Dockerfile: update ARROW_VERSION [ci skip]
      PG: avoid errors related to ogr_system_tables.metadata when user has not enough permissions
      PG: really honor OGR_PG_ENABLE_METADATA=NO in SerializeMetadata()
      Doc: multithreading: explicit why GDALDataset is not thread-safe (#10097)
      TABView::OpenForRead(): avoid potential double-free
      netCDFAttribute::IWrite(): fix writing an array of (NC4) strings, from a non-string array
      VICAR: avoid harmless unsigned integer overflow
      netCDF: try to better round geotransform values when read from single-precsion lon/lat float arrays
      test_gdalwarp_lib.py: add test for warping an image with [-180,180] longitude to [180 - X, 180 + X]
      Warper: relax longitude extend check to decide whether we can insert a CENTER_LONG wrapping longitude
      Fix various Coverity warnings (master only)
      typo fixes [ci skip]
      OpenFileGDB: fix CodeQL cpp/integer-multiplication-cast-to-long warning
      VSIStatL(): allow trailing slash on mingw64 builds
      AAIGRID: fix forcing datatype to Float32 when NODATA_value is nan and pixel values look as ints
      GDALContourGenerateEx(): validate LEVEL_INTERVAL option
      VRT: fix processing of LUT where the first source value is NaN
      OGRSpatialReference: workaround bug of PROJ < 9.5 regarding wrong conversion id for UTM south
      geojsonseq.rst: fix link to ndjson
      Doc: fix link
      Doc: OpenFileGDB: document that sdc format can't be read
      GeoTIFF multithreaded reading: avoid emitting tons of warnings when ExtraSamples tag is missing
      OGRSpatialReference::FindMatches(): improve when input SRS doesn't have expected axis order
      HFA SRS reading: strip TOWGS84 when datum name is known, and use FindBestMatch() to try to find known SRS
      LIBKML: fix performance issue when writing large files
      Doc: gdalwarp/ogr2ogr -ct: be more explicit about axis order issues
      gdalinfo/ogrinfo text output: avoid weird truncation of coordinate epoch when its value is {year}.0
      Update rfc36_open_by_drivername.rst as withdrawn
      gdal_create: allow specifying -burn before output dataset (master only)
      argparse/argparse.hpp: restore lost changes
      Doc: move build requirements to building_from_source, and put it in first place
      CI: workaround issue with too old vcruntime140.dll on image windows-latest 20240603.1.0
      building_from_source.rst: fix link
      Fix flake8 E721 warnings
      Update flake8 in .pre-commit-config.yaml
      Suppress MSVC warnings related to argparse.hpp
      Suppress MSVC warnings related to PublicDecompWT
      gdal_unit_test: make CheckEqualGeometries() not crash without GEOS
      CI: another attempt at fixing issues with too old vcruntime140.dll on image windows-latest 20240603.1.0
      CI Windows: switch to Debug build to workaround issue with too old vcruntime140.dll on image windows-latest 20240603.1.0
      Revert "CI Windows: switch to Debug build to workaround issue with too old vcruntime140.dll on image windows-latest 20240603.1.0"
      CI: disable running Windows tests to workaround issue with too old vcruntime140.dll on image windows-latest 20240603.1.0
      GTiff: fix reading angular projection parameters in non-degree unit (typically grads), when reading projection from ProjXXXXGeoKeys
      GTiff: fix writing angular projection parameters in non-degree unit (typically grads), when writing ProjXXXXGeoKeys
      Doc: gtiff.rst: document GTIFF_READ_ANGULAR_PARAMS_IN_DEGREE / GTIFF_WRITE_ANGULAR_PARAMS_IN_DEGREE
      Internal libgeotiff: resync with https://github.com/OSGeo/libgeotiff/pull/118
      GTiff writer: limit number of GCPs in GeoTIFF tag to 10922 to avoid overflowing uint16_t
      Parquet: fix Coverity Scan warnings
      CI: workaround issue with dnf upgrade with fedora:rawhide
      Add VSIMultipartUploadXXXXX() API for multi-part upload
      Split VSIS3WriteHandle into VSIMultipartWriteHandle and VSIChunkedWriteHandle classes
      Move more methods to IVSIS3LikeFSHandlerWithMultipartUpload
      Fix test_vsis3_sync_timestamp() to be robust
      cpl_vsil_gzip.cpp: fix potential build issue
      GeoJSON: avoid false-positive identification as TopoJSON
      Add GDALOpenInfo::IsSingleAllowedDriver()
      GeoJSON/GeoJSONSeq/TopoJSON/ESRIJSON/JSONFG: relax identification checks when papszAllowedDrivers[] contains only the driver name
      swig/python/CMakeLists.txt: remove trace of code path only valid for CMake < 3.14 (we require 3.16+)
      STACTA: relax identification checks when papszAllowedDrivers[] contains only the driver name
      STACIT: correctly return the STACIT driver as the dataset's driver, instead of the VRT one (bugfix)
      STACIT: relax identification checks when papszAllowedDrivers[] contains only the driver name
      netCDFIdentifyFormat(): remove reference to no longer existing GMT raster driver
      netCDF: relax identification checks when papszAllowedDrivers[] contains only the driver name
      HDF5: relax identification checks when papszAllowedDrivers[] contains only the driver name
      BAG: relax identification checks when papszAllowedDrivers[] contains only the driver name
      S102/S104/S111: relax identification checks when papszAllowedDrivers[] contains only the driver name
      WMTS: relax identification checks when papszAllowedDrivers[] contains only the driver name
      OAPIF: relax identification checks when papszAllowedDrivers[] contains only the driver name
      WFS: relax identification checks when papszAllowedDrivers[] contains only the driver name
      WMS: relax identification checks when papszAllowedDrivers[] contains only the driver name
      GML: relax identification checks when papszAllowedDrivers[] contains only the driver name
      Revert "GML: relax identification checks when papszAllowedDrivers[] contains only the driver name"
      NAS: relax identification checks when papszAllowedDrivers[] contains only the driver name
      GMLAS: relax identification checks when papszAllowedDrivers[] contains only the driver name
      GTI: relax identification checks when papszAllowedDrivers[] contains only the driver name
      GDALDriver::QuietDeleteForCreateCopy(): do not set error state when attempting to open datasets
      TileDB: relax identification checks when papszAllowedDrivers[] contains only the driver name
      OGCAPI: relax identification checks when papszAllowedDrivers[] contains only the driver name
      CSV: relax identification checks when papszAllowedDrivers[] contains only the driver name
      XYZ: relax identification checks when papszAllowedDrivers[] contains only the driver name
      GTFS: relax identification checks when papszAllowedDrivers[] contains only the driver name
      Arrow: relax identification checks when papszAllowedDrivers[] contains only the driver name (for IPC format)
      VICAR: handle VICAR header being located beyond 2 GB within PDS3 file
      VICAR: relax identification checks when papszAllowedDrivers[] contains only the driver name
      download.rst: fix link to GDAL Spack package
      Remove obsolete traces of checking/defining cxx_std_17
      Python: generate launcher shell/bat scripts for Python scripts in /swig/python/bin
      setdevenv.sh: add /swig/python/bin to PATH
      Add scripts/setdevenv.bat
      Doc: add a 'Setting development environment variables' paragraph
      CI: Test development launcher script
      ogrinfo.rst: fix wrong indentation
      ODS: implement IUpdateFeature() that was broken up to now
      XLSX: implement IUpdateFeature() that was broken up to now
      GeoJSON: implement IUpdateFeature() that was broken up to now
      test_ogrsf: test OGRLayer::UpdateFeature()
      GeoJSON/ODS/XLSX: declare missing capabilities DELETE_FIELD, REORDER_FIELDS, ALTER_FIELD_DEFN_FLAGS
      ODS/XLSX: fix CreateFeature() implementation when a FID is set
      ogr_geojson.py: run test_ogrsf in update mode
      Revert "CI: disable running Windows tests to workaround issue with too old vcruntime140.dll on image windows-latest 20240603.1.0"
      Revert "CI: another attempt at fixing issues with too old vcruntime140.dll on image windows-latest 20240603.1.0"
      Revert "CI: workaround issue with too old vcruntime140.dll on image windows-latest 20240603.1.0"
      CI: build-windows-minimum: workaround crash in Java programs
      Fix crash in ogr2ogr (or Arrow based workflows) from GeoPackage/GeoParquet to PMTiles
      HDF5: make logic to assign per-band attribute more generic
      OGRSpatialReference::importFromUSGS(): use plain WGS84 datum with WGS84 ellipsoid, and identify EPSG code
      DXF: avoid slight numeric imprecision with closed lwpolyline and arcs
      OpenFileGDB: avoid harmless unsigned integer overflow (master only) (ossfuzz#69618)
      Contour: include minimum raster value as contour line when it exactly matches the first level
      GRIB: make .idx reading compatible of /vsisubfile/
      CI: disable running gnm_test on build-windows-minimum
      CI: disable running Windows tests on build-windows-conda to workaround issue with image windows-latest 20240603.1.0
      netCDF vector: use CF-1.8 with FORMAT=NC4 and GEOMETRY_ENCODING=WKT
      netcdf.py: disable cfchecker tests that can't pass
      CI: cfchecker: move it to Ubuntu 24.04 as the latest version of python netCDF4 (1.7.0) is not compatible of 20.04
      Python bindings: make them compatible of SWIG 4.3.0dev
      CI: test swig master
      Rasterband methods (histogram, statistics): make them compatible of a dataset with more 2 billion blocks
      Add OGRGeometry::hasEmptyParts()/removeEmptyParts(), and use it in exportToGEOS() in the Centroid() context
      typos_allowlist.txt: update [ci skip]
      ESRIC: properly takes into account minLOD for .tpkx
      ESRIC: validate tile size
      GDALTranslate(): use directly generated VRT even if BLOCKXSIZE/BLOCKYSIZE creation options are specified
      ESRIC: add a EXTENT_SOURCE open option and default to FULL_EXTENT
      Doc: esric.rst: document EXTENT_SOURCE open option
      ESRIC: avoid potential nullptr deref (master only)
      Python bindings: fix/workaround installation into /usr/local/lib/python{version}/dist-packages when prefix is /usr/local
      XODR: fix to build with STRONG_CXX_WFLAGS
      GeoParquet: always write version=1.1.0
      GDALSieveFilter(): avoid assert() when all pixels are masked (3.9.0 regression)
      Overview generation: fix multi-threaded bug, resulting in locks/crashes with GeoPackage in particular
      CSV: avoid Coverity Scan warning about WRAPPER_ESCAPE (CID 1547190)
      autotest/cpp/test_viewshed.cpp: pass argument by const reference (CID 1547189)
      VRT: fix serialization of separatable kernel in VRTKernelFilteredSource
      Code cleanup in VRTKernelFilteredSource
      OGR layer algebra: honour PROMOTE_TO_MULTI=YES for Points
      DXF: add a DXF_CLOSED_LINE_AS_POLYGON=YES/NO configuration option
      SQLite/GPKG: detect UNIQUE constraints expressed as a ', CONSTRAINT name UNIQUE (column_name)' at the end of CREATE TABLE
      OGRGenSQLResultsLayer: code cleanups
      OGR SQL: add SELECT expression [AS] OGR_STYLE HIDDEN to be able to specify feature style string without generating a visible column
      swq_parser.cpp: manual change to make MSVC happy
      gpkg.py: do not call gdal.Open() with invalid argument
      OGRFeature::SetField(int, double): avoid UndefinedBehavior when passing NaN
      OGRFeature::SetField(int, GIntBig): avoid UndefinedBehavior when passing value in [INT64_MAX - 512, INT64_MAX - 1] range
      OGRLayer::WriteArrowBatch(): avoid UndefinedBehavior when trying to convert NaN to Int64
      gdal_priv_templates.hpp: implement GDALIsValueInRange<[u]int64_t]>, and add GDALIsValueExactAs<>
      gdal_translate: use GDALIsValueExactAs<> to check range of [u]int64 nodata
      GTiff: DiscardLsb(): use GDALIsValueExactAs<> to check range of nodata
      netCDF: use GDALIsValueExactAs<> to check range of [u]int64 nodata
      Zarr: SerializeNumericNoData(): use CPLJSonObject::Add(uint64_t) to avoid potential undefined behavior casts
      GPKG: use GDALIsValueInRange<> to avoid potential undefined behavior casts
      OpenFileGDB: use GDALIsValueInRange<> to avoid potential undefined behavior casts
      GDALRasterBand::ComputeStatistics(): fix bad progress percentage computation (recent regression caused by 42adada1f1ff55a5109de17565d3c107de48c531)
      OGRSpatialReference::importFromUSGS(): avoid out-of-bounds access to array (fix regression of cab1cc95a3e9343d003a7e21acea4c3efe56b88d)
      test_ogr_pmtiles_read_corrupted_min_zoom_larger_than_30: skip on s390x
      OGR SQL: fix crash when the ON expression of a JOIN contains OGR special fields (in particular feature id)
      CSV: allow inf, -inf and nan as numeric values
      Python bindings: check validity of GDALAccess flag passed to gdal.Open()
      OGR SQL: use Kahan-Babuska-Neumaier algorithm for accurate SUM(), like in recent SQLite versions
      OGR SQL: avoid going through string serialization for MIN(), MAX(), SUM(), AVG() on numeric fields
      OGRSQL: add STDDEV_POP() and STDDEV_SAMP() aggregate functions
      SQLite/GPKG: add STDDEV_POP() and STDDEV_SAMP() aggregate functions
      [Lint] OSM: more usage of std::vector, std::unique_ptr, and C++ cast operator
      Fix number of new Coverity Scan warnings, likely due to new version of the tool
      Doc: MapInfo: document supported encodings
      ogr2ogr: error out if WKT argument of -clipsrc/-clipdst is an invalid geometry (#10292)
      ecw.rst: mention libecwj2-3.3.patch
      GeoJSON: avoid multiple debug messages about mixed-geometry type
      Add OGRCurve::reversePoints(), and deprecated OGRLinearRing::reverseWindingOrder()
      GML geometry reader: add support for gml:OrientableCurve
      Doc: advertize 3.9.1 release
      validate_gpkg.py: make it robust to CURRENT_TIMESTAMP instead of 'now'
      LIBKML: fix writing a .kmz to cloud storage
      Python bindings: fix typos in gdal.Footprint() help message
      configoptions.rst: remove inappropriate marker
      CI: fix s390x builds
      GTiff: make SetNoDataValue(double) work on a Int64/UInt64 band
      gdal_rasterize: on a int64 band, set nodata value as int64
      gdal_rasterize: restrict to defaulting to Int64 raster data type only if the output driver supports it (and the burned field is Int64)
      PG: fix ogr2ogr scenarios to PostgreSQL when there are several input layer names like schema_name.layer_name (3.9.0 regression)
      gdalenhance: fix memleak (fixes #10323)
      typo fix [ci skip]
      GTiff: handle TIFF color map that uses a 256 multiplication factor
      GTiff: use std::unique_ptr<GDALColorTable> instead of raw pointer
      CMake: move setting C/C++ standards from CMakeLists.txt to cmake/helpers/GdalCAndCXXStandards.cmake
      CMake: move things related to setting compilation flags to cmake/helpers/GdalCompilationFlags.cmake
      GdalStandardIncludes.cmake: make it work in STANDALONE mode
      GdalVersion.cmake: make it work in STANDALONE mode
      SystemSummary.cmake: report C++17 related flags rather than C++11 ones
      CMake: move code from CheckDependentLibraries.cmake to CheckDependentLibrariesCommon.cmake
      GdalDriverHelper.cmake: add infrastructure for STANDALONE mode
      CMake: add SetupStandalonePlugin.cmake
      CMake: make MrSID buildable in standalone mode
      tiff_srs.py: skip 2 tests if libgeotiff < 1.6.0
      CI: test building MrSID driver in standalone mode
      CMake: make Kakadu driver buildable in standalone mode
      CMake: make OCI driver buildable in standalone mode
      CI: test building OCI driver in standalone mode
      GML writer: fix missing SRS in Featurecollection's boundedBy element (3.9.1 regression)
      docker/README.md: advertize 3.9.1 docker images [ci skip]
      test_ogrsf: fix when layer name is a reserved SQL keyword
      GTiff: emit clearer error when attempting to create external JPEG compressed overviews on dataset with color table
      gdallocationinfo: avoid extra newline character in -valonly mode if coordinate is outside raster extent (3.9.0 regression)
      ISGDataset: fix performance inefficiencies (CID 1549336, 1549337, 1549338, 1549339)
      WMTS: add utility methods to get tile matrix / tile matrix limits extent
      WMTS: make sure not to request tiles outside of tile matrix / tile matrix limits, if the dataset extent goes beyond them
      WMTS: clip layer extent with union of extent of tile matrices
      gdalwarp: fix -srcnodata/-dstnodata to accept negative value in first position (3.9.0 regression)
      gdalbuildvrt: -fix -srcnodata/-vrtnodata to accept negative value in first position (3.9.0 regression)
      gdal_translate: fix -a_nodata to accept '-inf' as input (3.9.0 regression)
      argparse: accept '-inf' as value for numeric arguments
      GDALMDArray::GetResampled(): take into account good_wavelengths array for EMIT dataset orthorectification
      Fix compilation against openssl-libs-3.2.2-3 of fedora:rawhide
      Doc: fix link
      OpenFileGDB: fix attribute filter when an equality comparison is involved… (#10346)
      ogr2ogr: speed-up -clipsrc/-clipdst by avoiding GEOS when possible
      ogr2ogr: add -skipinvalid to skip features whose geometry is not valid w.r.t Simple Features
      OSM: add a [general] section at top of osmconf.ini to make it INI compliant (and Python's configparser friendly)
      gdal2tiles: fix exception with --nodata-values-pct-threshold but not --excluded-values on a multi-band raster
      typo fix [ci skip]
      WKT geometry importer: accept (non conformant) PointZ/PointZM without space as generated by current QGIS versions
      Modernize test_ogr_wkbwkt_test_import_wkt_sf12()
      OGR SQL lexer: fix memory leak on invalid expression (master only)
      SRP: avoid potential integer overflow when ZNA == INT_MIN
      OGRAVCE00Layer::FormPolygonGeometry(): avoid integer overflow when nArcId == INT_MIN
      ECW: emit error message before emitting progression, and one cleanup
      cpl_vsi_mem.cpp: avoid accessing bEOF under lock (CID 1549765, 1549764)
      gdalmultidim_gltorthorectification.cpp: avoid warning about using a moved pointer (CID 1549763)
      ogrshapedatasource.cpp: consistently access variable under lock (CID 1549762)
      OGR_GPKG_FillArrowArray_Step(): make sure to access nCountRows only under mutex (CID 1549761)
      ograrrowlayer.hpp: silence false positive (CID 1548670)
      gdalchecksum.cpp: silence false positive (CID 1548660)
      Const correctness improvements in GDALReadTabFile2() and GDALReadWorldFile2()
      Const correctness change in GDALPamDataset::TryLoadXML()/TryLoadAux() signature
      GDALOpenInfo::GetSiblingFiles(): improve documentation
      GDALDefaultOverviews: add a Initialize() method that takes a GDALOpenInfo* argument
      GTiff: use new GDALDefaultOverviews::Initialize() and a few const correctness improvements
      ECW: use GetSiblingFiles()
      GRIB: use GetSiblingFiles()
      JP2KAK: use GetSiblingFiles()
      JPEG: const-correctness improvement
      PNG: use new GDALDefaultOverviews::Initialize() method
      JP2OpenJPEG: use GetSiblingFiles()
      EXIF reader: strip trailing space/nul character in ASCII tags
      EXIFExtractMetadata(): support DNG tags DNG_UniqueCameraModel/DNG_CameraSerialNumber, and report in CPLDebug() messages unknown tags
      JPEG: make sure not to expose DNG_UniqueCameraModel/DNG_CameraSerialNumber if the corresponding EXIF tags are set at the same value
      gdalinfo_output.schema.json: pin stac-extensions/eo to v1.1.0
      JPEG: add support for reading Pix4DMapper CRS from XMP
      Doc: ogrgeometry_cpp.rst: add OGRSimpleCurve
      CMake: try to find libOpenDRIVE only with CMake Config files
      typo fix [ci skip]
      Internal zlib: update to 1.3.1
      Internal libpng: update to 1.6.43
      Doc: WMTS: better document caching and config options
      gdal_retile: error out with clear message when trying to retile a file with a geotransform with rotation terms
      gdal_retile.py: remove Dataset/Datasource.Destroy() calls
      autotest: remove/replace .Destroy() calls
      Revert "CI: disable running Windows tests on build-windows-conda to workaround issue with image windows-latest 20240603.1.0"
      SetupStandalonePlugin.cmake: add a STRICT_VERSION_CHECK mode
      CMake: make Parquet driver buildable in standalone mode
      CMake: make Arrow driver buildable in standalone mode
      CMake: make JP2OpenJPEG driver buildable in standalone mode
      CMake: make TileDB driver buildable in standalone mode
      ogr2ogr: more unique_ptr uses
      CMake: add cmake/helpers/GdalCMakeMinimumRequired.cmake
      Shape: fix recognizing an empty string as a NULL date
      OGRSpatialReference::EPSGTreatsAsLatLong()/EPSGTreatsAsNorthingEasting(): remove the check on the EPSG authority
      Java bindings: document EPSGTreatsAsNorthingEasting() and test it
      ogr_oapif.py: avoid 'code 500, message Unexpected GET request for /oapif' type of messages
      OGCAPI: fix reading encodingInfo/dataType for Coverage API
      OGCAPI: do not emit 'Server does not support specified IMAGE_FORMAT: AUTO' when opening a vector layer with MVT tiles only
      OAPIF: fix resolving of relative links
      CI: adapt for Conda-Forge libgdal feedstock changes
      Doc: update for conda-forge libgdal-core changes
      OGR SQL: do not make backslash a special character inside single-quoted strings, to improve compliance wih SQL92
      Doc: add a Source tree layout paragraph (#10427)
      Fix compilation against libarchive-3.3.3-5 as shipped by RHEL 8
      PDS4: flip image along horizontal axis when horizontal_display_direction = Right to Left
      CI: fix issue with build-linux-ubuntu-focal and setuptools 71.0.1
      [Lint] VRT: remove use of magic constant -1.0 for uinitialized src/dst window
      [Lint] VRT: more use of the GetType() method, reduce number of hard-coded strings
      VRT: add a VRTMapSharedResources class to encapsulate access, and allow thread-safe usage
      Add CPLQuadTreeHasMatch()
      VRTSourcedRasterBand::IsMosaicOfNonOverlappingSimpleSourcesOfFullRasterNoResAndTypeChange(): use CPLQuadTreeHasMatch()
      Add CPLJobQueue::WaitEvent()
      VRTDataset::CheckCompatibleForDatasetIO(): return bool, and actually cache state
      Add VRTSimpleSource::DstWindowIntersects()
      VRTDataset::IRasterIO(): fallback to VRTSourcedRasterBand::IRasterIO() on single band datasets
      VRT: make sure sources' RasterIO() uses GDALRasterIOExtraArg::pfnProgress
      Add GDALGetMaxDatasetPoolSize()
      VRT: multi-thread IRasterIO() in 'simple' situations
      VRTSourcedRasterBand::ComputeStatistics(): use VRTDataset::GetNumThreads()
      VRT doc: enhance section about multithreading optimizations
      CMake: make ECW driver buildable in standalone mode
      CMake: make GeoRaster driver buildable in standalone mode
      NITF 12-bit JPEG writer: fix potential crash if raster width > block width
      Doc: API: mention header file to include
      Doc: gdaltindex: fix example
      netCDF multidim: add OpenMDArray() options to set up nc_set_var_chunk_cache()
      GMLAS: avoid crash on a OSSFuzz generated xsd
      NITF: Create()/CreateCopy(): make sure that provided ABPP creation option is zero left-padded
      NITF: add an alias of existing ABPP creation option as NBITS; propagate NBITS/ABPP creation option to JPEG2000 drivers
      NITF: remove ABPP field as NBITS IMAGE_STRUCTURE metadata item, instead of NBPP
      Add const-safe GDALDataset::GetOpenOptions() method
      GTI: multi-threaded IRasterIO() for non-overlapping tiles
      [Lint] VRTSourcedRasterBand::IGetDataCoverageStatus(): use smart pointers
      Shape: fix off-by-one write heap buffer overflow when deleting exactly 128, 232, etc. features and repacking
      GTFS: fix error when applying an attribute filter on a field whose advertized data type is not string
      XLSX: support documents whose XML elements have a prefix
      OGRCurvePolygon::addRing(): take const pointer
      [Lint] OSM: const'ify and smartptr'ify
      OSM: fix master regression, without much visible consequence but noisy debug messages
      /vsimem/: remove useless bExtendFileAtNextWrite member
      /vsimem/: more efficient SetLength()
      OSM: actually reserve memory for /vsimem/ temp files
      XODR: add a cast
      MRF/LERC: check that values are within target type range before casting
      Arrow/Parquet/generic arrow: add write support for arrow.json extension
      OGRLineString::SetPoint(): avoid int overflow if passing iPoint = INT_MAX
      OGRCurveCollection::addCurveDirectly(): avoid int overflow if adding to a already huge collection
      OGRGeometryCollection::addGeometryDirectly(): avoid int overflow if adding to a already huge collection
      ogrgeometrycollection.cpp: some cleanups
      Add a cpl::contains(container, value) helper
      gcore: use cpl::contains()
      GTI: start looking for OVERVIEW_<idx>_xxxx metadata items at index 0
      gti.py: more realistic test cases for overviews
      GTI: automatically add overviews of overviews, unless the OVERVIEW_LEVEL=NONE open option is specified
      GTI: implement GetDataCoverageStatus()
      Python bindings: make GetStatistics() and ComputeStatistics() return None in case of error (#10462)
      GeoJSON: make sure geometry is reprojected even when it is invalid after coordinate rounding (3.9.0 regression)
      GDALCopyWords(): Fix double->uint64 when input value > UINT64_MAX that was wrongly converted to 0
      Doc of OGRGeometry methods/functions: clarify that returned geometries must be freed, and how
      gdaladdo doc: advertize -r bilinear
      GTiff: honor GDAL_DISABLE_READDIR_ON_OPEN when working on a dataset opened with OVERVIEW_LEVEL open option
      LIBKML: fix LIBKML_RESOLVE_STYLE=YES when reading a KML file with dataset-level styles (3.9.1 regression)
      GDALCopyWords(): Fix double->uint64 when input value > UINT64_MAX that was wrongly converted to 0
      autotest/cpp/CMakeLists.txt: move dependency to gdal_plugins to test-unit
      GDALRasterBand: add convenience ReadRaster() methods
      Python bindings: avoid C++ bad_alloc in PythonBindingErrorHandler()
      Polygonize: optimizations to reduce runtime
      Polygonize: make it catch out of memory situations
      OGRGeometry classes: add a bool return type for methods that can fail
      LIBKML: fix reading/writing style URL in KMZ files
      GTI: emit warning if bounding box from the tile's feature extent in the index does not match actual bounding box of tile
      gdalinfo: add -nonodata and -nomask options
      GRIB: display hint to speed-up operations when using gdalinfo on a remote GRIB2 file with an .idx side car file
      PG: fix support for geometry/geography OID in range [2147483648, 4294967295]
      OGR_GreatCircle_ API: do not hardcode Earth radius
      Doc: document multidimensional API object lifetime
      [Lint] ogr: use cpl::contains()
      [Lint] arrow_common: use cpl::contains()
      [Lint] geojson: use cpl::contains()
      [Lint] GPKG: use cpl::contains()
      [Lint] OpenFileGDB: use cpl::contains()
      [Lint] SQLite: use cpl::contains()
      LIBKML writing: validate longitude, latitude to be in range
      Parquet: detect bbox geometry column when opening current Overture Maps in dataset mode
      DumpGeoTIFFBox(): avoid off-by-one read caused by recent 1b1dc79752550e232ef1977aa18d4df182024935 change (master only)
      CPLFormFilename()/CPLGetDirname()/CPLGetPath(): make it work with 'vsicurl/http://example.com?foo' type of filename, to fix Zarr driver
      CSV: emit warning when reading invalid WKT
      Forward port GDAL bugfixes releases from 3.4.x to 3.9.x to NEWS.md, and split GDAL 2.x and 1.x news into their own files
      Update HOWTO-RELEASE [ci skip]
      SQLite: run deferred table creation before StartTransaction
      Skip test_vsiaz_write_blockblob_chunk_size_1() on CI
      gdallocationinfo.cpp: use GDALRasterIOGetResampleAlg()
      GPKG/SQLITE SQL: extend gdal_get_pixel_value()/gdal_get_layer_pixel_value() to support an interpolation method
      cpl::contains(): use find() method for implementation to address https://github.com/OSGeo/gdal/pull/10464#discussion_r1694287217
      EPSGTreatsAsNorthing…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Unclear SHAPE_RESTORE_SHX config option
2 participants