Skip to content
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

OGR Error when editing a kml file #39087

Closed
yotamgi opened this issue Sep 29, 2020 · 1 comment
Closed

OGR Error when editing a kml file #39087

yotamgi opened this issue Sep 29, 2020 · 1 comment
Assignees
Labels
Bug Either a bug report, or a bug fix. Let's hope for the latter! Data Provider Related to specific vector, raster or mesh data providers Upstream Needs changes in an upstream library (like Qt, Proj, GDAL, ...)

Comments

@yotamgi
Copy link

yotamgi commented Sep 29, 2020

Bug Description
When using qgis desktop to load a kml/kmz layer, the layer seem to be editable, where the "Toggle Edits" and "Save Layer Edits" buttons are not grayed out. However, when trying to save the edits, qgis fails with "OGR error seeting feature" and the changes are lost. The error message is neither indicative of the specific failure, nor constant, where it seems like it just writes the last (unrelated) OS error that occurred in this run.

This seem to happen specifically on layers that have storage of type "LIBKML", while shp or memory layers seems to not have this problem.

How to Reproduce
QGIS_kml_bug

  1. Create a new blank project by Project -> New.
  2. Add a kml file by double clicking on it using the file browser toolbar.
  3. Press on the "Toggle Editing" button, and change an existing shape within this layer.
  4. Press on the "Save Layer Edits" button.

QGIS and OS versions
This behavior was observed both in QGIS 3.10, 3.12 and in the current master, as was cloned from github at 2020/09/27 and compiled locally.

The problem was observed both on my Debian based Linux machine and on a Fedora 32.

The output of Help -> About on the locally compiled version:

QGIS version | 3.15.0-Master | QGIS code revision | df564fd1af
Compiled against Qt | 5.12.5 | Running against Qt | 5.12.5
Compiled against GDAL/OGR | 3.0.4 | Running against GDAL/OGR | 3.0.4
Compiled against GEOS | 3.8.1-CAPI-1.13.3 | Running against GEOS | 3.8.1-CAPI-1.13.3
Compiled against SQLite | 3.33.0 | Running against SQLite | 3.33.0
PostgreSQL Client Version | 12.4 (Debian 12.4-1) | SpatiaLite Version | 4.3.0a
QWT Version | 6.1.4 | QScintilla2 Version | 2.11.2
Compiled against PROJ | 7.0.0 | Running against PROJ | Rel. 7.0.0, March 1st, 2020
OS Version | Debian GNU/Linux rodete
Active python plugins | kmltools; HCMGIS; MetaSearch; processing

Additional context
It seems that in earlier versions of qgis, the "Edit Layer" and "Save Layer Edits" buttons were grayed out (can be seen here and here).

Preliminary debugging
The error seems to occur on the QgsOgrProvider::changeGeometryValues function. Within this function, the failure is caused by the api call OGR_L_SetFeature, which returns OGRERR_UNSUPPORTED_OPERATION. Surprisingly, it seems like OGR_L_TestCapability("RandomWrite") returns true on this layer, which should indicate that the operation should have been supported.

