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

[pull] master from OSGeo:master #80

Merged
merged 237 commits into from
May 31, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
237 commits
Select commit Hold shift + click to select a range
876f7ee
STACIT: add a OVERLAP_STRATEGY opening option to determine how to han…
rouault May 9, 2024
5b28d32
GDALNoDataMaskBand::IRasterIO(): fix crash on memory allocation failure
rouault May 14, 2024
f1764a1
GetNextArrowArray() generic implementation: avoid calling VSI_MALLOC_…
rouault May 15, 2024
2299f2f
VSIMallocAligned(): make behaviour more predictable when nSize == 0
rouault May 15, 2024
93703e7
GDALNoDataMaskBand::IRasterIO(): speed optimization, and reduce copy&…
rouault May 14, 2024
95b723f
Parquet dataset (multi-file typically): enable use of bounding box co…
rouault May 13, 2024
30bbfa7
Parquet: harmonize thread handling between non-dataset and dataset mode
rouault May 14, 2024
3fda22b
Add OGRArrowIsGeoArrowStruct() and use it
rouault May 13, 2024
0d6d8a5
Arrow/Parquet: add a OGRArrowLayer::SanityCheckOfSetBatch() method
rouault May 13, 2024
0783fba
Parquet dataset (multi-file typically): implement SetIgnoredFields()
rouault May 13, 2024
82e1ddb
Parquet dataset (multi-file typically): make spatial filter work igno…
rouault May 13, 2024
fddfaf2
Parquet dataset (multi-file typically): optimize spatial filtering
rouault May 13, 2024
f9aba44
Parquet dataset (multi-file typically): implement SetAttributeFilter()
rouault May 13, 2024
28e264c
Parquet dataset (multi-file typically): optimize spatial filtering on…
rouault May 13, 2024
6093d05
Add a static version of OGRLayer::FilterWKBGeometry()
rouault May 14, 2024
c62ce4a
Add OGRGeometry::IsRectangle() and use it in OGRLayer::InstallFilter()
rouault May 14, 2024
4855452
Add testing for OGRGeometry::IsRectangle()
rouault May 14, 2024
4133d5c
Parquet dataset (multi-file typically): implement geometry intersecti…
rouault May 14, 2024
1dc79e3
Parquet: bring back run-time compatibility with libarrow <= 13
rouault May 14, 2024
206daf0
vsiadls.py: fix test on machines with ~/.azure credentials available
rouault May 15, 2024
995e089
ISIS3: Create(): open file(s) in wb+ mode if possible
rouault May 16, 2024
377150f
PDS4: Create(): open file in wb+ mode if possible
rouault May 16, 2024
46db443
/vsimem/: make Read() error for a file not opened with read permissions
rouault May 16, 2024
981e0e9
/vsicrypt/: if opening in write-only mode, do so on the underlying fi…
rouault May 16, 2024
d5fd8c4
/vsigzip/: sanitize Eof() detection
rouault May 16, 2024
3626786
Add VSIFErrorL() and VSIFClearErrL(), and implement them
rouault May 15, 2024
151a115
Use VSIFErrorL() in complement of VSIFEofL()
rouault May 15, 2024
b7d46e5
VSIWin32Handle: Read(): unhandle cleanly nSize * nCount > UINT32_MAX
rouault May 15, 2024
9b597d4
/vsigzip/: Read(): detect attempts to read more than 4 GB at once
rouault May 15, 2024
b04f97e
test_vsifile_CopyFileRestartable(): silence error message
rouault May 15, 2024
1c3e4c7
cpl_vsil_crypt.cpp: remove a few useless casts
rouault May 16, 2024
b1cc25f
VSICopyFile(): detect error when reading source file, and delete outp…
rouault May 15, 2024
5f92903
PDF: fix build against PoDoFo with MSYS2 UCRT64 and CLANG64 environments
rouault May 22, 2024
eaffd8c
CI: add package mingw-w64-x86_64-podofo
rouault May 22, 2024
d0c49b7
OGRSQL: validate column name in COUNT(field_name)
rouault May 22, 2024
fe08ea1
PDF: split import of SDK headers into separate file per backend
rouault May 22, 2024
c81d1a8
ogr_sql_test.py: enable exceptions, and parametrize more tests
rouault May 22, 2024
89f0e52
OGRGenSQLResultsLayer: modernize C++ usage
rouault May 22, 2024
1b09859
LIBKML: fix handling of styleUrl element referencing to an external d…
rouault May 22, 2024
4ceaa28
SWIG Python/Java: replace sprintf() with snprintf() to avoid warnings…
rouault May 22, 2024
c64cb04
Arrow/Parquet: fix compiler warnings on 32bit with clang -Wshorten-64…
rouault May 23, 2024
153b819
Fix various compiler warnings on 32bit with clang -Wshorten-64-to-32
rouault May 23, 2024
7051a9e
CI: switch Alpine 32bit to Clang
rouault May 23, 2024
f3da72a
Update download.rst: Debian not only Unstable any more!
jidanni May 24, 2024
f195244
Update gdal_rpc.cpp fixing grammar
jidanni May 24, 2024
7ab817b
Merge pull request #9998 from jidanni/patch-44
rouault May 24, 2024
4c546d1
Merge pull request #10000 from jidanni/patch-45
rouault May 24, 2024
4a39088
Doc: reduce width of synopsis of gdalwarp and ogr2ogr
rouault May 24, 2024
84271b2
Doc: Mark GDALSimpleImageWarp() and GDALReprojectImage() as supersede…
rouault May 24, 2024
57dbe56
ESRIC: ingest more bytes to be able to identify more datasets
rouault May 25, 2024
3b232ee
IVSIS3LikeFSHandler::GetUploadChunkSizeInBytes(): rewrite test in a w…
rouault May 26, 2024
ee4551d
Update gdal_contour.rst saying ignored items
jidanni May 27, 2024
0b2c2b7
Merge pull request #10012 from jidanni/patch-44
rouault May 27, 2024
ce3c3a7
Update download.rst mentioning docs download
jidanni May 27, 2024
560210c
ogrmerge.rst: remove .py extension (#10017)
jidanni May 27, 2024
771898f
Update gdal_contour.rst to say must specify either -i or -fl or -e
jidanni May 27, 2024
2805bd2
Update gdal2xyz.rst removing one last .py
jidanni May 27, 2024
105065c
Update gdal_edit.rst to clean up ".py"
jidanni May 27, 2024
dc8207f
Update ogr_layer_algebra.rst removing .py
jidanni May 27, 2024
49c118e
Merge pull request #10021 from jidanni/patch-49
rouault May 27, 2024
44a1130
Merge pull request #10023 from jidanni/patch-47
rouault May 27, 2024
17ef8c7
Merge pull request #10024 from jidanni/patch-50
rouault May 27, 2024
f4e3d2f
Merge pull request #10025 from jidanni/patch-51
rouault May 27, 2024
45f6b78
Update gdal_sieve.rst cleaning .py
jidanni May 27, 2024
dc6281b
Merge pull request #10022 from jidanni/patch-44
rouault May 27, 2024
40751dc
Doc: explain what DOI is (fixes #10020)
rouault May 27, 2024
6579f03
Update gdal_merge.rst clean up .py
jidanni May 27, 2024
7e845aa
Update gdal_polygonize.rst killing .py
jidanni May 27, 2024
3ec3241
Update gdal_proximity.rst removing .py
jidanni May 27, 2024
ee69dab
Update gdalcompare.rst
jidanni May 27, 2024
1068c0e
Update gdal2tiles.rst removing .py
jidanni May 27, 2024
ffdf02c
Update gdal_calc.rst cleaning off .py
jidanni May 27, 2024
a0ae7a2
Update gdal_fillnodata.rst
jidanni May 27, 2024
1aea9cf
Update gdal_pansharpen.rst: no more .py
jidanni May 27, 2024
c3552b3
argparse.hpp: add argument name after 'Too few arguments' error
rouault May 27, 2024
b238181
Update gdal_retile.rst removing .py
jidanni May 27, 2024
dad37db
Doc: Add comments on how to update API documentation
dbaston May 25, 2024
6bc846e
Update gdalattachpct.rst to chop .py
jidanni May 27, 2024
fce91a9
Merge pull request #10026 from jidanni/patch-47
rouault May 27, 2024
fdf15c6
Merge pull request #10027 from jidanni/patch-49
rouault May 27, 2024
eec46a3
Merge pull request #10028 from jidanni/patch-44
rouault May 27, 2024
fa6d14d
Merge pull request #10029 from jidanni/patch-50
rouault May 27, 2024
726d15d
Merge pull request #10031 from jidanni/patch-51
rouault May 27, 2024
cf55a5d
Merge pull request #10032 from jidanni/patch-52
rouault May 27, 2024
d7560e2
Merge pull request #10033 from jidanni/patch-53
rouault May 27, 2024
484b989
Merge pull request #10034 from jidanni/patch-54
rouault May 27, 2024
5f17e04
Merge pull request #10035 from jidanni/patch-55
rouault May 27, 2024
07a6de6
Merge pull request #10037 from jidanni/patch-56
rouault May 27, 2024
be42556
Merge pull request #10038 from jidanni/patch-57
rouault May 27, 2024
0de28a1
Python utilities: avoid UseExceptions() related deprecation warning w…
rouault May 27, 2024
e36b6ac
Python bindings: do not emit warnings about not having used [Dont]Use…
rouault May 27, 2024
fcd8a30
Python bindings: avoid gdal.ExceptionMgr() to re-throw a GDAL excepti…
rouault May 27, 2024
c435c21
Python bindings: avoid exception emitted and caught under gdal.Except…
rouault May 27, 2024
1aa4f0c
gdaltest.run_py_script(): add a return_stderr: bool argument
rouault May 27, 2024
f079410
Python scripts: use local exception manager, instead of global UseExc…
rouault May 27, 2024
9bdb598
autotest/pyscripts: check that python scripts don't emit the FutureWa…
rouault May 27, 2024
39d5a57
test_gdal2xyz.py: skip on sanitize CI
rouault May 27, 2024
de9fd31
Python scripts: Use decorator to enable exceptions
dbaston May 28, 2024
06bfa9b
Merge pull request #10036 from rouault/fix_10011
rouault May 28, 2024
0187ae9
Merge pull request #48 from dbaston/fix_10010_decorator
rouault May 28, 2024
c263611
CI: skip test_gdal2tiles_py_invalid_srs on sanitize CI
rouault May 28, 2024
9796216
Merge pull request #10039 from rouault/fix_10010
rouault May 28, 2024
06e1043
Merge pull request #9937 from rouault/vsiferrorl
rouault May 28, 2024
6bc311f
Merge pull request #9926 from rouault/fix_GDALNoDataMaskBand_IRasterI…
rouault May 28, 2024
04fd5fb
Merge pull request #9984 from rouault/fix_9976
rouault May 28, 2024
4d760e1
Merge pull request #9986 from rouault/fix_9972
rouault May 28, 2024
983c3bd
Merge pull request #9989 from rouault/fix_9975
rouault May 28, 2024
2a86720
TileDBRasterBand::IRasterIO(): avoid reading out-of-raster with TILED…
rouault Apr 29, 2024
0f18b7f
TileDB: CreateCopy(): do not force returned dataset to be in read-onl…
rouault Apr 29, 2024
8cf47e8
Add a more C++ friendly GDALRegenerateOverviewsMultiBand() signature
rouault Apr 30, 2024
51b0494
Add VSIToCPLErrorWithMsg()
rouault May 1, 2024
8d72097
/vsis3/: avoid emitting a CPLError() when bSetError=false and access=…
rouault May 1, 2024
d2f55ae
cpl_error.h: provide 'do {} while(0)' expansion for empty CPLDebug/CP…
rouault May 1, 2024
9df2420
TileDB: clarify code comment
rouault May 1, 2024
6512782
include_tiledb.h: reintroduce MSVC 4996 warning suppression that was …
rouault May 1, 2024
92fe98a
TileDB: catch potential TileDB exceptions in Open() and IRasterIO()
rouault May 2, 2024
6f32875
TileDB raster: honor CREATE_GROUP=YES, and implement BuildOverviews()…
rouault May 2, 2024
705d5b7
TileDB raster: implement BuildOverviews() for base dataset not in gro…
rouault May 2, 2024
e0ff0db
TileDB: document existing open and creation options
rouault May 2, 2024
b5a0d1e
TileDB: document new CREATE_GROUP creation option
rouault May 2, 2024
cf2d382
TileDB: add a overview_model.rst design document
rouault May 2, 2024
3a06eff
TileDB tests: add a test to check deprecated GeoTIFF side-car .ovr is…
rouault May 2, 2024
729263d
Revert "TileDB raster: implement BuildOverviews() for base dataset no…
rouault May 23, 2024
b4a3004
TileDB raster: change name of overview level arrays to 'l_{level}'
rouault May 23, 2024
800f1a0
TileDB: overview_model.rst: update it with latest changes
rouault May 23, 2024
f53454b
TileDB: advertize GDAL_DCAP_CREATE_LAYER
rouault May 23, 2024
2159d27
TileDB: change CREATE_GROUP default value to YES for rasters
rouault May 23, 2024
d9e48f9
ESRIJSON: do not set width on DateTime field
rouault May 28, 2024
c954680
CI: skip test_gdal_polygonize_help on sanitize CI
rouault May 28, 2024
3757cd2
gdal_pansharpen.py: fix previous wrong change
rouault May 29, 2024
36d8d36
Remove .py extension from gdalmove, pct2rgb and rgb2pct
plimkilde May 29, 2024
27f5ecb
Merge pull request #9837 from rouault/tiledb_overview
rouault May 29, 2024
556ee62
Merge pull request #10053 from plimkilde/remove-doc-pyext
rouault May 29, 2024
e798d8c
gdal_python_utilities.rst: remove note
rouault May 29, 2024
8257ccc
Doc: add note regarding Creation vs Copy for raster drivers
rouault May 29, 2024
8ffaeb2
Merge pull request #9921 from rouault/parquet_dataset_enhancements
rouault May 29, 2024
59569d6
Merge pull request #9927 from rouault/GDALNoDataMaskBand_IRasterIO_optim
rouault May 29, 2024
25b4329
Merge pull request #9929 from rouault/VSIMallocAligned_fix
rouault May 29, 2024
76721fb
Merge pull request #9985 from rouault/pdf_sdk_headers_split
rouault May 29, 2024
520ddd2
Merge pull request #9988 from rouault/fix_9972_lint
rouault May 29, 2024
07f5a58
Merge pull request #9990 from rouault/swig_sprintf
rouault May 29, 2024
1118039
swig/python/README.rst: Expand building from source section (#9993)
gdt May 29, 2024
92df169
Merge pull request #9992 from rouault/arrow_32bit_warnings
rouault May 29, 2024
ac2d117
Merge pull request #10005 from dbaston/doc-api-howto-update
rouault May 29, 2024
3138c58
Merge pull request #10007 from rouault/fix_10006
rouault May 29, 2024
f706976
Shapelib: resync with https://github.com/OSGeo/shapelib/pull/130
rouault May 29, 2024
57b50d4
MiraMonVector: fix a case of sensitive comparison
AbelPau May 29, 2024
e435e1b
Doc: Use uniform note in Python utility docs (#10059)
plimkilde May 29, 2024
3041877
Merge pull request #10063 from rouault/shapelib_pr_130
rouault May 29, 2024
422a01e
TAB_CSLLoad(): simplify, and make it work properly with /vsitar (rela…
rouault May 29, 2024
2f8dc88
TABSeamless::OpenForRead(): avoid potential double-free
rouault May 29, 2024
c2b6e73
typo fix
rouault May 29, 2024
6314e98
Merge pull request #10060 from AbelPau/MiraMonVector-fix-a-case-sensi…
rouault May 29, 2024
0890073
Merge pull request #9891 from rouault/stacit_OVERLAP_STRATEGY
rouault May 29, 2024
8fe33ef
CMake: add infrastructure so we can build plugins that can be loaded …
rouault May 29, 2024
65ff90f
CMake: add_gdal_driver(): try trick to make sure we get a different o…
rouault May 29, 2024
050ba82
OCI: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
17b318c
MrSID: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
c73cefc
PostGISRaster: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
5a31296
HEIF: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
10e14a4
netCDF: avoid issue with CMAKE_UNITY_BUILD=ON
rouault May 29, 2024
d49cb46
netCDF: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
a06830a
GeoRaster: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
4b9af90
PDF: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
946d8c5
JPEGXL: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
1e6eb40
JPEG: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
e7d62a9
WebP: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
11001e1
EXR: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
b0b7066
KEA: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
1ceb53e
WMTS: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
0d45226
PDS: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
847e8a3
HDF5: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
d65a6dc
Rasterlite: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
33db0f4
GIF: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
86deab7
PCRaster: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
34b701e
JP2Lura: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
c374b7e
ECW: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
dc63f85
GRIB: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
bb21ee0
OpenJPEG: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
44bf9cf
NITF: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
fe1ef8d
PCIDSK: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
bd8b88e
FITS: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
8a1c631
DDS: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
6107756
JP2KAK: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
3fbce5f
WMS: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
9cd9350
GTA: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
1dae26f
Zarr: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
9b87df1
WCS: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
4a60bdd
MSG: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
a1e3107
MRF: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
e31ff1f
PNG: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
4568bab
BASISU/KTX2: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
be403bc
JPIPKAK: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
b7e2249
TileDB: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
9f4f4c1
HDF4: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
83c73ab
MySQL: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
3c2f8be
Carto: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
af52d3c
XLS: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
ac3bae3
VFK: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
bca8017
Parquet: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
4e93720
PG: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
235c10f
OGDI: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
538b637
OpenFileGDB: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
9196059
MSSQLSpatial: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
6d9012c
LIBKML: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
684c574
Feather: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
bfb0b32
ODBC: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
0b2cfb7
GMLAS: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
68fba4d
DWG/DGNv8: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
1cd120f
Elastic: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
3e514eb
FileGDB: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
9ca3f33
SOSI: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
5d140dd
CAD: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
f300c75
HANA: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
c73f95a
IDB: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
7e995ad
PLScenes: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
3c8c49d
MongoDBV3: use NO_SHARED_SYMBOL_WITH_CORE
rouault May 29, 2024
2eab028
CMake: make NO_SHARED_SYMBOL_WITH_CORE compulsory when CORE_SOURCES i…
rouault May 29, 2024
14351e8
Update RFC96 with NO_SHARED_SYMBOL_WITH_CORE changes
rouault May 29, 2024
857eaf5
Update gdal_fillnodata.rst adding destination file requirement
jidanni May 30, 2024
0f8a9f0
Update doc/source/programs/gdal_fillnodata.rst
rouault May 30, 2024
7d23923
Merge pull request #10076 from jidanni/patch-51
rouault May 30, 2024
06282bd
Doc: mention doc reflects latest master (#10077)
jidanni May 30, 2024
5de4b38
CI: Travis-CI: disable arm64-graviton2 builds, due to the OSGeo Travi…
rouault May 30, 2024
ebc103e
Merge pull request #10003 from rouault/fix_10001
rouault May 30, 2024
5394ddf
autotest: Add a VSIFile wrapper class (#8222)
dbaston May 30, 2024
d43216d
MIraMonVector: fixing MMResetFeatureRecord
AbelPau May 31, 2024
d20dfc4
Merge pull request #10085 from AbelPau/MIraMonVector-fixing-MMResetFe…
rouault May 31, 2024
6ed1d34
Doc: Attempt to reduce -lco -dsco -sql vs. LIBKML <name> three level …
jidanni May 31, 2024
8b2ae1e
Update gdal_grid.rst removing .py (#10088)
jidanni May 31, 2024
685335e
Doc adjustments (from https://github.com/OSGeo/gdal/pull/10089)
rouault May 31, 2024
fc48772
Fix "intput" typo in gdal_merge.rst
DFEvans May 31, 2024
5ffc488
Merge pull request #10092 from DFEvans/patch-2
rouault May 31, 2024
123cad1
gdal_create.rst: clarify -burn
rouault May 31, 2024
603e800
Doc: clarify units and directional distortion of -simplify and -segme…
jidanni May 31, 2024
9266cab
Merge pull request #10068 from rouault/rfc96_adjustments
rouault May 31, 2024
c483e42
docker/ubuntu-full/Dockerfile: update ARROW_VERSION [ci skip]
rouault May 31, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .github/workflows/alpine_32bit/Dockerfile.ci
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ RUN apk add \
brunsli-dev \
ccache \
cfitsio-dev \
clang \
cmake \
curl-dev \
expat-dev \
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/alpine_32bit/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ set -e

cmake ${GDAL_SOURCE_DIR:=..} \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_C_COMPILER=clang \
-DCMAKE_CXX_COMPILER=clang++ \
-DCMAKE_SHARED_LINKER_FLAGS="-lstdc++" \
-DUSE_CCACHE=ON \
-DCMAKE_INSTALL_PREFIX=/usr \
-DIconv_INCLUDE_DIR=/usr/include/gnu-libiconv \
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/cmake_builds.yml
Original file line number Diff line number Diff line change
Expand Up @@ -323,7 +323,7 @@ jobs:
base-devel git mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmake mingw-w64-x86_64-ccache
mingw-w64-x86_64-pcre mingw-w64-x86_64-xerces-c mingw-w64-x86_64-zstd mingw-w64-x86_64-libarchive
mingw-w64-x86_64-geos mingw-w64-x86_64-libspatialite mingw-w64-x86_64-proj
mingw-w64-x86_64-cgal mingw-w64-x86_64-libfreexl mingw-w64-x86_64-hdf5 mingw-w64-x86_64-netcdf mingw-w64-x86_64-poppler mingw-w64-x86_64-postgresql
mingw-w64-x86_64-cgal mingw-w64-x86_64-libfreexl mingw-w64-x86_64-hdf5 mingw-w64-x86_64-netcdf mingw-w64-x86_64-poppler mingw-w64-x86_64-podofo mingw-w64-x86_64-postgresql
mingw-w64-x86_64-libgeotiff mingw-w64-x86_64-libpng mingw-w64-x86_64-libtiff mingw-w64-x86_64-openjpeg2
mingw-w64-x86_64-python-pip mingw-w64-x86_64-python-numpy mingw-w64-x86_64-python-pytest mingw-w64-x86_64-python-setuptools mingw-w64-x86_64-python-lxml mingw-w64-x86_64-swig mingw-w64-x86_64-python-psutil mingw-w64-x86_64-blosc
- name: Setup cache
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/linux_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ jobs:
build_script: build.sh
os: ubuntu-22.04

- name: Alpine, gcc 32-bit
- name: Alpine, clang 32-bit
id: alpine_32bit
container: alpine_32bit
build_script: build.sh
Expand Down
36 changes: 18 additions & 18 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,24 +26,24 @@ matrix:
- BUILD_NAME=s390x
- DETAILS=""

- os: linux
arch: arm64-graviton2
virt: lxd
group: edge
compiler: gcc
language: cpp
sudo: false
dist: jammy
cache:
apt: true
directories:
- $HOME/.ccache
apt:
packages:
- ccache
env:
- BUILD_NAME=graviton2
- DETAILS=
#- os: linux
# arch: arm64-graviton2
# virt: lxd
# group: edge
# compiler: gcc
# language: cpp
# sudo: false
# dist: jammy
# cache:
# apt: true
# directories:
# - $HOME/.ccache
# apt:
# packages:
# - ccache
# env:
# - BUILD_NAME=graviton2
# - DETAILS=

before_install:
- if ! git diff --name-only $TRAVIS_COMMIT_RANGE | grep -qvE '(.rst)$'; then travis_terminate 0; fi
Expand Down
17 changes: 17 additions & 0 deletions MIGRATION_GUIDE.TXT
Original file line number Diff line number Diff line change
@@ -1,3 +1,20 @@
MIGRATION GUIDE FROM GDAL 3.9 to GDAL 3.10
------------------------------------------

- User code using VSIFEofL() to potentially to end read loops should also test
the return code of the new VSIFError() function. Some virtual file systems
that used to report errors through VSIFEofL() now do through VSIFError().

- Out-of-tree implementations of VSIVirtualHandle():
2 new required virtual methods must be implemented: int Error(), and
void ClearErr() following POSIX semantics of ferror() and clearerr().
This is to distinguish Read() that returns less bytes than requested because
of an error (Error() != 0) or because of end-of-file (Eof() != 0)

The VSIFilesystemPluginCallbacksStruct structure is extended with 2
corresponding optional (but recommended to be implemented to reliably detect
reading errors) callbacks "error" and "clear_err".

MIGRATION GUIDE FROM GDAL 3.8 to GDAL 3.9
-----------------------------------------

Expand Down
6 changes: 3 additions & 3 deletions alg/gdal_rpc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -659,12 +659,12 @@ void *GDALCreateRPCTransformerV1(GDALRPCInfoV1 *psRPCInfo, int bReversed,
* Create an RPC based transformer.
*
* The geometric sensor model describing the physical relationship between
* image coordinates and ground coordinate is known as a Rigorous Projection
* image coordinates and ground coordinates is known as a Rigorous Projection
* Model. A Rigorous Projection Model expresses the mapping of the image space
* coordinates of rows and columns (r,c) onto the object space reference
* surface geodetic coordinates (long, lat, height).
*
* RPC supports a generic description of the Rigorous Projection Models. The
* A RPC supports a generic description of the Rigorous Projection Models. The
* approximation used by GDAL (RPC00) is a set of rational polynomials
* expressing the normalized row and column values, (rn , cn), as a function of
* normalized geodetic latitude, longitude, and height, (P, L, H), given a
Expand All @@ -675,7 +675,7 @@ void *GDALCreateRPCTransformerV1(GDALRPCInfoV1 *psRPCInfo, int bReversed,
* normalized row and column values (rn, cn), and between the geodetic
* latitude, longitude, and height and normalized geodetic latitude,
* longitude, and height (P, L, H), is defined by a set of normalizing
* translations (offsets) and scales that ensure all values are contained i
* translations (offsets) and scales that ensure all values are contained in
* the range -1 to +1.
*
* This function creates a GDALTransformFunc compatible transformer
Expand Down
3 changes: 3 additions & 0 deletions alg/gdalsimplewarp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,8 @@ static void GDALSimpleWarpRemapping(int nBandCount, GByte **papabySrcData,
* Distinct values may be listed for each band separated by columns.
* </ul>
*
* For more advanced warping capabilities, consider using GDALWarp().
*
* @param hSrcDS the source image dataset.
* @param hDstDS the destination image dataset.
* @param nBandCount the number of bands to be warped. If zero, all bands
Expand All @@ -225,6 +227,7 @@ static void GDALSimpleWarpRemapping(int nBandCount, GByte **papabySrcData,
* @param papszWarpOptions additional options controlling the warp.
*
* @return TRUE if the operation completes, or FALSE if an error occurs.
* @see GDALWarp()
*/

int CPL_STDCALL GDALSimpleImageWarp(GDALDatasetH hSrcDS, GDALDatasetH hDstDS,
Expand Down
8 changes: 5 additions & 3 deletions alg/gdalwarper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -66,11 +66,12 @@
* implement the reprojection, and will default a variety of other
* warp options.
*
* Nodata values set on destination dataset are taken into account.
*
* No metadata, projection info, or color tables are transferred
* to the output file.
* to the output file. Source overviews are not considered.
*
* Starting with GDAL 2.0, nodata values set on destination dataset are taken
* into account.
* For more advanced warping capabilities, consider using GDALWarp().
*
* @param hSrcDS the source image file.
* @param pszSrcWKT the source projection. If NULL the source projection
Expand All @@ -91,6 +92,7 @@
* @param psOptions warp options, normally NULL.
*
* @return CE_None on success or CE_Failure if something goes wrong.
* @see GDALWarp()
*/

CPLErr CPL_STDCALL GDALReprojectImage(
Expand Down
3 changes: 2 additions & 1 deletion apps/argparse/argparse.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -1011,7 +1011,8 @@ class Argument {
std::bind(is_optional, std::placeholders::_1, m_prefix_chars));
dist = static_cast<std::size_t>(std::distance(start, end));
if (dist < num_args_min) {
throw std::runtime_error("Too few arguments");
throw std::runtime_error("Too few arguments for '" +
std::string(m_used_name) + "'.");
}
}

Expand Down
86 changes: 86 additions & 0 deletions autotest/cpp/test_ogr.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3961,4 +3961,90 @@ TEST_F(test_ogr, OGRFeature_SerializeToBinary)
}
}

// Test OGRGeometry::IsRectangle()
TEST_F(test_ogr, OGRGeometry_IsRectangle)
{
// Not a polygon
{
OGRGeometry *poGeom = nullptr;
OGRGeometryFactory::createFromWkt("POINT EMPTY", nullptr, &poGeom);
ASSERT_NE(poGeom, nullptr);
EXPECT_FALSE(poGeom->IsRectangle());
delete poGeom;
}
// Polygon empty
{
OGRGeometry *poGeom = nullptr;
OGRGeometryFactory::createFromWkt("POLYGON EMPTY", nullptr, &poGeom);
ASSERT_NE(poGeom, nullptr);
EXPECT_FALSE(poGeom->IsRectangle());
delete poGeom;
}
// Polygon with inner ring
{
OGRGeometry *poGeom = nullptr;
OGRGeometryFactory::createFromWkt(
"POLYGON ((0 0,0 1,1 1,1 0,0 0),(0.2 0.2,0.2 0.8,0.8 0.8,0.8 "
"0.2,0.2 0.2))",
nullptr, &poGeom);
ASSERT_NE(poGeom, nullptr);
EXPECT_FALSE(poGeom->IsRectangle());
delete poGeom;
}
// Polygon with 3 points
{
OGRGeometry *poGeom = nullptr;
OGRGeometryFactory::createFromWkt("POLYGON ((0 0,0 1,1 1))", nullptr,
&poGeom);
ASSERT_NE(poGeom, nullptr);
EXPECT_FALSE(poGeom->IsRectangle());
delete poGeom;
}
// Polygon with 6 points
{
OGRGeometry *poGeom = nullptr;
OGRGeometryFactory::createFromWkt(
"POLYGON ((0 0,0.1 0,0.2 0,0.3 0,1 1,0 0))", nullptr, &poGeom);
ASSERT_NE(poGeom, nullptr);
EXPECT_FALSE(poGeom->IsRectangle());
delete poGeom;
}
// Polygon with 5 points, but last one not matching first (invalid)
{
OGRGeometry *poGeom = nullptr;
OGRGeometryFactory::createFromWkt(
"POLYGON ((0 0,0 1,1 1,1 0,-999 -999))", nullptr, &poGeom);
ASSERT_NE(poGeom, nullptr);
EXPECT_FALSE(poGeom->IsRectangle());
delete poGeom;
}
// Polygon with 5 points, but not rectangle
{
OGRGeometry *poGeom = nullptr;
OGRGeometryFactory::createFromWkt("POLYGON ((0 0,0 1.1,1 1,1 0,0 0))",
nullptr, &poGeom);
ASSERT_NE(poGeom, nullptr);
EXPECT_FALSE(poGeom->IsRectangle());
delete poGeom;
}
// Rectangle (type 1)
{
OGRGeometry *poGeom = nullptr;
OGRGeometryFactory::createFromWkt("POLYGON ((0 0,0 1,1 1,1 0,0 0))",
nullptr, &poGeom);
ASSERT_NE(poGeom, nullptr);
EXPECT_TRUE(poGeom->IsRectangle());
delete poGeom;
}
// Rectangle2(type 1)
{
OGRGeometry *poGeom = nullptr;
OGRGeometryFactory::createFromWkt("POLYGON ((0 0,1 0,1 1,0 1,0 0))",
nullptr, &poGeom);
ASSERT_NE(poGeom, nullptr);
EXPECT_TRUE(poGeom->IsRectangle());
delete poGeom;
}
}

} // namespace
16 changes: 16 additions & 0 deletions autotest/gcore/basic_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -331,6 +331,22 @@ def test_basic_test_11():
with pytest.raises(Exception):
gdal.OpenEx("non existing")

try:
with gdal.ExceptionMgr(useExceptions=True):
try:
gdal.OpenEx("non existing")
except Exception:
pass
except Exception:
pytest.fails("Exception thrown whereas it should not have")

with gdal.ExceptionMgr(useExceptions=True):
try:
gdal.OpenEx("non existing")
except Exception:
pass
gdal.Open("data/byte.tif")


###############################################################################
# Test GDAL layer API
Expand Down
55 changes: 42 additions & 13 deletions autotest/gcore/mask.py
Original file line number Diff line number Diff line change
Expand Up @@ -996,7 +996,10 @@ def test_mask_27():


@pytest.mark.parametrize("dt", [gdal.GDT_Byte, gdal.GDT_Int64, gdal.GDT_UInt64])
def test_mask_setting_nodata(dt):
@pytest.mark.parametrize(
"GDAL_SIMUL_MEM_ALLOC_FAILURE_NODATA_MASK_BAND", [None, "YES", "ALWAYS"]
)
def test_mask_setting_nodata(dt, GDAL_SIMUL_MEM_ALLOC_FAILURE_NODATA_MASK_BAND):
def set_nodata_value(ds, val):
if dt == gdal.GDT_Byte:
ds.GetRasterBand(1).SetNoDataValue(val)
Expand All @@ -1005,15 +1008,41 @@ def set_nodata_value(ds, val):
else:
ds.GetRasterBand(1).SetNoDataValueAsUInt64(val)

ds = gdal.GetDriverByName("MEM").Create("", 1, 1, 1, dt)
assert ds.GetRasterBand(1).GetMaskBand().ReadRaster() == struct.pack("B", 255)
assert ds.GetRasterBand(1).GetMaskBand().ReadRaster() == struct.pack("B", 255)
set_nodata_value(ds, 0)
assert ds.GetRasterBand(1).GetMaskBand().ReadRaster() == struct.pack("B", 0)
assert ds.GetRasterBand(1).GetMaskBand().ReadRaster() == struct.pack("B", 0)
set_nodata_value(ds, 1)
assert ds.GetRasterBand(1).GetMaskBand().ReadRaster() == struct.pack("B", 255)
set_nodata_value(ds, 0)
assert ds.GetRasterBand(1).GetMaskBand().ReadRaster() == struct.pack("B", 0)
ds.GetRasterBand(1).DeleteNoDataValue()
assert ds.GetRasterBand(1).GetMaskBand().ReadRaster() == struct.pack("B", 255)
def test():
ds = gdal.GetDriverByName("MEM").Create("__debug__", 1, 1, 1, dt)
assert ds.GetRasterBand(1).GetMaskBand().ReadRaster() == struct.pack("B", 255)
assert ds.GetRasterBand(1).GetMaskBand().ReadRaster() == struct.pack("B", 255)
set_nodata_value(ds, 0)
got = ds.GetRasterBand(1).GetMaskBand().ReadRaster()
if (
GDAL_SIMUL_MEM_ALLOC_FAILURE_NODATA_MASK_BAND == "ALWAYS"
and dt != gdal.GDT_Byte
):
assert got is None
assert gdal.GetLastErrorType() == gdal.CE_Failure
else:
if (
GDAL_SIMUL_MEM_ALLOC_FAILURE_NODATA_MASK_BAND == "YES"
and dt != gdal.GDT_Byte
):
assert gdal.GetLastErrorType() == gdal.CE_Warning
assert got == struct.pack("B", 0)
assert ds.GetRasterBand(1).GetMaskBand().ReadRaster() == struct.pack("B", 0)
set_nodata_value(ds, 1)
assert ds.GetRasterBand(1).GetMaskBand().ReadRaster() == struct.pack(
"B", 255
)
set_nodata_value(ds, 0)
assert ds.GetRasterBand(1).GetMaskBand().ReadRaster() == struct.pack("B", 0)

ds.GetRasterBand(1).DeleteNoDataValue()
assert ds.GetRasterBand(1).GetMaskBand().ReadRaster() == struct.pack("B", 255)

if GDAL_SIMUL_MEM_ALLOC_FAILURE_NODATA_MASK_BAND:
with gdal.quiet_errors(), gdal.config_option(
"GDAL_SIMUL_MEM_ALLOC_FAILURE_NODATA_MASK_BAND",
GDAL_SIMUL_MEM_ALLOC_FAILURE_NODATA_MASK_BAND,
):
test()
else:
test()
14 changes: 13 additions & 1 deletion autotest/gcore/vsiadls.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,19 @@ def open_for_read(uri):
@pytest.fixture(autouse=True, scope="module")
def startup_and_cleanup():

with gdaltest.config_option("CPL_AZURE_VM_API_ROOT_URL", "disabled"):
with gdaltest.config_options(
{
"AZURE_STORAGE_CONNECTION_STRING": None,
"AZURE_STORAGE_ACCOUNT": None,
"AZURE_STORAGE_ACCESS_KEY": None,
"AZURE_STORAGE_SAS_TOKEN": None,
"AZURE_NO_SIGN_REQUEST": None,
"AZURE_CONFIG_DIR": "",
"AZURE_STORAGE_ACCESS_TOKEN": "",
"AZURE_FEDERATED_TOKEN_FILE": "",
"CPL_AZURE_VM_API_ROOT_URL": "disabled",
}
):
assert gdal.GetSignedURL("/vsiadls/foo/bar") is None

gdaltest.webserver_process = None
Expand Down
Loading
Loading