-
-
Notifications
You must be signed in to change notification settings - Fork 2.4k
/
NEWS
13268 lines (10980 loc) · 679 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
= GDAL/OGR 3.3.3 Release Notes =
The 3.3.3 release is a bug fix release.
== Build ==
* Use pkg-config for libdap when dap-config is not available.
* Fix build against Poppler 21.10.0
* fix mrf 'make clean' when lercv1 not defined
* Windows: fix TileDB build (#4631)
* Windows: remove unneeded qualifier on CPLMSVCSafeIntException class to fix pedantic build (#4698)
== Port ==
* Google cloud: avoid issue with some openssl versions and 2 line endings in private key
* /vsimem/: fix Read(buffer,nSize=0,nCount=1) to return 0
* /vsicurl/: fix for curl 7.79.0 to get file size when retrieving headers only.
* /vsicurl/: make it work without explicit CPL_VSIL_CURL_USE_HEAD=FALSE with .earthdata.nasa.gov/ URLs (#4641)
* VSI cache: fix crash when a Read() to the underlying file fails (#4559)
* CPL logging mechanism: fix writing non-ASCII UTF-8 filenames on Windows (#4492)
== GDAL core ==
* GDALOpenInfo(): fix issue when passing a directory on netBSD and potentially other BSDs
* Warper: avoid selecting Float64 working data type with a Float32 raster and a nodata value compatible of it (#4469)
* GDALMDReaderPleiades::LoadRPCXmlFile(): fix nullptr dereference on non-conformant file (ossfuzz #38998)
* GDALDataset::BlockBasedRasterIO(): fix when an overview is selected and non-integer window coordinates are involved (#4665)
== GDAL utilities ==
* gdal2tiles: fix tile grid origin of openlayers with xyz and geodetic profile as arguments (#4425)
* gdal2tiles: avoid potential race when creating directories (#4691)
* gdal_sieve: preserve NoData value when output to a new file
* pct2rgb: fix parsing arguments
* fix GetOutputDriversFor for ext == 'nc' (#4671, #4498)
== GDAL drivers ==
COG driver:
* fix error messages when creating JPEG compressed COGs from RGBA
EEDAI driver:
* Make Earth Engine driver use the highvolume API endpoint by default (#4695)
ERS driver:
* fix off-by-one error when reading ERS header (#4609)
GeoRaster driver:
* Add owner checking in the query (#4565)
GRIB driver:
* fix stack read buffer overflow (ossfuzz #38610)
* fix potential crashes on big GRIB1 files on low-memory condition (ossfuzz #38971)
GTiff driver:
* fix nullptr deref read with PROJ master and a CompoundCRS where the ellipsoid definition is invalid
* fix corruption in TIFF directory chaining when altering nodata value after IFD crystallization (#3746)
* do not try to export a DerivedGeographic CRS to GeoTIFF, but fallback to PAM
* Internal libtiff: fix rewrite in place that could cause corruption in some situations. (#4538)
JP2KAK driver:
* fix Unix build with Kakadu 8.2 (#4306)
PDS4 driver:
* fix opening of some .xml files with large number of <?xml-model> tags
* accept optional <Reference_List> element in template
* fixes for compatibility with sp:Spectral_Characteristics in template.
netCDF driver:
* accept degree_north/degree_east (degree singular) as acceptable unit for latitude/longitude axis (#4439)
* Tolerate "degrees_E"/"degrees_N" as valid axis names (#4581)
* parse correctly valid_range/valid_min/valid_max attributes when they are of non-integer type (#4443)
* multidim: avoid crash when getting data type of a char variable with 2 dimensions
* multidim GetBlockSize(): fix heap buffer write overflow on 2D char variables (ossfuzz #39258)
* multidim: fix use of coordinates attribute to find the indexing variable of a dimension
WCS driver:
* fix requests involving negative coordinates (#4550)
VRT driver:
* fix issue with sources with nodata and OverviewList resampling='average' that triggers a 'recursion error' message (relates to #4620)
* GDALAutoCreateWarpedVRTEx(): do not set padfSrcNoDataReal/padfDstNoDataReal if already set in passed-in options (rasterio/rasterio#2233)
* avoid recursion issue on ComputeStatistics()/.ComputeRasterMinMax()/GetHistogram() with implicit overviews and approximation enabled (#4661)
WMTS driver:
* do not take into account a TileMatrixSetLink that points to a non-existing TileMatrixSet.
== OGRSpatialReference ==
* OGRSpatialReference::GetAxesCount(): fix on CompoundCRS of BoundCRS
* fix retrieving projection parameters from WKT1 name on a Projected 3D CRS (OSGeo/PROJ#2846)
* Fix EPSGTreatsAsLatLong with compoundCRS (#4505)
* OSRProjTLSCache: avoid use of exceptions (#4531)
* exportToWkt(): use WKT2 for DerivedProjectedCRS (#3927)
* OGR_CT with OGR_CT_OP_SELECTION=BEST_ACCURACY: fix for non-Greenwich prime meridian (#4632)
== OGR drivers ==
CouchDB driver:
* avoid message about deprecated driver when the driver rejects the connection string (#4601)
ESRIJSON driver:
* make 'ESRIJSON:http://' connection string scroll results
FileGDB driver:
* Fix reading of field domains when data source is wrapped in OGRDataSourceWithTransaction (#4651)
FlatGeoBuf driver:
* fix memory leaks on invalid geometries (ossfuzz #38166)
GeoJSON driver:
* recognize URL of likely OAPIF items response page (fixes #4601)
GML driver:
* fix warning when reading .gfs file with a polyhedral surface
OSM driver:
* better validation of coordinates in XML to avoid integer overflow (ossfuzz #40257)
PDS4 driver:
* avoid warning about wrong field subtype when parsing ASCII_Boolean
== Python bindings ==
* fix resampleAlg=gdal.GRA_Sum/Med/Min/Max/Q1/Q3 in gdal.Warp()
* Fix potential OSError exception in __init__ on Windows and Python >= 3.8 (#4644)
* remove call to __del__() in Geometry.Destroy(), which no longer exists in SWIG 4
= GDAL/OGR 3.3.2 Release Notes =
The 3.3.2 release is a bug fix release.
== Build ==
* Fix compilation error and warnings in C++20
* Fix 'One definition rule' violations related to 12-bit JPEG support, FromHandle() methods and SQLite related drivers
* Unix build: Fix GEOS detection in cross compilation (#4368)
== Port ==
* VSIGetMemFileBuffer(): delay destroying VSIMemFile on bUnlinkAndSeize (#4158, #4179)
* /vsizip/: fix memory leak in error code path (oss-fuzz #29715)
* minixml parser: fix performance issue on very large processing instructions (oss-fuzz #37113)
== GDAL algorithms ==
* Polygonize: fix self intersection polygon when raster image contains complex holes (#3337, #1158, #3319)
* OpenCL warper: remove extra double quote character in resampling kernel (#4404)
== GDAL utilities ==
* gdalwarp: fix exporting to WKT when a projection that isn't supported in WKT1 is involved (#4133)
* gdalwarp: allow reprojecting a rater with geotransform = (0,1,0,0,0,-1) (#4147)
* gdalwarp: slightly change default behavior of unified src band masking when a pixel is evaluate to the nodata value on all bands (#4253)
* gdal_viewshed: fix incorrect calculation if target height is specified (#4381)
* gdal_viewshed: fix incorrect progress reporting (#4390)
* gdal_calc.py - fix `hideNoData` for input: `NoDataValue!='none'`, `hideNoData=True`
* gdal_fillnodata.py: fix -si option (#4192)
== osgeo_utils ==
* util.py - fix get_raster_min_max() (#4312)
* color_table.py - fix get_color_table_from_raster for ds w/o color table + tests
== GDAL core ==
* CPLKeywordParser / IMD parser: accept .IMD files with non-properly quoted values (#4037)
* IMD writer: properly quote values that have spaces (#4037)
* rasterio.cpp: fixed progress calculation
* GetIndexColorTranslationTo(): fix non-exact color matching when palettes don't have the same number of entries (#4156)
* Block cache: fix potential infinite loop in case of high concurrency and multi-threaded writing (#3848)
* GDALDataset::GetFileList(): avoid cyclic calls on odd/corrupted datasets...
* Overview building: fix crash possibility if user interrupting multi-threaded computation
* GDALDatasetPool: avoid potential crash during destruction (#4318)
== GDAL drivers ==
AIGRID driver:
* fix crash when accessing twice to a broken tile (#4316)
BAG driver:
* ignore pixel at nodata value when updating min/max attributes (#4057)
DERIVED driver:
* Derived dataset: copy RPC metadata if it exists (#4048)
ENVI driver:
* Open(): use .hdr as an additional extension in priority over a replacement one (#4317)
ERS driver:
* avoid long open delay on bogus datasets that reference themselves
GeoRaster driver:
* Set the SRID value for the extent when flushing the metadata to the database. (#4110, #4106)
GTiff driver:
* set color interpretation on overview bands (#3939)
* SRS reading: ignore vertical information when one of the tag has a value in the private user range (#4197)
JPEG driver:
* fix wrong detection of bit ordering (msb instead of lsb) of mask band (#4351)
netCDF driver:
* fix reading MODIS_ARRAY.nc file that has non CF-compliant way of expressing axis and CRS (#4075)
* properly deal with Polar Stereographic in reading and writing (#4144)
NITF driver:
* fix writing of COMRAT field in JPEG/JPEG2000 mode, when there are FILE TREs
PCIDSK driver:
* fix retrieval of RPC metadata (3.3 regression) (#4118)
PDF driver:
* avoid potential nullptr dereference on corrupted datasets (oss-fuzz #28635)
* Poppler backend: limit CPU time when reading extremely corrupted file.
SAR_CEOS driver:
* fix memory leak (oss-fuzz #35634)
TGA driver:
* fix heap buffer overflow (oss-fuzz #35520)
VRT driver:
* avoid potential very deep call stack if SourceFilename contains empty string. (oss-fuzz 37530)
ZMap driver:
* undeprecate it since we got feedback it is still useful (#4086)
== OGRSpatialReference ==
* AutoIdentifyEPSG(): do not add AUTHORITY node if the axis order of the geographic CRS contradicts the one from EPSG (#4038)
* OGRCoordinateTransformation: fix transformation between CRS that only differ by axis order (#4038)
* OGRCoordinateTransformation: when a WKT def contradicts its AUTHORITY node, use the WKT def (#4038)
* OGRCoordinateTransformation: deal with bogus NaN coordinates as output of PROJ (#4224)
== OGR drivers ==
DWG driver:
* Make Closed AcDb2dPolyline and AcDb3dPolyline to Closed OGRLineString (#4264)
[geomedia, walk] drivers:
* Check sql tables for required tables before trying to query them when trying to open a .mdb dataset
FlatGeobuf driver:
* fix memory leaks when reading invalid geometries (oss-fuzz #37752, #37834)
GML driver:
* fix reading compound curves with gml:ArcByCenterPoint and in a projected CRS in northing/easting axis order (#4155)
* avoid read heap-buffer-overflow. (oss-fuzz #35363)
GMLAS driver:
* avoid uncaught exception when opening corrupted .xsd
GPX driver:
* avoid potential integer overflow on writing (oss-fuzz #30937)
MongoDB3 driver:
* build: fix deprecation warnings with mongocxx >= 3.6
MVT driver:
* use 'number' instead of wrong 'numeric' when generating metadata tilestats (#4160)
* reader: be tolerant to broken points generated by Mapserver
ODBC driver:
* improvements regarding DSN
* Update ODBC driver metadata
OpenFileGDB driver:
* fix reading of raster fields
PGeo driver:
* Correctly reflect that non-spatial tables have no geometry, not unknown geometry
* Fix "GetNextFeature() returned non NULL feature after end of iteration" errors raised by test_ogrsf
* Add more internal tables to block list
* Fixes for sql based layers
XLS driver:
* Set OLCStringsAsUTF8 capability to TRUE
== Python bindings ==
* Build windows python wrappers with -threads argument
* fix behavior of SetMetadata() when a value is of type bytes (#4292)
* fix GDALPythonObjectFromCStr() to return a bytes() object rather than a corrupted unicode string when invalid UTF-8 sequences are found
= GDAL/OGR 3.3.1 Release Notes =
The 3.3.1 release is a bug fix release.
== Build ==
* configure: fix explicit disabling of geos/sfcgal
* fix build against OpenEXR 3.0.1 (#3770)
* fix lack of compilation of nasakeywordhandler.o with some old/non-gnu
versions of grep (#3836)
== Port ==
* /vsiaz/: avoid appending same chunk several times
* /vsiaz/: advertise missing AZURE_NO_SIGN_REQUEST option
* IVSIS3LikeFSHandler::Sync(): add missing lock
* VSIS3FSHandler::GetOptions(): fix non-XML conformity (fixes
https://github.com/postgis/postgis/pull/618#discussion_r652143176)
* /vsiswift/: Fix openstack swift endpoint detection, add application_credential
authentication support (#3960)
* /vsiswift/: advertise missing options
* Fix incorrect ODBC type mapping for a number of SQL types
== GDAL utilities ==
* gdal_contour: fix bad coordinate order when outputting from raster with
geographic CRS to KML driver (#3757)
* gdalasyncread.cpp: add missing .h to gdal_version include. (#3951)
== Python scripts ==
* gdalattachpct.py: and add types hints and init `driver_name` variable
* osgeo_utils/auxiliary/color_table.py - fix type hints
* osgeo_utils/auxiliary/array_util.py - add ArrayLike, ScalarLike,
ArrayOrScalarLike types (to be used instead of NumpyCompatibleArray,
NumpyCompatibleArrayOrReal), removes numpy dependency
* osr_util.py, gdallocationinfo.py, numpy_util.py - use new types
* osgeo_utils/auxiliary/osr_util.py - get_srs() - add `default_axis_order` flag
(with get and set) to allow the user to change the default; add get_srs_pj(),
are_srs_equivalent() support functions
* osgeo_utils/samples/gdallocationinfo.py - adapt for the new axis_order variable
* util.py - `get_bands(ovr_idx)` to support also negative `ovr_idx` and resolution
* osgeo_utils/auxiliary/base.py - fix `num()`
* osgeo_utils/auxiliary/util.py - fix `get_bands()` for `ovr_idx==0`
* batch_creator.py - accept also `root: str`
* gdal_calc.py - fix type hint - color_table: Optional[ColorTableLike]
* osgeo_utils/auxiliary/color_palette.py - merge read() + read_color_file()
logic and fix the functions for reading qlr, qml files; rename some internal
functions
* osgeo_utils/auxiliary/color_table.py - get_color_palette now raises an
Exception to indicate a failure
== GDAL core ==
* GDALRasterBand::AsMDArray(): fix data axis to SRS Axis mapping in the return
of GetSpatialRef()
* GDALMDArray::AsClassicDataset(): fix RasterIO() when buffer data type is not
native data type
* fixed issue with GDALLoadRPBFile failing when RPB file does not contain
errBias or errRand fields
* GMLJP2v2 writing: fix axis order issue for gml:Envelope (#3866)
* Overview/rasterio: fix RMS on large Float32 values
== GDAL algorithms ==
* Warp kernel: prevent potential int overflows for > 2 GB work buffers
== GDAL drivers ==
COG driver:
* don't crash if GDALCreateGenImgProjTransformer2() fails
GRIB driver:
* add/fill a few GRIB1 ECMWF table to read a ERA5 product
* turn debug messages about unknown GRIB1 table as warnings
GTiff driver:
* GTiff/COG: fix overviews with NaN nodata value
* Fix RAT SetDefaultRAT for GTiff driver (#3783)
* when reading NoData value of Float32 dataset, cast it to float to avoid
overprecision (#3791)
* GTiff signedbyte: do not write 0 values for tiles/strips entirely at a
negative nodata value (#3984)
* Internal libtiff: fix when writing a IFD with a single tile that is a sparse
one, on big endian hosts
* Internal libtiff: merge upstream changes to make JPEG-in-TIFF generation work
with mozjpeg and libjpeg 9d
HDF5 driver:
* multidim API: fix crash when extracting a field from a compound HDF5 data type
netCDF driver:
* fix wrong offsetting by -360 of longitude values when huge nodata value found
at beginning or end of line
* be more restrictive on axis to decide if to advertise a geotransform
PostgisRaster driver:
* support for libpq services (#3820)
== OGR core ==
* Support multiline WKT geometry input
* OGRSQL: fix wrong evaluation of attribute filter when a OR with >= 3 clauses
is nested inside in another OR
* OGRSQL: Support ISO-8601 literal dates with IN operator (#3977)
* OGRFeature::GetFieldAsSerializedJSon(): fix nullptr dereference on empty
string list (#3831)
== OGRSpatialReference ==
* Fix crash in AutoIdentifyEPSG/GetEPSGGeogCS() on some WKTs (#3915)
* WKT: prevent putting quotes around spatial CS type
* Add `DERIVEDPROJCRS` to WKT keywords for `OGRSpatialReference::SetFromUserInput`
* Support GetLinearUnits for ellipsoidal and spherical coordinate systems that
have a height axis (#4030)
== OGR drivers ==
FlatGeobuf driver:
* accept COORDINATEMETADATA[] construct on reading but ignore it
GeoJSON driver:
* GeoJSON writer: emit error msg when geometry type is not supported in
GeoJSON (#4006)
GeoPackage driver:
* accept CreateField with a column with the fid column name and type=real,
width=20, precision=0
* add code to correct files with wrong gpkg_metadata_reference_column_name_update
trigger definition.
MapInfo driver:
* Fix mapping of mapinfo symbol numbers to corresponding OGR symbol IDs
OCI driver:
* Fix the Oracle DB connection when user and pwd are empty, while Oracle wallet
is used. (#3768)
* Don't try to create new layer with TRUNCATE option (#4027)
PLScenes driver:
* add PSScene and SkySatVideo item types to conf, and update other item types
Shapefile driver:
* fix wrong SRS when reading a WGS 84 SRS with a TOWGS84[0,0,0,0,0,0,0] (#3958)
SQLite driver:
* fix crash when calling GetMetadataItem() with domain==nullptr
* VirtualOGR module: avoid bad interaction with PROJ 8.1 database handling
VRT driver:
* Fix vrt spatial filter for geometry columns with space
== Python bindings ==
* Python >= 3.8 import: fix FileNotFoundError when PATH has nonexistent paths
on Windows (#3898)
* fix MDArray.ReadAsArray() with CInt16/CInt32 data type
* fix crash when reading null strings with MDArray.Read()
* fix memleak in gdal|ogr|osr.DontUseExceptions()
= GDAL/OGR 3.3.0 Release Notes
== In a nutshell... ==
* RFC 77 (https://gdal.org/development/rfc/rfc77_drop_python2_support.html): Drop Python 2 support in favor of Python 3.6 (#3142)
* RFC 78 (https://gdal.org/development/rfc/rfc78_gdal_utils_package.html): Add a gdal-utils Python package
* New driver:
- STACTA: raster driver to read Spatio-Temporal Asset Catalog Tiled Assets
* Add /vsiadls/ virtual file system for Azure Data Lake Storage Gen2
* Improved drivers: DIMAP, NITF
* Number of improvements in Python bindings
* Add automatic loading of configuration options from a file
* Add support for enumerated, constraint and glob field domains in MEM, FileGDB/OpenFileGDB and GeoPackage drivers
* Deprecation:
- Disable by default raster drivers DODS, JPEG2000(Jasper), JPEGLS, MG4LIDAR, FUJIBAS, IDA, INGR, ZMAP and vector driver ARCGEN, ArcObjects, CLOUDANT, COUCHDB, DB2, DODS, FME, GEOMEDIA, GTM, INGRES, MONGODB, REC, WALK at runtime, unless the GDAL_ENABLE_DEPRECATED_DRIVER_{drivername} configuration option is set to YES. Those drivers are planned for removal in GDAL 3.5
- Perl bindings are deprecated. Removal planned for GDAL 3.5. Use Geo::GDAL::FFI instead
* Removal of BNA, AeronavFAA, HTF, OpenAir, SEGUKOOA, SEGY, SUA, XPlane, BPG, E00GRID, EPSILON, IGNFHeightASCIIGrid, NTV1 drivers. Moved to (unsupported) https://github.com/OSGeo/gdal-extra-drivers repository.
* Continued code linting (cppcheck, CoverityScan, etc.)
* Bump of shared lib major version
== Backward compatibility issues ==
See MIGRATION_GUIDE.txt
== GDAL/OGR 3.3.0 - General Changes ==
General:
* fix build with recent gcc/clang
Build(Unix):
* Support CharLS 2.1 on Debian as well. (#3083)
* disable LERC on big-endian hosts, as it is not big-endian ready
* gdal-config (non installed): add -I/gnm in CFLAGS
* fix compilation failure with gcc < 5 in Elasticsearch driver
* configure: Also save LDFLAGS when checking compatibility.
* configure: Ensure --with-geos/sfcgal fail if unavailable.
* configure: check presence of linux/fs.h for Linux builds
* configure: Fix gdal compilation when using proj-8.0.0 and libtiff with static jpeg support
* GDALmake.opt.in: in non-libtool LD_SHARED builds, do not link applications against libgdal dependencies, but only against libgdal itself
Build(Windows):
* add missing makefile.vc for heif
== GDAL 3.3.0 - Overview of Changes ==
Port:
* GOA2GetRefreshToken(): avoid nullptr dereference in some cases
* /vsicurl/: for debug messages, use the debug key of derived filesystem, such as 'S3' instead of 'VSICURL'
* /vsicurl/: fix issue when trying to read past end of file.
* /vsicurl/: use less restrictive check for S3-like signed URLs to be usable by OpenIO (#3703)
* /vsicurl/: fix handling of X-Amz-Expires type of signed URLs (#3703)
* VSICurlStreamingClearCache(): fix cache clearing for /vsiaz_streaming/
* /vsimem/, /vsisubfile/: fix memleak if destroying the C++ handle with delete instead of using VSIFCloseL() (ossfuzz #28422 #28446)
* /vsiaz/: fetch credentials from Azure Active Directory when run from a Azure VM when AZURE_STORAGE_ACCOUNT is set.
* /vsiaz/: add SAS query string in HTTP Get Range requests.
* /vsiaz/: implement GetFileMetadata() / SetFileMetadata()
* /vsiaz/: fix Stat('/vsiaz/container') when shared access signature is enabled
* /vsis3/, /vsiaz/, /vsigs/: set Content-Type from filename extension for a few select file types
* /vsis3/ sync: improve upload performance by setting the default number of threads and increase the chunk size
* VSICachedFile::Read(): avoid division by zero if nSize == 0 (#3331)
* Make creation of global hCOAMutex thread-safer on Windows (#3399)
* Add VSIFOpenEx2L() to be able to specify headers such as Content-Type or Content-Encoding at file creation time
* CPLHTTP: Allow to set GSSAPI credential delegation type with GSSAPI_DELEGATION option / GDAL_GSSAPI_DELEGATION config. option
* CPLHTTPGetNewRetryDelay(): match 'Operation timed out' curl error
* CPLDebug: in CPL_TIMESTAMP mode, display also elapsed time since first trace
* Use _stricmp / _strnicmp for Windows EQUAL / EQUALN() macros
Core:
* Add automatic loading of configuration options from a file (located in {sysconfdir}/gdal/gdalrc or $(USERPROFILE)/.gdal/gdalrc)
* RasterIO: massive speed-up of nearest-neighbour downsampling when the downsampling factor is a integer value
* RasterIO: speed-up average downsampling when the downsampling factor is 2 and with Byte/UInt16/Float32 data type
* GDALDataset::BlockBasedRasterIO(): make it take into account floating-point window coordinates, as GDALRasterBand::IRasterIO() generic case does (#3101)
* GDALOpenEx(): supports OVERVIEW_LEVEL=NONE to indicate overviews shouldn't be exposed
* GDALCopyWholeRasterGetSwathSize(): take into account COMPRESSION IMAGE_STRUCTURE metadata item at dataset level (helps for DIMAP)
* cpl_userfaultfd.cpp: enable to disable it at runtime with CPL_ENABLE_USERFAULTFD=NO
* Python embedding: fix symbol conflicts with python library (#3215)
* Python embedding: fix loading in QGIS/Windows (or any process with more than 100 modules)
* Python embedding: make it work on Ubuntu 20.04 when python-is-python3 package that symlinks python to python3 is installed
* GDALUnrolledCopy_GByte: improve base SSE2 implementation so that specialized SSSE3 is no longer needer
* RPC: add parameters ERR_BIAS and ERR_RAND (#3484)
Multidim API:
* CreateCopy() multidim: allow to provide array-level creation options by prefixing them with "ARRAY:"
* [Set/Get][Offset/Scale](): extend to get/set storage data type. Add 'Ex' suffixed C API functions for that
* GDALMDArrayUnscaled: implement Write() to be able to get from unscaled values to raw values
* GDALMDArrayUnscaled::IWrite(): speed optimization when writing to netCDF 4
* GDALGroup::CopyFrom(): add ARRAY:AUTOSCALE=YES and ARRAY:AUTOSCALE_DATA_TYPE=Byte/UInt16/Int16/UInt32/Int32 creation options
* CreateCopy(): allow IF(NAME={name}) to be a full qualified name
* GDALExtendedDataType::Create(): do not allow creating compound data type with no component
Algorithms:
* Add RMS (Quadratic Mean) subsampling to RasterIO, overviews and warp kernel (#3210)
* Warping: improve performance related to PROJ usage for warping of small rasters
* Warper ComputeSourceWindow(): avoid potential integer overflow with a ill-behaved transformer/inverse projection
* Warper: fix assertion/crash in debug mode in GWKCheckAndComputeSrcOffsets() in some circumstances
* Pansharpening: fix wrong band assignment when input multispectral bands not in order 1,2,... and NoData set as PansharpeningOptions and not present in input bands
* internal_libqhull/poly.c: avoid int overflow on 32bit
* Fix failure in overview generation for certain raster sizes and overview factor, on raster with color table in particular (#3336)
* GDALSuggestedWarpOutput2(): avoid potential crash if an approximate transformer is provided
Utilities:
* gdalinfo: add -approx_stats in synopsis (#3296)
* gdal_translate -tr: make non-nearest resampling honour the specified resolution to avoid potential sub-pixel misalignment when the spatial extent, resolution and dimensions in pixels don't perfectly match
* gdal_translate: preserve source block size when not subsetting, and preserve as well COMPRESSION IMAGE_STRUCTURE metadata item
* gdal_translate / gdalwarp: do not copy CACHE_PATH metadata item from WMS driver
* gdalwarp: make -of COG work with multiple input sources when BigTIFF temporary output is needed (#3212)
* gdalwarp: preserve scale/offset settings of source bands to output (#3232)
* gdalwarp: address (one situation of) geometry invalidity when reprojecting the cutline to the source image
* gdal_create: add a -if option to specify a prototype input file
* gdal_rasterize: make -i work again (#3124)
* gdaldem TRI: add a -alg Riley option to use the Riley 1999 formula, for terrestrial use cases (#3320), and make it the new default
* gdal2tiles: Allow automatic max zoom when min zoom is specified
* gdal2tiles: change from cdn.leafletjs.com to unpkg.com for leaflet .css and .js (#3084)
* gdal2tiles: take into account --xyz in leafleft output (#3359)
* gdal_calc: multiple improvements (nodata, multiple inputs in the same alpha, checks, extent with union/intersection logic, color table, ...)
* gdal_edit: Correctly handle the error of parameter '-scale' with no number given
* gdal_ls.py: display file mode when available
* gdal2xyz.py: various improvements (nodata, band selection, etc.)
* pct2rgb.py and rgb2pct.py: added support for an input pct_filename
* gdalattachpct.py: new utility from attachpct.py sample
* validate_gpkg.py: various improvements
* add gdallocationinfo.py sample script
Resource files:
* tms_MapML_CBMTILE.json: fix it to use correct resolution / scaleDenominator. Unfortunately this makes it non-usable by gdal2tiles, but still by the COG driver
Multi driver changes:
* gdal2tiles/COG/MBTiles/GeoPackage: adjustments for EPSG:3857 output (due to PROJ 8 changes)
BAG driver:
* fix inversion of width and height in XML metadata (#3605)
BLX driver:
* fix potential free of uninitialized variable in case memory allocation would fail
BYN driver:
* relax checks in header bytes to allow products with some unset/invalid fields we don't use
COG driver:
* allow customising overview compression type (#3453)
DAAS driver:
* fix pixel retrieval of dataset with UInt16 data type and one mask band (#3061), and also use pixelType from bands[] instead of deprecated top-level one
DIMAP driver:
* add support for VHR 2020 Multispectral Full Spectrum products
* add support for multiple components / subdatasets
* set source block size to DIMAP VRT band (helps for performance with JP2KAK)
ECW driver:
* fix build with original ECW SDK 5.4 (#2776)
ENVI, Ehdr, and other "raw" drivers:
* lower memory requirements for BIP interleave, and improve efficiency (#3213)
FIT driver:
* reject negative value PAGESIZE creation option (ossfuzz #26596)
FITS driver:
* apply vertical mirroring on reading/writing
* add support for creation and update of binary tables
* display more informative error message when opening raster dataset in vector mode, or vice-verca
* avoid stack smash overflow with 32 bit Linux builds in GetRawBinaryLayout()
* set physical filename when opening subdataset
GRIB driver:
* fix reading subfields reusing the bitmap of a previous one (#3099)
* degrib: avoid erroneous unit conversion when section 4 has vertical values coordinates (#3158)
* degrib: add surface type 150 = Generalized Vertical Height Coordinate (#3158)
* Update MRMS Local Table to v12 (#3328)
* fix writing of ComplexPacking with nodata values and a single valid value (#3352)
GTiff driver:
* Internal libtiff resync with libtiff 4.3.0. Includes:
- tif_lerc.c: fix encoding of datasets with NaN values (#3055)
- TIFFStartStrip(): avoid potential crash in WebP codec when using scanline access on corrupted files (ossfuzz #26650)
* Export JPEG compression tags to metadata
* Report PREDICTOR in IMAGE_STRUCTURE dataset metadata domain (when it is set)
* avoid setting compoundCRS name to 'unknown' when the GTCitationGeoKey is absent
* better parse VerticalCitationGeoKey that is in the form 'VCS Name = foo|...'
* rely on libtiff for LERC codec instead of internal libtiff-only codec previously
* avoid GetSpatialRef() to return non-NULL on dataset with GCPs (#3642)
HDF5 driver:
* fix reading files whose HDF5 signature is not at offset 0 (#3188)
HFA driver:
* fix reading SRS with NAD83 favors, like 'NAD83(CORS96)'
JP2KAK driver:
* JP2KAKCreateCopy(): add validation of BLOCKXSIZE/BLOCKYSIZE to avoid Coverity warning about division by zero (CID 1086659, 1086660)
JPEG driver:
* add support for reading FLIR (infrared) metadata and thermal image
* read XMP tag from EXIF and expose its content in xml:XMP metadata domain
* CreateCopy(): add a warning when writing a non-CMYK 4-band dataset, and improve doc
* switch internal libjpeg internal memory allocator to default (malloc/free) (#3601)
LercLib (third_party):
* fix portability issue on non-Intel platforms
MRF driver:
* Restore raw Lerc1 detection (#3109)
* Support LERC1 compression improvements with non-finite values (#3335)
netCDF driver:
* fix reading netCDF4/HDF5 files whose HDF5 signature is not at offset 0 (#3188)
* accept relative variations in X/longitude and Y/latitude spacing of up to 0.2% for float variables or 0.05% for double. Add a GDAL_NETCDF_IGNORE_EQUALLY_SPACED_XY_CHECK config option to ignore those checks if needed (#3244, #3663)
* open /vsimem/ files without requiring Linux userfaultfd mechanism
* Set scope for raster/vector-only options in driver metadata
* multidim: add a GROUP_BY=SAME_DIMENSION option to GetGroupNames()
* change the 'No UNIDATA NC_GLOBAL:Conventions attribute' from a warning to a debug message
NITF driver:
* Add support for SNIP TREs: CSRLSB, CSWRPB, RSMAPB, RSMDCB, RSMECB, SECURA and SNSPSB
* Add xml:DES metadata domain and DES creation option (#3153)
* Add support for ISO8859-1 fields in NITF TREs
NWT_GRD driver:
* fix portability issue on non-Intel platforms
OGCAPI driver:
* add missing Windows build support
* fixes to handle links without type, in the coverage code path (Rasdaman use case)
* fix when coverage uses a compoundCRS with a time component (#3665)
PCIDSK driver:
* resynchronization of PCIDSK SDK with the internal repository maintained by PCI
* make GetMetadataItem() returns the same const char* for a given key (while SetMetadata/SetMetadataItem is not called)
PDS4 driver:
* update value of <parsing_standard_id> for TIFF/BigTIFF to what is expected by PDS4 IM (#3362)
RMF driver:
* Better support for sparse files. Fill null tiles with NoData value.
* Fix portability issues on non-Intel platforms
TileDB driver:
* Add support for array versioning (#3293)
* do not try to identify /vsis3/ files ending with .tif
* add /vsigs/ support
VRT driver:
* add a <UseMaskBand>true</UseMaskBand> element of <ComplexSource> to allow compositing of overlapping sources (#1148)
* AddBand() support BLOCKXSIZE and BLOCKYSIZE options; serialize/deserialize block size as attributes of VRTRasterBand element
* VRTPansharpenedDataset: fix crash when the spectral bands have no nodata value, but we have one declared in PansharpeningOptions, and when the VRTPansharpenedDataset exposes overviews (#3189)
* close sources at dataset closing (#3253)
WCS driver:
* fix memory leak in error code path (ossfuzz #28345)
WMS driver:
* tWMS: improves usability with NASA GIBS services (#3463)
* properly deal with northing,easting ordered CRS in WMS 1.3.0 when using connection string being a GetMap URL request (#3191)
* add option to specify HTTP Accept header
* Use noDataValue on empty blocks (#3375)
* Let pass expected NoDataValue to MRF for reading data (#3388)
* Update default values for VirtualEarth minidriver
WMTS driver:
* Map CURLE_FILE_COULDNT_READ_FILE to 404 (#2941)
XYZ driver:
* support reading datasets organized by columns, such as the ones of https://www.opengeodata.nrw.de/produkte/geobasis/hm/dgm1_xyz/dgm1_xyz
== OGR 3.3.0 - Overview of Changes ==
Core:
* Add UUID string field subtype
* OGRFeature::GetFieldAsString() and GeoJSON output: do not output Float32 with excessive precision
* IsPolarToWGS84(): make detection of polar projections more specific
* OGR SQL: fix potential crash or incorrect result on multi column ORDER BY (#3249)
* Expose prepared geometry API to C and in SWIG bindings
* OGRGeometry::ExportToJson(): takes into account CRS and axis order to swap
* OGRShapeCreateCompoundCurve(): fix memory leak in error code path. (ossfuzz #28923)
* Add OGR_G_Normalize() and bind it to SWIG (#3506)
* OGRPoint: make it empty when x or y is NaN (refs #3542)
* Avoid SWIG generating exception on OGRGeometry::IsValid (#3578)
* OGRGeometry::exportToWkt(): rebustify implementation against out-of-memory, and make it slightly more efficient for some huge geometries
* OGRSimpleCurve: fix copy constructor / assignment operator of empty Z/M geometries in some cases
* OGRGeometry: make sure that the return type of clone() for all classes is their own type
* OGRGeometry: make getGeometryRef() in subclasses return a better type
* OGRGeometry: Handle WKB > 2 GB. Add OGR_G_WkbSizeEx() and OGR_G_CreateFromWkbEx()
* Add OGRSimpleCurve::removePoint()
OGRSpatialReference:
* Fix exportToWkt() after morphToESRI() on Geographic/Projected 3D CRS.
* GetEPSGGeogCS(): make it use database lookups if needed (and avoid misidentification of 'NAD83(CORS96)' for example
* exportToWKT(): add a ALLOW_ELLIPSOIDAL_HEIGHT_AS_VERTICAL_CRS=YES option to allow export of Geographic/Projected 3D CRS in WKT1_GDAL as CompoundCRS with a VerticalCRS being an ellipsoidal height (for LAS 1.4)
* Add OGRCoordinateTransformation::TransformWithErrorCodes() and OCTTransform4DWithErrorCodes() to get PROJ (>= 8) error codes
* Add OCTCoordinateTransformationOptionsSetDesiredAccuracy() and OCTCoordinateTransformationOptionsSetBallparkAllowed(), and map them to SWIG
* GetEPSGGeogCS(): fix when projected CRS can't be exported to WKT2
* SetFromUserInput() allow https:// when loading CRS from opengis.net (#3548)
* Add Get/Set for PROJ auxiliary database filenames (#3590)
* Delegate to PROJ (>= 8.1) import from OGC URN and URL (OSGeo/PROJ#2656)
Utilities:
* ogrinfo: report field domain type and add '-fielddomain name' switch
* ogr2ogr: add -emptyStrAsNull option
* ogr2ogr: add propagation of field domains
* ogr2ogr: add a -resolveDomains switch
AmigoCloud driver:
* Fix date/datetime field type handling.
* Fix json encoder to handle nested strings. (#3483)
* Fix SQL delete (#3512)
CAD driver:
* fixes for big endian hosts
DGN driver:
* avoid assert() in case of very low memory condition (ossfuzz #27006)
DGN and DGNv8 driver:
* Support for reading User Data Linkage data (#3089)
DXF driver:
* Skip hatch polyline segments with one vertex
Elasticsearch driver:
* support WKT geo_shape encoding, and make GetExtent() use server-side query for geo_shape if ES >= 7.8 and XPack is installed
* fix GetFeatureCount() when SetAttributeFilter() is a ElasticSearch JSON filter
* add open options for timeouts and maximum number of features
FlatGeobuf driver:
* add editable capabilities
* fix crash when writing a geometry collection with an empty polygon (ossfuzz #29291)
* fix crash in GetFileList() on a dataset opened in update mode
* fix crash when writing features larger than 32 KB
GeoPackage driver:
* Add support for GeoPackage 1.3 (creation still defaults to 1.2)
* Fix handling of invalid SRS ID (#3286)
* always write milliseconds in a DATETIME field for strict compliance with the spec (#3423)
* no longer create triggers on gpkg_metadata and gpkg_metadata_reference
* Take into account OGR_CURRENT_DATE config option in gpkg_metadata_reference table (fixes #3537)
* Remove creation support for data_type='aspatial' legacy tables
* fix update of gpkg_metadata_reference when renaming or dropping a column, and this table references it
GeoJSON driver:
* writer: avoid invalid .0 suffix to be added to numeric values like 1eXX (#3172)
* writer: avoid CPLDebug() messages when writing BBOX in RFC7946 mode
* reader: accept files starting with {"bbox":...,"features":[... (#1537)
* reader: fix opening of file containing a Feature object and starting with a large properties (fixes #3280)
GML driver:
* fix layer extent with wrong axis order in some cases (#3091)
* recognize AIXM ElevatedSurface to be able to proper axis swapping (#3091)
* GML geometry parsing: handle km unit for radius of arcs (#3118)
* fix nullptr dereference on invalid GML (ossfuzz #28040)
LVBAG driver:
* Update to the new XSD schema (#3324)
* Minor fixes (#3467, #3462)
* Convert MultiPolygon to Polygon (#3581)
MapInfo driver:
* Support for font and custom symbols (#3081)
* Explicitly set pen cap and join params for pen tools
NAS driver:
* don't skip prescan, if NAS_GFS_TEMPLATE is given, but still don't write .gfs
NGW driver:
* Add extensions support.
* Add alternative field name support.
OAPIF driver:
* report url of STAC asset items
ODBC driver:
* Remove text trimming behavior
PGeo driver:
* don't silently ignore rows with NULLs for Memo fields
PostGIS driver:
* on reading, instantiate SRS from EPSG when possible instead of srtext to avoid axis order issues, and strip TOWGS84 on known datum (#3174)
* when detecting srid from table contents, ignore null geometries.
Shapefile driver:
* writer: do not write coordinates with non-finite values (#3542)
SQLite driver:
* recognize col decltype 'INTEGER_OR_TEXT' as a string
* better detection of view column types
SXF driver:
* fix reading on big-endian architectures
WFS driver:
* fix CreateFeature() for WFS 2 (#3323). And for WFS 2, make CreateFeature() and SetFeature() use GML 3
XLSX driver:
* fix read cells with inline formatting (#3729)
== SWIG Language Bindings ==
All bindings:
* avoid nullptr deref if providing some NULL arguments to gdal.Debug() and gdal.GOA2xxxxx() methods
* fix return type of Dataset.SetSpatialRef()
* fix expansion of ODsCRandomLayerWrite constant
* add missing GRA_Sum constant (#3724)
CSharp bindings:
* Replace ToInt32 calls with ToInt64 to prevent an ArithmeticException when executing against large images in a 64-bit context.
* Sign csharp assemblies as part of the netcore build process, verify signature during tests (#1368) (#3332)
* fix 'make' target on Linux/Mac
Java bindings:
* Add CoordinateTransformation.TransformPointWithErrorCode()
Python bindings:
* Add Dataset.WriteArray()
* Make Dataset.ReadRaster() and ReadAsArray() accept floating-point coordinates (#3101)
* Make methods such as WriteRaster() accept a bytearray object
* Return bytearray object as return of ReadRaster(), ReadBlock(), VSIFReadL(), MDArray.Read(), ...
* Add a band_list optional argument to Dataset.ReadAsArray()
* Make methods such as WriteRaster() accept any memoryview compatible of PyBUF_SIMPLE
* Make ogr.GetFieldAsBinary(), geom.ExportTo[Iso]Wkb() return a bytearray instead of a bytes object
* Make ReadRaster() and ReadBlock() accept an existing buf_obj buffer
* Make ReadAsArray(buf_obj = ar) fail if ar.flags.writable is False
* Make WriteRaster() accept a numpy array (when used without the buf_ overriders)
* Allow list or array types as input of MDArray.Write() for 1D arrays
* Prepare all samples scripts for reuse
* Add osgeo_utils.auxiliary submodules for auxiliary functions.
* [epsg_tr|esri2wkt|gcps2vec|gcps2wld|gdal_auth|gdalchksum|gdalident|gdalimport|mkgraticule].py - move undocumented untested utils to the `samples` subfolder where they belong
* Implement correct behavior for copy.copy() and copy.deepcopy() on a Geometry object (#3278)
* Add CoordinateTransformation.TransformPointWithErrorCode()
* Remove deprecated NumPy aliases for standard types.
* Better validation of Band.ReadAsArray() input shape (#3466)
* Dictionary typemap: accept key/value not being strings
* Add batch_creator.py, a Windows batch file creator
* Fix 'make generate' target on Unix builds (#3696)
= GDAL/OGR 3.2.0 Release Notes =
== In a nutshell... ==
* New GDAL drivers:
- ESRIC: ESRI bundle cache read-only driver (#2663)
- HEIF: read-only driver for HEIF/HEIC file. Requires libheif
- OGCAPI: tiles/maps/coverage raster/vector experimental driver
- TGA: read/only driver to read TGA image file format
* New OGR drivers:
- LVBAG: read-only support for Dutch LVBAG/Kadaster 2.0 vector format
* New utilities:
- gdal_create: to create/initialize a new raster file
* Other improvements:
- Multi-threaded overview computation (if GDAL_NUM_THREADS set)
- COG driver: TILING_SCHEME creation option
- OpenFileGDB driver: add support for using spatial indexes
- BAG driver: multiple improvements
- FITS driver: multiple improvements (MEF and binary table support)
- NITF driver: support for SNIP TREs
- OGRFieldDefn: support UNIQUE constraint
- OGRFieldDefn: support a AlternativeName (alias) property (#2729)
- Python bindings: move implementation of scripts (except gdal2tiles) in osgeo.utils package to be reusable
- Faster GTIFF Deflate compression/decompression through libdeflate (if using internal libtiff or libtiff > 4.1.0)
* Removed functionality:
- Python bindings: old-style "import gdal" is no longer available. Use "from osgeo import gdal" instead
- API_PROXY mechanism: likely never used for real usage.
- Removal of GDAL and OGR ArcSDE drivers
== Backward compatibility issues ==
See MIGRATION_GUIDE.txt
== New installed files ==
* data/tms_NZTM2000.json
* data/tms_LINZAntarticaMapTileGrid.json
* data/tms_MapML_APSTILE.json
* data/tms_MapML_CBMTILE.json
* data/template_tiles.mapml
== GDAL/OGR 3.2.0 - General Changes ==
General:
* fix building against Jasper 2.0.19 and 2.0.21
* Add optional libdeflate dependency for faster Deflate compression/decompression
Build(Unix):
* GNUmakefile: split long line to avoid 32K character limitation on MSYS2
* configure: Configure proj dependencies before proj (#2512)
* configure. add $with_proj_extra_lib_for_test n LIBS when detecting PROJ when no path is specified (#2672)
* configure: fix CharLS 2.1 detection on case insensitive filesystems (#2710)
* configure: fix --with-hdf4 and --disable-all-optional-drivers (#2740)
* GNUmakefile: make 'all' target an alias of the default one to avoid potential double build of OGR objects (fixes #2777)
* configure: add ODA lib requirements to compile GDAL with ODA 2021 (#2812)
* configure: fix detection of minor version number of Poppler with the new YY.MM.X numbering scheme (#2823)
* configure: fix detection of Spatialite 5 build against PROJ >= 6 (#2826)
* configure: fix detection of libtiff and libjpeg on mingw (fixes #2881)
* configure: fix linking order for Informix libraries
* configure: support CharLS 2.1 on Debian as well. (#3083)
* configure: disable LERC on big-endian hosts, as it is not big-endian ready
* fix compilation issue of gdallinearsystem.cpp on Slackware 14.2 (#2883)
* Update scripts/gdal-bash-completion.sh
Build(Windows):
* nmake.opt: mention shell32.lib in PROJ_LIBRARY
* nmake.opt: Add a PYEXEC var to specify the python executable when building GDAL/bindings on Windows.
* nmake.opt: add hint about adding ole32.lib to PROJ_LIBRARY for PROJ 7.1 when static linking (#2743)
* only expand CPL_DLL to__declspec(dllexport) when building GDAL (shared configuration) (#2664)
* add missing Windows build support for EXR driver
* generate_vcxproj.bat: add vs2019 compatibility (#2676)
* fix build in AVC driver in VSIL_STRICT_ENFORCE mode
== GDAL 3.2.0 - Overview of Changes ==
Port:
* 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
* cpl_json.h: add an iterator on array items, and fix const correctness of LoadUrl() method
* Add logging capabilities for /vsicurl, /vsis3 and the like. Add VSINetworkStatsGetAsSerializedJSON() and VSINetworkStatsReset(), CPL_VSIL_NETWORK_STATS_ENABLED and CPL_VSIL_SHOW_NETWORK_STATS config options
* /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
* /vsis3/: recognize AWS_PROFILE in addition to obsolete AWS_DEFAULT_PROFILE (#2470)
* /vsis3/: use IMDSv2 protocol to retrieve IAM role and credentials
* /vsis3/: add CPL_VSIS3_USE_BASE_RMDIR_RECURSIVE=YES for some S3-like APIs do not support DeleteObjects
* /vsis3/: additional retry on failures on write operations
* VSIS3FSHandler::SetFileMetadata(): fix memleak
* Improved AWS EC2 detection on Windows
* /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
* /vsiaz/: do not consider directory absence as an error situation for Rmdir()
* /vsiaz/: fix OpenDir()/NextDirEntry() that returned S_IFDIR for regular files
* /vsiaz/: update to latest version of API (2019-12-12)
* /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)
* /vsiaz/: ReadDir(): fix caching of file properties with space in the name
* VSISync(): implement chunking of large files for /vsiaz/ upload when CHUNK_SIZE and NUM_THREADS are set
* VSISync(): split large files on download/upload for /vsis3/ and /vsiaz/ (#2786)
* VSISync(): add a SYNC_STRATEGY=OVERWRITE to always overwrite target file
* 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()
* VSI plugin: add caching option (#2901)
* VSI plugin: add callback to explicitly list sibling files (#2980)
* CPLWorkerThreadPool: add capability to create several job queues
* CPLStrtodDelim(): recognize '1.#SNAN' as a NaN value
* CPLAtoGIntBigEx(): use strtoll() when available since POSIX doesn't guarantee atoll() will return ERANGE (and libmusl for example does not return it)
* CPLIsFilenameRelative(): treat "scheme://.." filenames as absolute
* Add GDAL_CURL_CA_BUNDLE environment variable (#3025)
* CPLHTTPFetch: fix reading FORM_FILE_PATH on Windows (#2971)
* Add CPLHTTP[Push|Pop]FetchCallback() and CPLHTTPSetFetchCallback() callback mechanisms to replace curl implementation (to be used by QGIS)
* VSI_CACHE: do not trust unreliable file size from underlying layer as in fixes #3006
* CPLMultiPerformWait(): use curl_multi_poll() for curl >= 7.66
Core:
* Overview building: add multi-threading of resampling computations when GDAL_NUM_THREADS config option is set
* add a TileMatrixSet class to parse OGC Two Dimensional Tile Matrix Set 17-083r2 JSON encoded definitions, and add NZTM2000 and LINZAntarticaMapTileGrid definitions
* Add GDALAutoCreateWarpedVRTEx function to GDAL API to accept extra options for transformer (#2565)
* add a global thread pool mechanism
* GDALDataset::IRasterIO(): Fixes wrong IO of subpixel shifted window (#2057)
* GDALDriver::QuietDelete(): partially revert 3.1 commit f60392c8
* gdal_priv.h: export EXIFExtractMetadata() for plugin uses
* DumpJPK2CodeStream(): fix reported offset of EOC marker when PSOT = 0 (#2724)
* Overview generation: fix progress percentage when using USE_RRD=YES (#2722)
* reader_geo_eye.cpp and reader_pleiades.cpp: avoid potential issue with overuse of per-thread CPLPath static buffers