@yotamgi yotamgi added the Bug Either a bug report, or a bug fix. Let's hope for the latter! label Sep 29, 2020
@yotamgi yotamgi changed the title OGR Error when editing kml file OGR Error when editing a kml file Sep 29, 2020
rouault added a commit to OSGeo/gdal that referenced this issue Sep 29, 2020
…ayer, when datasource is created with UPDATE_TARGETHREF creation option) (fixes qgis/QGIS#39087)
@rouault rouault self-assigned this Sep 29, 2020
@rouault rouault added Data Provider Related to specific vector, raster or mesh data providers Upstream Needs changes in an upstream library (like Qt, Proj, GDAL, ...) labels Sep 29, 2020
@yotamgi
Copy link
Author

yotamgi commented Oct 2, 2020

Thank you very much for fixing this so quickly!

Is there an ETA for when will it be backported to GDAL 3.0.4?

clrpackages pushed a commit to clearlinux-pkgs/gdal that referenced this issue Feb 15, 2022
Adam Edson (3):
      NITF: Add ACCHZB and ACCVTB TREs
      NITF: Add SNIP TREs MSTGTA and PIATGB
      NITF: Add support for SNIP TREs, PIXQLA and PIXMTA

Adam Williams (1):
      build(gdal/docker): registry/image/tag, multi arch support (#2965)

Alan D. Snow (2):
      Add GDAL_CURL_CA_BUNDLE environment variable (#3025)
      Adds OCTTransformBounds to the C and SWIG API to transform a bounding box (fixes #4630)

Alan Thomas (8):
      DXF: Propagate PaperSpace field from INSERTs to subfeatures
      DXF: Fix wrong transformer composition for ASM entities
      DXF: Fix failing test in previous commit
      DXF: Skip hatch polyline segments with one vertex
      dxf: Add link to known issues file in docs [ci skip]
      DXF: Improved handling of very long lines of text in DXF file (#3909)
      DXF: Fix crash on malformed file (fixes #3936)
      DXF: Correctly handle hidden (invisible) INSERTs

Aleksandr Dezhin (1):
      Doc: Fix curly braces formatting in vsizip (#3270)

Alessandro Pasotti (5):
      Add unique constraints to OGRFieldDefn in core and GPKG driver (#2622)
      Add GDALDataset::AbortSQL (#2953)
      Fix RAT SetDefaultRAT for GTiff driver (#3796) (fixes #3783)
      OGR SQL: Support ISO-8601 literal dates with IN operator (#3978) (fixes #3977)
      GPKG add error message when prepare fails

Alex Kennedy (1):
      Fixed buffer overflow in BuildParseInfo for SQL query when joining multiple tables that each have implicit FID columns.

Alexandre Neto (2):
      Doc: gdal_calc.rst: adds note about same datatype operations (#2968)
      Doc: small fix to syntax (#4089)

Andrea Giardini (1):
      Docker - Rename BASE_IMAGE_NAME to TARGET_IMAGE

Andrea Giudiceandrea (10):
      gdal_rasterzie: fix an error string regarding -ts parameter (#2698)
      Docs: add GDAL_HTTPS_PROXY config option (fixes #3111)
      Doc: gdaladdo: mentions bilinear resampling
      Doc: add missing "RMS" resampling alg in GDALRegenerateOverviewsMultiBand()
      Fix dispaly of two dashes instead of a single en-dash in SQLite and FileGDB doc pages (#3504)
      Fix fomatting issue in gdal_calc.py doc
      XLS: Set OLCStringsAsUTF8 capability to TRUE
      Docs: fix link to GDAL Data Model (fixes #4527)
      Fix GDAL Data Model link in gribdataset.cpp
      GPKG: fix doc redirection

Andrew Bell (3):
      Fix tests for OSX (#3781)
      Warper: Eliminate thread lock timeouts on Windows (#3788) (fixes #3631)
      overview.cpp: color table cleanups (#3800)

Andrew C Aitchison (1):
      Microsoft have deprecated str{n,}casecmp and str{n,}icmp

Andrew Hardin (2):
      Fix small typo in python API docs
      NITF: expose ISUBCAT for each band (if non-empty) (#4028)

Andrew Joseph (2):
      Java bindings: make 'install' target copy maven artifacts (gdal-X.Y.Z.jar) to /java
      Docker ubuntu-full: switch to JRE 1.11, install Java bindings (fixes #2967) and add a WITH_FILEGDB build argument

Ari Jolma (2):
      Deprecate Perl bindings in 3.5
      WCS: Replace CompareNumbers with in-place numeric comparisons. (#4550)

Ashley Sommer (1):
      /vsiswift/: Fix openstack swift endpoint detection, add application_credential authentication support (#3960)

Attila Oláh (1):
      Fix -Wunused-but-set-variable warning.

Audifire (1):
      gdal_grid: Addition of -tr option (#2839)

Bas Couwenberg (4):
      Fix spelling errors.
      Support CharLS 2.1 on Debian as well. (#3083)
      Fix spelling errors.
      Use pkg-config for libdap when dap-config is not available.

Benjamin Lewis (2):
      WEBP: Support 'exact' option
      Build: Build windows python wrappers with -threads argument

Björn Harrtell (15):
      FlatGeobuf: updated against FlatBuffers 1.12
      FlatGeobuf: add null check for readMultiPolygon (#2461) (fixes #2459)
      FlatGeobuf: fix illegal use of std::vector (fixes #2773)
      Remove SWIG C# testing from trusty CI setup
      CSharp bindings: swig 4.0 compatibility (#2802)
      FlatGeoBuf: make GetExtent() work on feature write (fixes #2874) (#2899)
      CSharp bindings: Fixed implementation of Utf8BytesToString (#2649)
      FlatGeobuf: metadata extensions (#2929)
      FlatGeobuf; editable capabilities
      ogr2ogr: -emptyStrAsNull option
      CI: skip test on ubuntu_1804
      New feature: UUID string subtype
      FlatGeobuf: Port upstream changes to fix oss-fuzz issue 27530
      FlatGeobuf: Upgrade to Flatbuffers 2.0
      FlatGeobuf: min align to 8 bytes

Blayne Chard (2):
      COG/GTiff: allow customising overview compression type (fixes #3453)  (#3487)
      OGRSpatialReference::SetFromUserInput() allow https:// when loading CRS from opengis.net (#3549) (fixes #3548)

Brad Hards (2):
      nitf: add MATESA TRE in support of Spectral NITF Implementation Profile
      nitf: add support for GRDPSB TRE

Brendan Jurd (2):
      Docs: Add a descriptive Main Page to the Doxygen site.
      PG: skip all leading whitespace in SQL statements. (#4787)

Bruno P. Kinoshita (1):
      Fix typos

Bumsik Kim (1):
      gdal2tiles.rst - Add missing -x, --exclude option

C41eb (6):
      gdalasyncread.cpp: add missing .h to gdal_version include. (#3951)
      Updated poCT to call correct method
      makefile.vc: remove Unix commands in lib_dist target (#3986)
      GeoTIFF SRS reading: ignore vertical information when one of the tag has a value in the private user range (#4197)
      Add ASAN symbolizer so stack traces are useful
      Python bindings: Change GetFieldAsBinary to use VSIMalloc. (#4774)

Chiara Marmo (2):
      FITS: apply vertical mirroring on reading/writing
      Unix build: generate `./configure` with `./autogen.sh` during build process. (#4499) (fixes #3561)

Chris Zielin (1):
      Replace ToInt32 calls with ToInt64 to prevent an ArithmeticException when executing against large images in a 64-bit context. Related to issue #3289

Dan Baston (1):
      VRT: Support named arguments to C++ derived band pixel functions (#4049)

Dan Minor (1):
      gdal2tiles: Fix layer generation with raster profile and nonnative zoom (fixes #2799) (#2808)

Daniel Baston (20):
      Doc: Fix typos in vector APi tutorial
      Fix typos in comments
      gdaltest: Fix handling of ContentTooShortError in gdalurlopen
      autotest: Update Landsat 7 download URL [ci skip]
      README.md: Link badges to CI output; use https in URLs [ci skip]
      netCDF: Set scope for raster/vector-only options in driver metadata
      Doc: Document OGR_CURRENT_DATE config option used by GeoPackage
      CI: Skip CI for documentation-only commits
      Doc: Remove reference to Travis CI / AppVeyor
      Remove incorrect comment
      CI: Skip AppVeyor for doc-only commits
      CI: Fix AppVeyor skip for doc-only commits
      Doc: Fix some typos
      Doc: fix some typos in wktproblems.rst
      OGR: Avoid SWIG generating exception on OGRGeometry::IsValid
      OGR: Support multiline WKT input
      Doc: add some entries to RST style guide
      Doc: Add cross-references, apply formatting to VRT driver doc
      Doc: Reformat list of default pixel functions as table
      VRT: Add interpolate_linear pixel function

Daniel Evans (13):
      Move webserver setup to fixture
      Use gdaltest.config_options for env vars
      Refactor ogr_index_test.py to remove dependency on test order which causea a segfault in some circumstances. Split some assertions into separate tests.
      Linting of tests in gcore/vsis3
      Refactor test fixtures to move definition of AWS test env vars to a single fixture, and to ensure the env vars are reset after each test
      Change gcore test webserver to be persisted across all tests to improve test performance
      Remove cppcheck_1604
      Fix vsis3 test setup being ignored
      Maintenance: Setup flake8 config file, update code_checks paths
      Linting - un-ignore several warnings, don't lint auto-generated Swig files
      Linting - fixes for osgeo_utils highlighted by updated flake8 config
      Test - Refactor gdalhttp.py to remove dependency on test order
      Remove test_http_5 which tests old, now replaced behaviour

Daniel Minor (1):
      ogrshapedriver: do not claim to support DateTime data type

DanielFEvans (1):
      Update NEWS

David Sinuela Pastor (1):
      configure.ac: Configure proj dependencies before proj (#2512)

Denis Rykov (2):
      Update default values for VirtualEarth minidriver
      Reflect changes of VirtualEarth driver in the docs

Dirk Vanden Boer (2):
      Fix compilation with NCDF_DEBUG defined
      Fix vrt spatial filter for geometry columns with space

Dmitry Baryshnikov (3):
      NGW: Fix #2501. Change checksum test way
      CPLHTTPFetch: fix reading FORM_FILE_PATH on Windows (#2971)
      NGW: Add extensions support. Add alternative field name support. Fix #3530 [Fix unit test for more checks of sandbox.nextgis.com availability]

Dylan Sutton (1):
      Doc: replace 'an handle' with 'a handle' everywhere in the project

Dzjkb (1):
      Update gdal2tiles.rst - typo

Edzer Pebesma (1):
      GPKG: capitalize cartesian as Cartesian for SRS of id -1 'Undefined Cartesian coordinate reference system' (#4468)

Elliott Sales de Andrade (31):
      Parameterize alg tests.
      autotest: Remove Python 2 BaseHTTPServer.
      autotest: Remove Python2-only tests.
      autotest: Fix test_ogr_feature_unicode on Python 3.
      autotest: Remove code under sys.version_info < 3.
      autotest: Embed urlescape in its one user.
      autotest: Embed spawn_async and wait_process in their one caller.
      autotest: Remove unused run_func.
      autotest: Embed gdaltestaux into gdaltest.
      autotest: Add ids to alg parametrization
      autotest: Change test_warp_53 to xfail on Darwin.
      configure: Also save LDFLAGS when checking compilability.
      configure: Ensure --with-geos/sfcgal fail if unavailable.
      python: Remove deprecated NumPy aliases for standard types.
      python: Remove checks for old sys.version[_info].
      python: Remove try/except for old Python.
      python: Remove C code for Python <3.6 support.
      python: Remove type(u'')), which is always str.
      python: Apply 2to3 fixers directly to code.
      python: Remove 2to3 from package setup.
      swig: Fix dependencies in Makefiles for Python.
      python: Tell SWIG to use relative imports.
      python: Shorten SWIG postprocessing commands.
      python: Regenerate SWIG files.
      autotest: Use pytest.importorskip to simplify skips.
      autotest: Use marks for platform-specific skips.
      autotest: Use a single mark to skip virtualmem tests.
      autotest: Combine prints directly before pytest.skip/fail
      autotest: Add comments about module-level skips.
      autotest: Simplify Linux-specific skips.
      autotest: Remove unnecessary skips.

Emily Soth (1):
      Python >= 3.8 import: fix FileNotFoundError when PATH has nonexistent paths on Windows (fixes #3898) (#3923)

Even Rouault (2451):
      Update version numbers to 3.2.0dev
      Numerous typo fixes
      doc/source/gdal_rtd: add LICENSE file from https://github.com/planetfederal/sphinx-theme/blob/bd24a2d38eb250d79b56b3df979679abaebd4bac/LICENSE [ci skip]
      NEWS: s/multidirectional/multidimensional/ [ci skip]
      Docker: install python-is-python3 package for Ubuntu images (fixes #2450) [ci skip]
      configure: use sed -E or sed -r depending on runtime availability
      ax_lib_sqlite3.m4: tiny fix for ac_sqlite3_version (non critical)
      Add support for CharLS 2.1
      Doc: pdf.rst: more precisions on BANDS open option [skip travis] [skip appveyor]
      Warper RPC: fix issue when source image has a geotransform (fixes #2460)
      Polygonize: improve performance on large rasters
      Doc S57: remove incorrect information and mention DSID layer [skip travis] [skip appveyor]
      Doc: cog.rst: remove useless mention [skip travis] [skip appveyor]
      EXR: add missing #include <algorithm> (fixes #2467)
      gt_overview.h: remove CPL_DLL on GTIFFBuildOverviewsEx(). Was just needed in a transient period when the COG driver was developed as a plugin
      EPSGTreatsAsNorthingEasting(): fix it to properly deal with Polar projected CRS with northing,easting order, such as EPSG:32661, EPSG:32761 or EPSG:5482
      Prepare for 3.1.0RC3
      Update NEWS
      Doc: cog.rst: move option in right location [skip travis] [skip appveyor]
      /vsis3/: recognize AWS_PROFILE in addition to obsolete AWS_DEFAULT_PROFILE (fixes #2470)
      Doc: mssqlspatial.rst: remove obsolete section about spatial index [skip travis] [skip appveyor] (fixes #2476)
      PGDump: change default value of POSTGIS_VERSION layer creation option to 2.2 (loosely relates to #2472)
      pgdump.rst: typo fix [skip travis] [skip appveyor]
      frmts/nitf/readme.md: add link to sample files [skip ci]
      Doc: community.rst: mentions FOSS4G 2020 cancelation [skip travis] [skip appveyor]
      Warper: simplify creation of per-thread transformer
      GPKG raster: fix GDAL 3.0 regression regarding some update scenarios (fixes #2325)
      .travis.yml: disable notifications as they are probably more spam than useful [skip appveyor] (#2485)
      HOWTO-RELEASE: improvements regarding Python doc refresh [ci skip]
      Doc: update for 3.1.0 [skip travis] [skip appveyor]
      HOWTO-RELEASE: updates [ci skip]
      HOWTO-RELEASE: update [ci skip]
      nmake.opt: mention shell32.lib in PROJ_LIBRARY (fixes #2488) [ci skip]
      Docker README.md: update with tags for 3.1.0 [ci skip]
      Travis: change download URL for clang 6.0 and 9.0 due to persisting issues with upstream URL [skip appveyor] (#2497)
      PDS: take into account FIRST_STANDARD_PARALLEL for Mercator projection (fixes #2490)
      S57: apply update to DSID_EDTN field (fixes #2498)
      autotest/gdrivers/ngw.py: temporarily disable test_ngw_7 (refs #2501) [ci skip]
      ES: make OVERWRITE_INDEX=YES work properly by re-creating the index afterwards (found when investigating #2502, but not adressing it)
      Remove API_PROXY mechanism: likely never used for real stuff
      Travis sanitize: upgrade to clang 9
      cpl_json.h: change the Type and PrettyFormat 'enum' to 'enum class', so that Double doesn't conflict with a C enum from OGDI include files
      autotest/ogr/ogr_ngw.py: fix 'local variable 'cs' is assigned to but never used' pyflakes issue (refs #2501)
      autotest: update a few URLs to test file in github OSGeo/gdal/master to OSGeo/gdal/release/3.1 in provision for moves in master
      autotest: move (most) test files from shape driver and S57 to dedicated subdir
      autotest: move geojson and dxf test files to dedicated subdir
      autotest: make standalone ogr_topojson.py and move test files to dedicated subdir
      autotest: esrijson: move test files to dedicated subdir
      autotest: mitab: move test files to dedicated subdir
      autotest: kml: move test files to dedicated subdir
      autotest: gml, gmlas: move test files to dedicated subdir
      autotest: wfs: move test files to dedicated subdir
      autotest: nas: move test files to dedicated subdir
      autotest: osm: move test files to dedicated subdir
      SHPWriteOGRFeature: code improvement
      PULL_REQUEST_TEMPLATE.md: add doc in task list [ci skip]
      SWIG: {OGRDriver}.CopyDataSource(): check that source dataset is not NULL
      autotest: ods: move test files to dedicated subdir
      autotest: xlsx: move test files to dedicated subdir
      autotest: openfilegdb/fgdb: move test files to dedicated subdir
      autotest: bna: move test files to dedicated subdir
      autotest: avc: move test files to dedicated subdir
      autotest: jml: move test files to dedicated subdir
      autotest: geoconcept: move test files to dedicated subdir
      autotest: dgnv8: move test files to dedicated subdir
      autotest: dgn: move test files to dedicated subdir
      autotest: xls: move test files to dedicated subdir
      autotest: pds: move test files to dedicated subdir
      autotest: xplane: move test files to dedicated subdir
      autotest: gpx: move test files to dedicated subdir
      autotest: sqlite: move test files to dedicated subdir
      autotest: sua: move test files to dedicated subdir
      autotest: svg: move test files to dedicated subdir
      autotest: georss: move test files to dedicated subdir
      ogr_csw.py & ogr_georss.py: update path to ionic_wfs.gml
      autotest: arcgen: move test files to dedicated subdir
      autotest: idrisi: move test files to dedicated subdir
      autotest: mdb: move test files to dedicated subdir
      autotest: vdv: move test files to dedicated subdir
      autotest: gmt: move test files to dedicated subdir
      autotest: gtm: move test files to dedicated subdir
      autotest: vfk: move test files to dedicated subdir
      autotest: csv: move test files to dedicated subdir
      autotest: pdf: move test files to dedicated subdir
      autotest: gpsbabel: move test files to dedicated subdir
      autotest: segukooa: move test files to dedicated subdir
      autotest: htf: move test files to dedicated subdir
      autotest: sxf: move test files to dedicated subdir
      autotest: rec: move test files to dedicated subdir
      autotest: geojsonseq: move test files to dedicated subdir
      autotest: sosi: move test files to dedicated subdir
      autotest: cad: move test files to dedicated subdir
      autotest: dods: move test files to dedicated subdir
      autotest: gpkg: move test files to dedicated subdir
      autotest: mapml: move test files to dedicated subdir
      autotest: openair: move test files to dedicated subdir
      autotest: oapif: move test files to dedicated subdir
      autotest: vrt: move test files to dedicated subdir
      autotest: sdts: move test files to dedicated subdir
      autotest: update paths to GML files
      Avoid copy&paste implementations of GetNextFeature() relying on GetNextRawFeature()
      build_seed_corpus.sh: fixes for data files in subdirectories
      autotest: vicar: move test files to dedicated subdir
      autotest: ignfheightasciigrid: move test files to dedicated subdir
      autotest: nitf: move test files to dedicated subdir
      autotest: srp: move test files to dedicated subdir
      autotest: pds4: move test files to dedicated subdir
      autotest: isis3: move test files to dedicated subdir
      autotest: pdf: move test files to dedicated subdir
      autotest: netcdf: move test files to dedicated subdir
      autotest: ilwis: move test files to dedicated subdir
      autotest: fast: move test files to dedicated subdir
      autotest: ingr: move test files to dedicated subdir
      autotest: saga: move test files to dedicated subdir
      autotest: rmf: move test files to dedicated subdir
      autotest: pds: move test files to dedicated subdir
      autotest: hfa: move (most) test files to dedicated subdir
      autotest: bag: move test files to dedicated subdir
      autotest: ndf: move test files to dedicated subdir
      autotest: genbin: move test files to dedicated subdir
      autotest: lcp: move test files to dedicated subdir
      autotest: usgsdem: move test files to dedicated subdir
      autotest: roipac: move test files to dedicated subdir
      autotest: ntv2: move test files to dedicated subdir
      autotest: blx: move test files to dedicated subdir
      autotest: gxf: move test files to dedicated subdir
      autotest: loslas: move test files to dedicated subdir
      autotest: bsb: move test files to dedicated subdir
      autotest: gpkg: move test files to dedicated subdir
      autotest: til: move test files to dedicated subdir
      autotest: nwt_grd: move test files to dedicated subdir
      autotest: nwt_grc: move test files to dedicated subdir
      autotest: mbtiles: move test files to dedicated subdir
      autotest: byn: move test files to dedicated subdir
      autotest: leveller: move test files to dedicated subdir
      autotest: adrg: move test files to dedicated subdir
      autotest: sentinel2: move test files to dedicated subdir
      autotest: ers: move test files to dedicated subdir
      autotest: isce: move test files to dedicated subdir
      autotest: eir: move test files to dedicated subdir
      autotest: doq1: move test files to dedicated subdir
      autotest: jdem: move test files to dedicated subdir
      autotest: mff: move test files to dedicated subdir
      autotest: mff2: move test files to dedicated subdir
      autotest: dipex: move test files to dedicated subdir
      autotest: cpg: move test files to dedicated subdir
      autotest: snodas: move test files to dedicated subdir
      autotest: rraster: move test files to dedicated subdir
      autotest: kmlsuperoverlay: move test files to dedicated subdir
      autotest: rasterlite: move test files to dedicated subdir
      autotest: vrt: move (most) test files to dedicated subdir
      autotest: gtx: move test files to dedicated subdir
      autotest: isg: move test files to dedicated subdir
      autotest: envi: move test files to dedicated subdir
      autotest: pcidsk: move test files to dedicated subdir
      autotest: ehdr: move (most) test files to dedicated subdir
      autotest: rs2: move test files to dedicated subdir
      autotest: hdf5: move test files to dedicated subdir
      autotest: ngsgeoid: move test files to dedicated subdir
      autotest: ntv1: move test files to dedicated subdir
      autotest: ecw: move test files to dedicated subdir
      autotest: mrsid: move test files to dedicated subdir
      autotest: dted: move (most) test files to dedicated subdir
      autotest: r: move test files to dedicated subdir
      autotest: wms: move test files to dedicated subdir
      autotest: rl2: move test files to dedicated subdir
      autotest: idrisi: move test files to dedicated subdir
      autotest: ceos: move test files to dedicated subdir
      autotest: wmts: move test files to dedicated subdir
      autotest: webp: move test files to dedicated subdir
      autotest: dds: move test files to dedicated subdir
      autotest: aaigrid: move test files to dedicated subdir
      autotest: gsg: move test files to dedicated subdir
      autotest: iris: move test files to dedicated subdir
      autotest: ida: move test files to dedicated subdir
      autotest: doq2: move test files to dedicated subdir
      autotest: isis2: move test files to dedicated subdir
      autotest: pcraster: move test files to dedicated subdir
      autotest: pnm: move test files to dedicated subdir
      autotest: terragen: move test files to dedicated subdir
      autotest: gsc: move test files to dedicated subdir
      autotest: lan: move test files to dedicated subdir
      autotest: fujibas: move test files to dedicated subdir
      autotest: e00grid: move test files to dedicated subdir
      autotest: ctg: move test files to dedicated subdir
      autotest: elas: move test files to dedicated subdir
      autotest: grib: move test files to dedicated subdir
      autotest: gmt: move test files to dedicated subdir
      autotest: l1b: move test files to dedicated subdir
      autotest: sigdem: move test files to dedicated subdir
      autotest: grasasciigrid: move test files to dedicated subdir
      autotest: sgi: move test files to dedicated subdir
      autotest: hdf4: move test files to dedicated subdir
      autotest: gif: move test files to dedicated subdir
      autotest: jpeg: move test files to dedicated subdir
      autotest: png: move test files to dedicated subdir
      autotest: aigrid: move test files to dedicated subdir
      autotest: jpeg2000: move test files to dedicated subdir
      autotest: ngw: move test files to dedicated subdir
      autotest: gtiff: move test files to dedicated subdir
      autotest: paux: move test files to dedicated subdir
      cpl_json.h: add an iterator on array items, and fix const correctness of LoadUrl() method
      gcore: add a TileMatrixSet class to parse OGC Two Dimensional Tile Matrix Set 17-083r2 JSON encoded definitions, and add NZTM2000 and LINZAntarticaMapTileGrid definitions
      SXF: fixes for big-endian
      netcdfsg: fix for big-endian
      SHPRestoreSHX: fix for (64 bit) big endian
      GMLAS: fix so as to get same unique ids on big-endian arch
      VICAR: fix for Basic compression and non-Byte type on big endian host
      BAG: fix for big endian arch
      HDF5 multidim: fixes for big endian host
      test_tiff_ovr_37: fix for big endian
      exr.py: add expected checksum for s390x
      pdf.py: add expected checksum for s390x
      mrf.py: skip LERC tests if LERC not enabled
      tiff_write.py: add xfail for s390x
      vrtpansharpen.py: add expected cs for s390x
      gpkg.py: add expected cs for s390x
      ogr_mvt.py: skip test_ogr_mvt_point_polygon_clip() on s390x
      ci/travis/s390x: create
      .travis.yml: replace big_endian by s390x
      COG (and GPKG): add support for using custom TILING_SCHEME using OGC 17-083r2 JSON encoded definitions
      COG: write information about tiling scheme in a TILING_SCHEME metadata domain
      Travis-CI Ubuntu 18.04: install postgis_raster extension
      COG: workaround a libtiff bug exposed by recent work that caused codecs not to be advertized sometimes (master only)
      Internal libtiff: fix TIFFGetConfiguredCODECs() for registered codecs
      GTiff: for Geodetic TIFF grids (GTG), report the 'grid_name' metadata item in the subdataset description
      Commit file that should have gone in previous commit
      GTiff: fix reading/writing GEO_METADATA TIFF tag on big-endian
      tiff_write.py: remove xfail for GEO_METADATA TIFF tag test on big-endian
      gdal2tiles: make general cmd line switches like --formats work without exception (fixes #2522)
      GPKG raster: increase limitation of number of tables to 10000, and make it configurable through OGR_TABLE_LIMIT config option as for vector tables
      nmake.opt: revert unwanted change regarding OCI_LIB / OCI_INCLUDE, and also allow to override them (fixes #2533)
      Warper/transformer: avoid error about invalid latitude when warping a dataset in Geographic CRS whose north/south lat is > 90deg (fixes #2535)
      Doc: generate man pages for gdalmdiminfo, gdalmdimtranslate and gdal_viewshed (fixes #2538) [skip travis] [skip appveyor]
      Doc: remove HTML-only output that confuses PDF output for gdal_viewshed and other utilities (fixes #2539) [skip travis] [skip appveyor]
      Doc: PDF: move license and faq upper in the doc (fixes #2546) [skip travis] [skip appveyor]
      Doc: replace a few references to PROJ.4 the library as PROJ (fixes #2547) [skip travis] [skip appveyor]
      Doc: gdalmdiminfo.rst: s/gdalinfo/gdalmdiminfo/ (fixes #2537) [skip travis] [skip appveyor]
      Doc: osr_api_tut.rst: fix typo [skip travis] [skip appveyor]
      /vsis3/: GetConfigurationFromEC2(): slight change for easier testing in preparation of IMDSv2 support. No functional change
      cpl_aws.cpp: rename global variables appropriately
      /vsis3/: use IMDSv2 protocol to retrieve IAM role and credentials
      osr_compd.py: update expected result with up-to-date definition
      COG: add a SPARSE_OK=YES option to create sparse files
      GTiff: fix importing WGS_1984_Web_Mercator / ESRI:102113 (fixes #2560)
      tiff_srs.py: update expected result with up-to-date definition
      Improve documentation of gdal2tiles (fixes #2549)
      Doc: ogr_feature_style.rst: remove tables to avoid corrupted PDF output (fixes #2556) [skip travis] [skip appveyor]
      Doc: tag a few configuration options [skip travis] [skip appveyor]
      Doc: fix/rework tables in eeda.rst and gmlas_metadata_layers.rst for better PDF rendering (fixes #2554) [skip travis] [skip appveyor]
      Doc: vector/vrt.rst: fix formatting (fixes #2555) [skip travis] [skip appveyor]
      Doc: vector/vrt.rst: use ..code-block:: XML [skip travis] [skip appveyor]
      Doc: remove mentions to obsolete GDAL version [skip travis] [skip appveyor]
      Doc: remove mentions to obsolete GDAL version [skip travis] [skip appveyor]
      mrsid: fix compilation warning about strncat()
      mrsid: change SerializeMetadataRec() method to static function
      MVT: fix 'random' failures in test_ogr_mvt_point_polygon_clip() by sorting sub-directory names, and also revise logic to attribute FID when reading directories (#2566)
      OGRShapeDataSource::RefreshLockFile(): fix threading issue that should hopefully fix random hangs on test_ogr_shape_115_shp_zip() (#2567)
      Doc: change PDF title to 'GDAL Documentation' (fixes #2572) [skip travis] [skip appveyor]
      Doc: wms.rst: fix broken RST (but links to images are dead) [skip travis] [skip appveyor]
      .travis.yml: run ubuntu_1804 config directly on bionic VM (#2568)
      netCDFDataset::GrowDim(): fix issue with non-ASCII filename on Windows
      Address cppcheck 2.0 warnings
      ogr_geometry.h: export OGRWktOptions class (#2576)
      MITAB: fix reading and writing of Transverse Mercator projections based on KKJ
      OSR: Make GetAuthorityCode('PROJCS') work on a WKT1 COMPD_CS with a VERT_DATUM type = 2002 (Ellipsoid height)
      test_jp2openjpeg_22(): add new accepted checksum
      doc/source/build_configoptions_index.py: handle multiple decl_configoption per line [skip travis] [skip appveyor]
      SWIG bindings: validate range of resample_alg algorithm (fixes for GDAL bindings similar issue reported in refs #2587) (#2591)
      OSR: fix crashing bug introduced by b8da6777a3e5560f6372b2dc3e7b89bf96d64d59 (master only)
      Add perftests/cog.py and perftests/overview.py
      CPLWorkerThreadPool: add capability to create several job queues
      gcore: add a global thread pool
      GTiff: use gcore global thread pool
      Warper: use gcore global thread pool
      Overview building: rework to avoid I/O to be done in resampling kernel
      COG: propagate NUM_THREADS for overview building
      GDALRegenerateOverviewsMultiBand(): add multi-threading of resampling computations when GDAL_NUM_THREADS config option is set
      Overview computation: remove dead code related to GDAL_ENABLE_RESAMPLING_MULTIBAND
      Doc: enhancements for GDALRegenerateOverviews()
      GDALRegenerateOverviews(): add multi-threading of resampling computations when GDAL_NUM_THREADS config option is set
      gdal_priv_templates.hpp: sanitize template overloading, and fix GDALCopy8Words not calling specializations of GDALCopy4Words
      GTiff: allow multi-threaded JPEG compression. This can help a bit
      Overview: convolution kernels: perform conversion to final type
      GDAL Python (VRT or Python drivers): try libpython3.9m.so / python39.dll
      Docker ubuntu-full: update to tiledb 2.0.2 [ci skip]
      swig/java/build.xml: update minimum source/target Java version to 7 to please JDK 11 (fixes #2594) (#2595)
      GDALDriver::QuietDelete(): partialy revert 3.1 commit f60392c8
      Make ogr2ogr -f PostgreSQL work when using PG:service= syntax (fixes https://github.com/OSGeo/gdal/issues/2373#issuecomment-632361396)
      alg/polygonize.cpp: add missing reference qualifier to fix -Wrange-loop-construct (master only)
      gribdataset.cpp: add missing reference qualifier to fix -Wrange-loop-construct
      rmfdataset.h and cpl_vsil_curl_class.h: fix -Wnon-c-typedef-for-linkage warnings
      ogr_wfs.h and ogr_elastic.h: fix -Wdeprecated-copy warnings
      ODS: avoid potential deep call stack in formula evaluation. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=22237
      INGR: avoid invalid cast on corrupted data. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=22351
      COG: add extra CPL_DEBUG traces, in particular for end of generation
      SWIG: expose CPLSetCurrentErrorHandlerCatchDebug() as gdal.SetCurrentErrorHandlerCatchDebug()
      COG: skip reprojection when source dataset matches reprojection specifications
      OSM: remove limitation to 10000 nodes per way. Fixes https://github.com/OSGeo/gdal/issues/849
      COG: add ZOOM_LEVEL_STRATEGY creation option
      COG: make sure that ZOOM_LEVEL_STRATEGY=UPPER/LOWER applied on input data already on a zoom level doesn't lead to selecting another zoom level
      GPKG: make sure that ZOOM_LEVEL_STRATEGY=UPPER/LOWER applied on input data already on a zoom level doesn't lead to selecting another zoom level
      Viewshed: adjust computation of observer position (refs #2599)
      README.md: remove table with tested configurations [ci skip]
      Doc: cog.rst: typo fix [skip travis] [skip appveyor]
      doc: vrt.rst: add precision regarding out_ar [skip travis] [skip appveyor]
      CPLStrtodDelim(): recognize '1.#SNAN' as a NaN value
      gdalinfo: json output: report nan/inf values as a string instead of invalid JSON
      appveyor.yml: update config of VS2017 to 2019 (#2607)
      Doc: sql_sqlite_dialect.rst: fix hyperlinks [skip travis] [skip appveyor]
      MapInfo .tab: fix writing empty/null Time fields (fixes #2612) (#2613)
      GPKG: make sure GetNextFeature() called after iteration end doesn't reset the iterator (shouldn't be an issue for normal use of OGR API)
      Avoid warnings in GetProjTLSContextHolder() when PROJ resource path is not already set (fixes https://github.com/OSGeo/PROJ/issues/2242)
      GDALResampleChunk32R_Mode(): fix heap-buffer-overflow. master only. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=22642
      SQLite: make sure GetNextFeature() always return nullptr after the first time it did (ie no implicit ResetReading())
      PCIDSK: make sure GetNextFeature() always return nullptr after the first time it did (ie no implicit ResetReading())
      MSSQLSpatial: make sure GetNextFeature() always return nullptr after the first time it did (ie no implicit ResetReading())
      MySQL: make sure GetNextFeature() always return nullptr after the first time it did (ie no implicit ResetReading())
      test_ogrsf: check that GetNextFeature() always return nullptr after the first time it did (ie no implicit ResetReading())
      DXF: do not rely on tail recursion and avoid potential big stack calls when eliminated 999 comment lines. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=22668
      /vsis3/: bring back IMDSv1 compatibility. Fixes https://github.com/OSGeo/gdal/pull/2550#issuecomment-635394807. master only
      PDF vector: write correctly attribute object dictionary when there is no field to write, and read back correctly broken files we generated before (fixes #2624)
      Doc: cog.rst: update note about overview and multithreading [skip travis] [skip appveyor]
      PG: take into potential generated columns (PostgreSQL >= 12) to avoid issuing INSERT, UPDATE or COPY statements with them
      GPKG: fix detection of unique field from a CREATE UNIQUE INDEX when there's a different in case for the column name between this statement and in the table creation
      Docker: update Alpine based images to 3.12 [ci skip]
      .travis.yml: disable s390x target since Travis-CI infra is KO regarding this, and reenable big endian cross compilation [skip appveyor]
      ci/travis/big_endian/install.sh: attempt at fixing build [skip appveyor]
      appveyor.yml: workaround VS 2015 build failure due to vcpkg issue [skip travis]
      ogrinfo: report UNIQUE constraint
      Add a GDAL_DCAP_UNIQUE_FIELDS capability
      PG: rewrite and simplify how to get table definition
      PG: add support for retrieving and creating UNIQUE constraints
      PGDump: add support for creating UNIQUE constraints
      OGR VRT: add support for reading UNIQUE constraints
      SQLite: add support for retrieving and creating UNIQUE constraints
      GML: add support for retrieving and creating UNIQUE constraints
      github workflows: add cifuzz [skip travis] [skip appveyor] (#2631)
      gdal/fuzzers/build.sh: git clone dependencies from build.sh to avoid issues with cifuzz [ci skip]
      ossfuzz: add netcdf patches [ci skip]
      .github/workflows: disable cifuzz.yml because of 'System.IO.IOException: No space left on device' [ci skip]
      detect_suspicious_char_digit_zero.sh: improve to be run from anywhere
      GH actions: add code_checks.yml
      CI: remove code qualify checks from Travis jobs now they are in github actions
      github actions: add clang_static_analyzer.yml
      .travis.yml: remove CLang static analyzer builds now they are in github actions
      ci/travis/csa_common/before_install.sh: fix to make it work on github action
      GDALMDArray::GetScale() and GetOffset(): avoid nullptr dereference
      Internal libtiff: TWebPSetupEncode(): fix logic problem (and instead of or) in test that checks input is 8bit unsigned data
      HFA: do not report TOWGS84 when reading SRS with WGS84, NAD27 or NAD83 datums (unless OSR_STRIP_TOWGS84 config option is set to NO)
      code_checks.yml: add ccache [ci skip]
      cpl_http.cpp: avoid clang over-zealous -Wold-style-cast warnings
      GitHub action: add MacOS build [ci skip]
      test_gdal.cpp: skip test 20 on MacOS build github workflow [ci skip]
      MacOS testing: update PYTHONPATH [ci skip]
      swig/python/samples/validate_gpkg.py: make it work with recent SQLite3 versions
      autotest: add missing xmlns:xlink in sample files to make Xerces parser happy
      GML hugefileresolver: add missing xmlns:xlink to make Xerces parser happy
      test_http_6(): use data source of a always available driver
      jp2openjpeg.py: fix XML compliance issues raised when using Xerces parser
      gdal_calc.py: raise exception in case of I/O error. Fixes https://github.com/qgis/QGIS/issues/36867
      LCP: add extension checking in Identify() (fixes #2641)
      Fix warnings raised by cppcheck 1.82 of Ubuntu 18.04
      GH workflows check: add a cppcheck job based on Ubuntu 18.04
      /vsicurl/: defer reading of CPL_VSIL_CURL_CHUNK_SIZE and CPL_VSIL_CURL_CACHE_SIZE config options until a /vsicurl/ access (or other network filesystem) is done
      gdalinfo, gdal_translate, gdalwarp: add a -if switch to be able to specify input driver(s) (refs #2641)
      macos.yml: build with expat
      .travis.yml: disable MacOS config now that GitHub action equivalent one has comparable set of dependencies
      GitHub actions: make them honour ci skip hints [ci skip]
      hdf5vfl.h: fix VS2019 warning
      gdal_calc.py avoid DeprecationWarning about invalid escape sequence
      autotest: fix various Py3 deprecation warnings
      ogr_sxf.py: skip part of test on windows
      test_validate_jp2.py: make it robust to different order in reported error/warnings
      Use gdal.TermProgress_nocb to avoid issue on Windows with Python 3.7.7
      Add windows_build.yml
      appveyor.yml: disable VS2019 conf now in github action
      Revert ".travis.yml: disable s390x target since Travis-CI infra is KO regarding this, and reenable big endian cross compilation" [skip appveyor]
      Doc: remove COVID alert [ci skip]
      GPKG: fix wrong RTree _update3 trigger on existing files
      GRIB: avoid rejecting valid product due to security check
      gdaldem: ignore 'nv' entry in color file if there is no nodata value in input file
      SQLite: avoid error to be emitted on layers that are views (master only)
      autotest: importe pytest'ification
      GTiff: fix potential crash when generating degenerate 1x1 overviews
      GTiff: fix crash of previous commit
      Warper: fix average resampling that lead to very wrong results in some circumstances (fixes #2665) (3.1.0 regression) (#2667)
      OGRFeature::GetFieldAsString(): remove 80 character limitation when formatting string/integer/real lists (fixes #2661) (#2668)
      Doc: gdaladdo: mentions bilinear resampling (refs #2671) [ci skip]
      configure: add  in LIBS when detecting PROJ when no path is specified (fixes #2672)
      code_checks.yml: add 'apt update'
      gdalwarp: fix crash if warping a dataset without source or target CRS when -ct is specified (fixes #2675)
      OGRFeatureFormatDateTimeBuffer(): fix potential heap buffer overflow introduced recently. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=23417. master only
      Doc building: fix warnings when using recent Doxygen and/or Sphinx+Breathe (fixes #2673) (#2678)
      Remove some potentially sensitive words
      S57: report attributes tagged as list in S57 dictionaries as StringList fields. Add a LIST_AS_STRINGLIST open option that can be set to OFF to restore GDAL < 3.2 behaviour (fixes #2660)
      COG: fix rounding issue when computing overview dimensions
      COG: add WARP_RESAMPLING andd OVERVIEW_RESAMPLING to override general RESAMPLING option (fixes #2671)
      COG: avoid crash if passing an invalid (warp) resampling option
      COG: add tolerance when computing tile numbers, so as to make -co TILING_SCHEME= idempotent on a file already properly tiled
      ogr_proj_p.cpp: make sure init() is called in OSRPJContextHolder() constructor to avoid potential use of default NULL PROJ context (refs #2691)
      cog.py: test proper overview dimension rounding (tests 3fd4b50c1b7aeddb2f8c3e7c0f5406b894c6dda5)
      Python bindings: add a colorSelection='nearest_color_entry'/'exact_color_entry' argument to gdal.DEMProcessing()
      /vsiaz: do not consider directory absence as an error situation for Rmdir()
      cpl_vsil_az.cpp: rename CACHE_RESULTS OpenDir() option to CACHE_ENTRIES for consistency with /vsis3
      /vsiaz/: fix OpenDir()/NextDirEntry() that returned S_IFDIR for regular files
      VSIFilesystemHandler::RmdirRecursive(): use OpenDir() in recursive mode to have more efficient directory deletion on /vsiaz/ for example
      /vsimem/: fix normalization of slashes in filenames to avoid potential infinite loop in VSIDirGeneric::NextDirEntry()
      EXR: add missing Windows build support
      gdal_priv.h: export EXIFExtractMetadata() for plugin uses
      Add raster HEIF read-only driver, relying on libheif
      XLSX: fix numeric precision issue when reading datetime that could lead to an error of 1 second (fixes #2683)
      Python bindings: accept string as value for gdal.Translate() metadataOptions and creationOptions argument when providing single option (fixes #2709)
      Fix duplicated Doxygen documentation, and remove deprecated elements from Doxyfile
      docker/ubuntu-full/bh-gdal.sh: fix shellcheck issue
      Move shellcheck to .github/workflows/code_checks.yml
      GTM: on write, do not consider TZFlag=1 (localtime) as a timezone value (refs #2696)
      GTM: on write, take into correctly timezone value to convert to UTC (refs #2696)
      configure: fix CharLS 2.1 detection on case insensitive filesystems (fixes #2710) (#2712)
      XLSX: fix potential int overflow caused by recent commit. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=23626
      Docker: add libheif dependency to alpine-normal and ubuntu-full
      CPLAtoGIntBigEx(): use strtoll() when available since POSIX doesn't guarantee atoll() will return ERANGE (and libmusl for example does not return it)
      Huffman.cpp: fix -Wnull-dereference gcc warning
      TileDB: fix compiler warnings
      MDB: fix warning when parsing 'false' boolean value
      LVBAG: fix memory leak on corrupted file. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=23686
      LVBAG: fix crash on corrupted dataset. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=23704. master only
      GeoJSON: fix opening of file starting with {"coordinates" (fixes #2720) (#2723)
      DumpJPK2CodeStream(): fix reported offset of EOC marker when PSOT = 0 (fixes #2724)
      Overview generation: fix progress percentage when using USE_RRD=YES (fixes #2722)
      PAux: avoid ingesting large binary unrelated files (found when investigating #2722)
      gdal2tiles: fix issue in nativezoom computation with --profile=raster on a raster whose size is below the tile size
      FileGDB/OpenFileGDB: qualify DateTime values with UTC timezone when <IsTimeInUTC>true</IsTimeInUTC> is present in layer metadata (fixes #2719) (#2726)
      ogrgeojsonreader.cpp and ogrcouchdblayer.cpp: fix compiler warning
      ogrdxf_leader.cpp: suppress false positive warning
      vrtdataset.cpp: fix false positive -Wnull-dereference in -O1
      s57reader.cpp: fix false positive -Wnull-dereference in -O1
      validate_gpkg.py: add expected column type for rtree with SQLite 3.31.1
      vsifile.py: modify test so that it runs fine as root
      docker/ubuntu-full/Dockerfile: workaround ogdi packaging issue [ci skip]
      autotest: fix deprecation warnings
      GitHub workflows: add a ubuntu_20.04 build
      JP2KAK: add ORGtparts creation option
      pdf.rst: fix link [skip travis] [skip appveyor]
      Doc: update to 3.1.1 [skip travis] [skip appveyor]
      HOWTO-RELEASE: fix [skip travis] [skip appveyor]
      vsis3.py: avoid error message
      reader_geo_eye.cpp: avoid potential issue with overuse of per-thread CPLPath static buffers
      GTiff: in CreateCopy() mode, avoid closing and re-opening the file handle
      /vsis3/ and other cloud file system: allow random-write access (for GTiff creation in particular) through temporary local file when CPL_VSIL_USE_TEMP_FILE_FOR_RANDOM_WRITE config option is set to YES
      GML: when encountering XML issue, defer emission of error message until we return a NULL feature, so as to avoid to confuse ogr2ogr (fixes #2730)
      /vsi3/: add CPL_VSIS3_USE_BASE_RMDIR_RECURSIVE=YES for some S3-like APIs do not support DeleteObjects
      Fix broken logic in previous commit
      gdal2tiles: fix --xyz with -p raster, fix KML generation with --xyz (fixes #2463) and update OpenLayers export to OpenLayers 6.3.1 (#2732)
      docker/ubuntu-full/: fix helper scripts for release builds [ci skip]
      configure: fix --with-hdf4 and --disable-all-optional-drivers (#2740)
      ISIS3: make sure that in-line label size is at least 65536 bytes (fixes #2741)
      Regenerate python bindings
      OSR: fix issue with PROJ context and OSRCleanup() (fixes #2744) (#2746)
      nmake.opt: add hint about adding ole32.lib to PROJ_LIBRARY for PROJ 7.1 when static linking (fixes #2743)
      windows_build.yml: update version to 3.7.8 to reflect change in image (#2750)
      CI: add missing sqlite3 dependency (#2751)
      Doc: advertize 3.1.2 release [skip travis] [skip appveyor]
      docker/ubuntu-full/bh-gdal.sh: fix logic error on setting GDAL_SHA1SUM [ci skip]
      Lerc2.cpp: Fixed a bug in Lerc2 decoder.
      Lerc: Fixed a bug in Lerc1 decoder.
      Add logging capabilities for /vsicurl, /vsis3 and the like
      Add builtin TGA image file format read-only driver
      GDALWarpOperation::ComputeSourceWindow(): modify extra source pixel computation
      BAG: allow it to be used in multidimensional mode through the generic HDF5 driver
      OSRFindMatches(): update doc to reflect current status
      OGR: better support for layers with field names differing by case in OGR SQL, SQL SQLite and VRT
      gdal2tiles: add -w mapml output, and possibilities to use custom tiling scheme / profile
      FileGDB: generate layer definition XML with HasSpatialIndex=true to better reflect reality. Not sure if this flag is really used
      FileGDB: add support for reading and writing field alternative names
      ogrinfo: report field alternative name
      test_ogrsf: in attribute filter test, quote attribute names that correspond to SQL reserved keywords
      ENVI: write nodata value in 'data ignore value' header field
      Doc: document that GSBG uses a fixed nodata value (fixes #2759)
      netCDF multidim: fix performance issue when reading from sliced array
      HDF5 multidim: fix performance issue when reading from sliced array
      netCDF multidim: optimize reading into a data type 'larger' than the native one
      Multidim GetMask(): use underlying parent data type as much as possible, instead of double, to avoid potential performance issues
      MVT writing: fix crashes in multi-threading mode (fixes #2764) (#2765)
      about_no_title.rst: fix typo [skip travis] [skip appveyor]
      VRT: round src/dst coordinates to integer within 1e-3 margin
      gdalbuildvrt: for easier understanding, and replicate gdal_translate -of VRT behaviour, clamp xSize/ySize of SrcRect/DstRect if outside raster dimensions. Not a fix per se
      reader_pleiades.cpp: avoid potential issue with overuse of per-thread CPLPath static buffers
      /vsiaz/: update to latest version of API (2019-12-12)
      VSISync(): implement chunking of large files for /vsiaz/ upload when CHUNK_SIZE and NUM_THREADS are set
      test_ogrsf: silence potential error
      FileGDB: simplify spatial filtering, and apply full intersection in GetFeatureCount() instead of BBOX one, so as to be similar to OpenFileGDB
      OpenFileGDB: more reliable .gdbtable header reading
      OpenFileGDB: add support for reading .spx spatial index file
      BAG: avoid crash on non-standard dataset
      gdal_merge.py: fix rounding of source coordinates, when they are very close to an integer, which would otherwise result in a one-pixel shift
      ISCE: avoid crashing division by zero on corrupted datasets. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=24252
      VICAR: avoid potential null-dereference on corrupted dataset. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=24254
      GNUmakefile: make 'all' target an alias of the default one to avoid potential double build of OGR objects (fixes #2777)
      Degrib g2clib: rename symbols of our internal modified copy (fixes #2775) (#2778)
      vsiaz.py: fix warnings
      /vsiaz/: add a AZURE_NO_SIGN_REQUEST=YES config option for unsigned public buckets and AZURE_SAS to provided Shared Access Signature. Both to be used with AZURE_STORAGE_ACCOUNT (#2766)
      Download/upload from/to vsis3 and vsiaz: allow also splitting single files when using VSISync() (#2786)
      GeoJSON: fix opening of file starting with {geometry:{coordinates (fixes #2787)
      Add GDALGroupOpenMDArrayFromFullname() and GDALGroupOpenGroupFromFullname(), and expose them to SWIG (#2790)
      RasterLite2: remove support for CharLS compression since it is removed from upstream librasterlite2
      multidim API: add GDALGroup::ResolveMDArray() and map it to C and SWIG
      vrt_read.py: skip test on ubuntu_1604 due to mysterious failure caused by commit c535a4d
      ogrinfo/ogr2ogr: fix issues with -sql @filename where SQL comments are not at start of line (fixes #2811)
      netCDF multidim: identify the indexing variable of a dimension through the 'coordinates' attribute of other variables (#2805)
      Doc: fixes related to pansharpening [skip travis] [skip appveyor]
      TSX driver: fix issue with reading dataset in .zip file on Windows (fixes #2814)
      ogrteigha.cpp: use correct printf formatter (fix 44ce5be4)
      ogr_dgnv8.py: fix
      Unix build: fix detection of minor version number of Poppler with the new YY.MM.X numbering scheme (fixes #2823) (#2825)
      Build unix: fix detection of Spatialite 5 build against PROJ >= 6 (#2826)
      Internal libgeotiff: avoid look up of user-defined GeogGeodeticDatumGeoKey that cause PROJ warnings (fixes https://github.com/OSGeo/libgeotiff/issues/41)
      TIFF/COG: report content of the header ghost area in metadata
      gdal_sieve.py: do not write geotransform to the target if the source doesn't have one (fixes #2830)
      GeoJSON RFC7946 writer: fix processing of geometry that covers the whole world (fixes #2833)
      Polygonize: make sure not to use dummy geotransform
      FITS: initialize default geotransform
      Perl tests: fix failure due to 7286e6f5fa5101f963e2f7d9c5b8507efabb6470
      PG: apply standard libpq parsing rules for connection parameters for our custom connection parameters (schemas, active_schemas, tables) (fixes #2824)
      GeoJSON writer: use JSON_C_TO_STRING_NOSLASHESCAPE when available to avoid escaping forward slash, and very partial resync of internal libjson-c to get it
      json_object.c: avoid harmless unsigned integer overflow
      gdalinfo -json: do not escape forward slash
      Shapefile: when several candidate SRS are found with confidence >= 90%, take the one from EPSG (contributes to fixes https://github.com/qgis/QGIS/issues/32255) (#2841)
      GTiff SRS reader: interpret infinite value in GeogInvFlatteningGeoKey as 0 (fixes https://github.com/OSGeo/PROJ/issues/2317)
      JPEG2000: fix build with Jasper 2.0.17 (fixes #2844)
      frmts/mrf/GNUmakefile: fix make target [ci skip]
      Fix doxygen typo [skip travis] [skip appveyor]
      JPEG2000: follow-up fix to build with Jasper 2.0.17 (fixes #2844)
      Add GDALMDArrayGetStatistics(), GDALMDArrayComputeStatistics() and GDALDatasetClearStatistics()
      VSISync(): add a SYNC_STRATEGY=OVERWRITE to always overwrite target file
      docker/alpine-normal: fix build related to FreeXL. And update to 1.0.6 (fixes #2851) [ci skip]
      HDF4 multidim: fix issue when reading transposed array, and duplicate attribute names (fixes #2848)
      Silence cppcheck 16.04 false positive
      MITAB: fix reading and writing of non-metre linear units
      ENVI: add support for writing south-up / rotation=180 datasets
      GPKG: more robust and simple logic to build overviews and compute overview factor (fixes #2858) (#2860)
      GPKG: on reading of gridded coverage data with PNG tiles, select -FLT_MAX as the nodata value (fixes #2857)
      Make OSRGetPROJSearchPaths() return the value set by OSRSetPROJSearchPaths()
      BAG: fix reporting of vertical CRS
      BAG: fix missing nodes at right and top edges of supergrids in resampling mode
      BAG: fix debug message
      BAG: add support for reading georeferenced metadata
      BAG: remove support for interpolated resampled raster
      BAG: add support for COUNT VALUE_POPULATION strategy
      BAG: support reading other single resolution layers on the root node
      BAG: add support for Create()/warp operation
      BAG: add support for reading the tracking list (with OGR API)
      SQLite and GPKG drivers: add a PRELUDE_STATEMENTS open option that can be used for example to attach other databases
      CPLHTTPFetch(): unset CURLOPT_POST after request has been issued (in case of re-use of a connection and doing a POST and then a GET)
      Multidim API: make ComputeStatistics() use GetMask(), and make GetMask() work with scalar arrays
      CPLHTTPFetch(): reset CURLOPT_HTTPHEADER after request
      configure: refresh
      configure: fix detection of libtiff and libjpeg on mingw (fixes #2881)
      OAPIF: avoid re-adding user query parameters if they are found in URLs returned by the API (relates to #2873)
      tilematrixset: add support for output of 'https://maps.ecere.com/ogcapi/tileMatrixSets/GoogleCRS84Quad?f=json'
      gdallinearsystem.cpp: add missing include to fix compilation issue on Slackware 14.2 (fixes #2883)
      E00grid: avoid recursive call in _GetNextSourceChar(). Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=25161
      .github/workflows/windows_build.yml: update to Python 3.7.9 [skip travis]
      GTiff: fix wrong direction for half-pixel shift with GCPs and PixelIsPoint convention
      configure: fix linking order for Informix libraries
      GML writer: correctly format OFTDate and OFTDateTime fields (fixes #2897)
      Update scripts/gdal-bash-completion.sh
      gdal2tiles.py: fix generation of tiles at high zoom levels when input is small (fixes #2896)
      IDB: fix compiler warnings. No functional change
      Add gdal_create utility to create/initialize a new raster file
      GPKG: add a DATETIME_FORMAT=WITH_TZ/UTC dataset creation option (defaults to WITH_TZ) to specify how to deal with non-UTC datetime values (fixes #2898)
      netCDF: fix setting offset and scale in CreateCopy()
      SAFE: deal correctly with WV swaths (fixes #2843)
      Lerc1Image.cpp: fix (harmless) unsigned integer overflow. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=25350
      netCDF multidim: add CHECKSUM and FILTER creation options. Make SetRawNoDataValue() use nc_def_var_fill()
      Remove all traces of GDAL and OGR ArcSDE drivers from source tree
      VRT: prevent potential infinite recursion in VRTDataset::IRasterIO() (cannot be backported as VRTDataset ABI changes)
      VRT: fix previous commit 4efd242aa51366a06299dd74aefd608404d5016a
      TileMatrixSet parser: check that supportedCRS can be parsed
      gdalwarp: improve logic for selecting input overview when target bounds and resolution are specified
      VRTDataset::IRasterIO(): fix excessive recursion prevention
      Doc: advertize new release [skip travis] [skip appveyor]
      TPS: fix handling of duplicated GCPs (fixes #2917)
      remove autotest/alg/tps.py, redundant with test_transformer_12(). Continuation of fixes #2917
      Internal libtiff: fix out-of-bonds write triggered by GDAL when repeatedly reading a corrupt strip. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=25493
      multidim: make sliced and transpose arrays access the attributes of their source array
      /vsiaz/: ReadDir(): fix caching of file properties with space in the name
      /vsis3/: test caching of file properties with space in the name
      ogrinfo: report SUBDATASETS domain
      WMS: add a GDAL_MAX_CONNECTIONS config option
      HDF5: add support for new 'CSK 2nd generation' (CSG) (patch by Philippe Ghesquiere) (fixes #2930)
      JPEG2000 drivers: extent signature for JPEG2000 codestream to avoid false positive detections. Fixes frmts/openjpeg/openjpegdataset.cpp
      internal libtiff: resync with upstream
      gdal2tiles: fix regression of #2808 when tmaxz != nativezoom (fixes #2932)
      VRTDataset::IRasterIO(): allow source overviews to be used when non-nearest resampling is used, and the VRT bands don't expose overviews (fixes #2911)
      MEM: MEMDataset::IRasterIO(): make it fallback to GDALDataset::BandBasedRasterIO() to limit code duplication
      GDALDataset::IRasterIO(): make it try overviews when non-nearest resampling is done before doing RasterIOResampled() on full resolution dataset
      mem.py: test GDALDataset::IRasterIO() with non-nearest resampling
      VRT: fix VRTRasterBand nodata handling when creating implicit overviews (fixes #2920)
      Fix language in Doxygen doc [ci skip]
      ODS and XLSX: do not create files with Zip64 extension, to avoid compatibility issue with LibreOffice Calc
      /vsis3/: additional retry on failures (patch by Robin Princeley)
      ogrlvbaglayer.cpp: make cppcheck happy [ci skip]
      ogrfeature.cpp: make cppcheck happy
      ogrfielddefn.cpp: remove useless check
      cpl_vsil_s3.cpp: make cppcheck happy
      netcdfdataset.cpp: make cppcheck happy
      gdalwarpkernel.cpp: fix memleak in error code path. CID 1432694
      gdal_create: make Coverity happy. CID 1432686
      ogr2ogr_lib.cpp: avoid Coverity false positive. CID 1432684
      esric_dataset.cpp: silence Coverity warning. CID 1432676
      gt_citation.cpp: silence Coverity warning. CID 1432674
      Internal libgeotiff: resync with upstream (GTIFGetGCSInfoEx(): remove dead code (GDAL Coverity CID 1432690))
      BAG: make Coverity happy. CID 1432673
      KEA: fix memleak in error code path. CID 1400395
      TGA: try to silence CID 1432685
      gcore/overview.cpp: try to silence CID 1432680
      LVBAG: silence CID 1432677
      MAPML: fix CID 1432682
      PGeo: fix libPath where /usr/local/lib64 or /usr/lib would not have been tried (Coverity CID 1432693)
      docker/alpine-normal: update to spatialite 5.0.0 [ci skip]
      GMLAS: avoid running out of file descriptors in case of big number of layers
      Workaround issue with UTF-8 precomposed vs decomposed encodings on MacOS filesystems that affect sidecar file discovery (fixes #2903)
      FITS: do not emit error if no georeferencing is found
      FITS: register .fits as an extension for the driver
      FITS: adopt m_ naming convention for member variables
      FITS: add support for reading multiple-extension FITS files through subdatasets
      SEGY: avoid opening FITS files
      FITS: add support for reading binary tables
      OCI: fix server 12.2 version detection
      Doc: fix issues in gdalwarpkernel.cpp [skip travis] [skip appveyor]
      Warp: fix computation of kernel resampling width when wraping accros the antimeridian
      autotest/cpp/Makefile: fix dependencies for quick_test target
      Fixes related to GEOS 3.9 OverlayNG
      cog.py: add missing unlink
      COG: fix crash when source dataset is non-Byte/non-UInt16 with a color table (fixes #2946)
      gdalwarp: better guess of target resolution when target extent is specified (fixes #2754)
      OAPIF: fix memory leak when reading schema from .xsd
      PCRaster: fix Create() mode by propagating eAccess = GA_Update (fixes #2948)
      gdal2tiles.py: make sure configuration options specified with --config are passed to worker processes (fixes #2950)
      VRT: rename member variable
      NAS: do not try to write a .gfs file when NAS_GFS_TEMPLATE is specified
      GDALBuildVRT(): add support for sources such as MEM dataset or non-materialized VRT files
      PCIDSK: fix harmless unsigned-integer-overflow. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=25822
      MRF: fix Heap-buffer-overflow READ 4. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=25836. master only
      MRF: remove useless debugging variables added in previous commit
      gdalbuildvrt_lib.cpp: C++ification. no functional change
      VRT: add support for explicit virtual overviews
      gdalbuildvrt: add support for automatically declaring virtual overviews in very restricted situations
      ogr_gpkg.py: test_abort_sql: avoid creating new file, and increase number of iterations of the query to be sure it runs well above a one second limit (20s on my machine now)
      Python bindings: remove use of deprecated PyObject_AsReadBuffer() function
      PCIDSK: fix invalid-enum-value. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=25719
      tif_fax3.h: return error when a buffer overflow occurs. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=25552 and https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=25849
      PDS4 vector: fix potential double free if RenameFileTo() fails, and add asserts to perhaps help tracking https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=25535
      gdalwarpkernel.cpp: avoid unlikely division by zero. CID 1432762
      VSIS3FSHandler::SetFileMetadata(): fix memleak. CID 1432675
      cpl_vsil_s3.cpp: avoid false positive warning about division by zero. CID 1432695
      Try to address CID 1432689 and 1432691
      GTiff: add earlier check to bail out when attempting JPEG compression with paletted image
      GTiff: fix previous commit for big-endian platforms
      GRIB: fix retrieval of nodata value for GRIB1 products (GDAL 3.1 regression, fixes #2962)
      degrib1.cpp: fix warning introduced in previous commit
      OAPIF: do not list raster or coverage collections
      GML XSD parser: recognized unsignedLong data type
      minidriver_tms.cpp: add a TileXMultiplier config element to allow for variable matrix width
      WMS: add a OGCAPIMaps minidriver
      MVT: add internal open options to allow specifying georeferencing of a tile
      PDF: update to pdfium/4272 with https://github.com/rouault/pdfium_build_gdal_3_2
      Add OGCAPI (tiles/maps) (raster/vector) experimental driver
      tif_fax3.h: another fix from upstream for a buffer overflow
      CPLJSONDocument::LoadUrl(): avoid potential memory leak
      GML: avoid 'Destination buffer too small' error to be emitted on /vsicurl_streaming/ URLs with filters coming from the WFS driver
      WFS: avoid /vsicurl_streaming/ URL to be truncated in case of big filter (but the server might reject it)
      OpenJPEG: fix reading overviews on Sentinel2 PVI files (343x343 size, with 8x8 tiles) (fixes #2984)
      LIBKML: do not advertize RandomWrite capability (unless on a update layer, when datasource is created with UPDATE_TARGETHREF creation option) (fixes https://github.com/qgis/QGIS/issues/39087)
      LIBKML: fix warning introduced in 72e1a4d7c96e0381d2d335857697b5f8e1668450
      appveyor.yml: remove checkout of particular vcpkg SHA1
      Add CPLHTTP[Push|Pop]FetchCallback() and CPLHTTPSetFetchCallback() callback mechanisms
      autotest/cpp/test_gdal.cpp: skip gdal<20> test on VS2015 AppVeyor
      GPKG: add raster/vector scope to open options and creation options
      Vector drivers: update help topic to be 'drivers/vector/{foo}.html'
      OGCAPI: proper XML escaping of URL
      OGR SQL: support constructs 'A AND B AND C ... AND N' with many successive AND (fixes #2989)
      GML driver: fix typo in option description [ci skip]
      Doc: GML: document GFS_TEMPLATE [skip travis] [skip appveyor]
      autotest: fix expected results for fa01e48290b6aaaf0574b9e363bd0e0d131d7377 (refs #2989)
      ogr_swq.h: type nOperation as swq_op
      GML: add a WRITE_GFS=AUTO/YES/NO open option (fixes #2982)
      ESRIJSON service: fix GetFeatureCount() and GetExtent()
      JP2OpenJPEG: add support for generating files with PLT marke…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Either a bug report, or a bug fix. Let's hope for the latter! Data Provider Related to specific vector, raster or mesh data providers Upstream Needs changes in an upstream library (like Qt, Proj, GDAL, ...)
Projects
None yet
Development

No branches or pull requests

2 participants