-
-
Notifications
You must be signed in to change notification settings - Fork 2.5k
/
NEWS
12668 lines (10486 loc) · 649 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.2.3 Release Notes =
The 3.2.3 release is a bug fix release. Note that the GDAL 3.2 series is the last one to support Python versions < 3.6
== GDAL algorithms ==
* GDALSerializeWarpOptions(): fix potential nullptr dereference (CID 1448606)
== GDAL core ==
* LoadPythonAPI(): make it work on Ubuntu 20.04 when python-is-python3 package that symlinks python to python3 is installed
== GDAL drivers ==
BAG driver:
* fix inverted width/height info in XML (#3605)
ECW driver:
* fix build with original ECW SDK 5.4 (#2776)
GTiff driver:
* fix speed of guessing JPEG quality
* GTIFF/COG: fix overviews with NaN nodata value
JP2KAK driver:
* JP2KAKDataset::Open(): avoid illegal memory access when reading J2K_SUBFILE: (CID 1448644)
JPIPKAK driver:
* JPIPKAK: avoid use after free in error code path (CID 1086757)
netCDF driver:
* increase tolerance to detect regularly spaced lon/lat arrays when data type is float (#3663)
* multidim API: fix retrieval of indexing variable when the indexing variable has more than 1D
NWT_GRD driver:
* fix portability issue
RMF driver:
* fix portability issues on non-Intel platforms
LercLib: fix portability issue on non-Intel platforms
== OGR core ==
* OGRPoint: make it empty when x or y is NaN (#3542)
* Prepared geometries: avoid GEOS crash on a Point Empty (#3542)
== OGR drivers ==
AmigoCloud driver:
* fix GetFeature (#3569)
* fix memleak (CID 1448692)
CAD (libopencad) driver:
* fixes for big endian hosts
FlatGeoBuf driver:
* fix crash in GetFileList() on a dataset opened in update mode
* fix crash when writing features larger than 32 KB (ossfuzz 29462)
GeoPackage driver:
* accept GPKG 1.3.x user_version without warning (#2479)
SXF driver:
* fix reading on big-endian architectures
XLSX driver:
* fix read cells with inline formatting (#3729)
== SWIG bindings ==
* fix expansion of ODsCRandomLayerWrite
* add missing GRA_Sum constant (#3724)
== Python bindings ==
* setup.py: fix for 'python setup.py sdist' with python3
= GDAL/OGR 3.2.2 Release Notes =
The 3.2.2 release is a bug fix release. Note that the GDAL 3.2 series is the last one to support Python versions < 3.6
== Build ==
* fix compilation failure in Elastic driver with gcc < 5. Fixes #3439, #3422, #3414
* Fix -Wodr -O2 warnings raised by gcc 10
== Port ==
* VSICachedFile::Read(): avoid division by zero if nSize == 0 (#3331)
== GDAL algorithms ==
* Fix failure in overview generation for certain raster sizes and overview factor, on raster with color table in particular (#3336)
== GDAL core ==
* GDAL Python embedding: fix loading in QGIS/Windows (QGIS #41048)
== GDAL utilities ==
* gdal_edit.py: Correctly handle the error of parameter '-scale' with no number given
== GDAL drivers ==
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
GRIB driver:
* fix writing ComplexPacking with nodata values and a single valid value (#3352)
GTiff driver:
* tif_lerc: fix issue with state machine
PDS4 driver:
* update value of <parsing_standard_id> for TIFF/BigTIFF to what is expected by PDS4 IM (#3362)
== OGR drivers ==
AmigoCloud driver:
* fix json encoder to handle nested strings. (#3483)
* Fix date/datetime field type handling
* Fix SQL delete (#3512)
FlatGeobuf driver:
* fix crash when writing a geometry collection with an empty polygon. (oss-fuzz 29291)
GPKG driver:
* always write milliseconds in a DATETIME field for strict compliance with the spec (#3423)
ODBC drivers:
* Fix OGR silently ignores some rows with NULLs for memo fields in MDB (#3456)
== CSharp bindings ==
* Sign csharp assemblies as part of the netcore build process, verify signature during tests (#1368) (#3332) (#3334)
= GDAL/OGR 3.2.1 Release Notes =
The 3.2.1 release is a bug fix release.
== Build ==
* Windows: add missing makefile.vc for HEIF driver
* Windows: add missing build support for OGCAPI driver
* gdal-config (non installed): add -I/gnm in CFLAGS
* Add some missing <limits> includes for gcc11 or recent clang
== 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
== GDAL algorithms ==
* GDALSuggestedWarpOutput2(): avoid potential crash if an approximate transformer is provided
* Warper ComputeSourceWindow(): avoid potential integer overflow with a ill-behaved transformer/inverse projection
Warper: fix assertion/crash in debug mode in GWKCheckAndComputeSrcOffsets()
* Pansharpening: fix wrong band assingment when input multispectral bands not in order 1,2,... and NoData set as PansharpeningOptions and not present in input bands
== GDAL core ==
* /vsimem/: fix memleak if destroying the C++ handle with delete instead of using VSIFCloseL(). (oss-fuzz #28422)
* /vsisubfile/: fix memleak if destroying the C++ handle with delete instead of using VSIFCloseL(). (oss-fuzz #28446)
* Python embedding: fix symbol conflicts with python library (#3215)
== GDAL utilities ==
* gdal_rasterize: make -i work again (#3124)
* 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
* 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)
== GDAL drivers ==
Multi-driver:
* gdal2tiles/COG/MBTiles/GeoPackage: adjustments for EPSG:3857 output (due to PROJ 8 changes)
* Raw datasets: increase the default max mem alloc to 1 GB for 64 bit processes, and add a RAW_MEM_ALLOC_LIMIT_MB config option to allow the user to specify a higher value (#3213)
BLX driver:
* fix potential free of uninitialized variable in case memory allocation would fail
FIT driver:
* avoid potential integer overflow with PAGESIZE creation option (oss-fuzz #26673)
FITS driver:
* 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
* add support for creation and update of binary tables
GRIB driver:
* avoid erroneous unit conversion when section 4 has vertical values coordinates (#3158)
* add surface type 150 = Generalized Vertical Height Coordinate (#3158)
HDF5 driver:
* fix reading netCDF4/HDF5 files whose HDF5 signature is not at offset 0 (#3188)
HFA driver:
* fix reading SRS with NAD83 favors, like 'NAD83(CORS96)'
MRF driver:
* Restore raw Lerc1 detection (#3109)
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.05%. Add a GDAL_NETCDF_IGNORE_EQUALLY_SPACED_XY_CHECK config option to ignore those checks if needed (#3244)
PCRaster / libcsf:
* validate value before cast. (oss-fuzz #28928 and #29029)
VRT driver:
* 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)
WCS driver:
* fix memory leak in error code path (oss-fuzz #28345)
WMS driver:
* properly deal with northing,easting ordered CRS in WMS 1.3.0 when using connection string being a GetMap URL request (#3191)
WMTS driver:
* Map CURLE_FILE_COULDNT_READ_FILE to 404 (#3187)
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
* avoid harmless floating point division by zero (oss-fuzz #27740)
== OGR core ==
* OGRFeature::GetFieldAsString() and GeoJSON output: do not output Float32 with excessive precision
* OGR SQL: fix potential crash or incorrect result on multi column ORDER BY (#3249)
* OGRSpatialReference::GetEPSGGeogCS(): make it use database lookups if needed (and avoid misidentification of 'NAD83(CORS96)' for example
* OGRSpatialReference::exportToWKT(): add a option to allow export of Geographic/Projected 3D CRS in WKT1_GDAL
* GetEPSGGeogCS(): fix when projected CRS can't be exported to WKT2
* OGRShapeCreateCompoundCurve(): fix memory leak in error code path. (oss-fuzz #28923)
== OGR drivers ==
DXF driver:
* Skip hatch polyline segments with one vertex
Elasticsearch driver:
* support WKT geo_shape encoding
* 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 (#3169)
* Port upstream changes to fix oss-fuzz #27530
GeoJSON driver:
* accept files starting with {"bbox":...,"features":[... (#1537)
* accept file containing a Feature object and starting with a large properties (#3280)
* writer: avoid CPLDebug() messages when writing BBOX in RFC7946 mode
* writer: avoid invalid .0 suffix to be added to numeric values like 1eXX (#3172)
GML driver:
* GML geometry parsing: handle km unit for radius of arcs (#3118)
* GML geometry parsing: avoid potential exponential complexity on broken XML (oss-fuzz #27301)
* GML geometry parsing: fix nullptr dereference on invalid GML (oss-fuzz #28040)
MITAB driver:
* avoid casting invalid value to enumerated type (oss-fuzz #26770)
NAS driver:
* don't skip prescan, if NAS_GFS_TEMPLATE is given, but still don't write .gfs
PostgreSQL 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
WFS driver:
* fix CreateFeature() for WFS 2 (#3323). And for WFS 2, make CreateFeature() and SetFeature() use GML 3
== Python bindings ==
* osgeo/__init__.py - add python version check and deprecation warning. GDAL 3.2.X will be the last release supporting Python 2.7. Python 3.6 or above will be required for GDAL 3.3
* Remove swig/python/[gdal|ogr|osr|gdalconst|gdalnumeric].py (#3149)
* Implement correct behavior for copy.copy() and copy.deepcopy() on a Geometry object (#3278)
= 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
* GDALDataset::IRasterIO(): make it try overviews when non-nearest resampling is done before doing RasterIOResampled() on full resolution dataset
* Workaround issue with UTF-8 precomposed vs decomposed encodings on MacOS filesystems that affect sidecar file discovery (#2903)
* GDALBuildVRT(): add support for sources such as MEM dataset or non-materialized VRT files
* GDALDataset::BlockBasedRasterIO(): make it take into account floating-point window coordinates, as GDALRasterBand::IRasterIO() generic case does (#3101)
Multidim API:
* GetMask(): use underlying parent data type as much as possible, instead of double, to avoid potential performance issues
* GetMask(): optimize when we know the mask is always at 1, and when output buffer is contiguous Byte
* Add GDALGroupOpenMDArrayFromFullname() and GDALGroupOpenGroupFromFullname(), and exose them to SWIG (#2790)
* Add GDALGroup::ResolveMDArray() and map it to C and SWIG
* Add GDALMDArrayGetStatistics(), GDALMDArrayComputeStatistics() and GDALDatasetClearStatistics()
* Make sliced and transpose arrays access the attributes of their source array
* add GDALMDArrayAdviseRead() and implement it in netCDF driver for DAP datasets
Algorithms:
* Warper/transformer: avoid error about invalid latitude when warping a dataset in Geographic CRS whose north/south lat is > 90deg (#2535)
* Warper: use gcore global thread pool when doing multithreaded operations
* Warper: fix average resampling that lead to very wrong results in some circumstances (#2665) (3.1.0 regression)
* Warper: ComputeSourceWindow(): modify extra source pixel computation in anti-meridian warping situations
* Warper: fix computation of kernel resampling width when wraping accros the antimeridian
* Warper: emit error message instead of assertion if cutline is not a (multi)polygon (#3037)
* RPC transformer: Add RPC_DEM_SRS option to override SRS of RPC_DEM. (#2680)
* TPS transformer: fix handling of duplicated GCPs (fixes #2917)
* Polygonize: make sure not to use dummy geotransform
Utilities:
* gdalinfo, gdal_translate, gdalwarp: add a -if switch to be able to specify input driver(s) (#2641)
* gdalinfo: json output: report nan/inf values as a string instead of invalid JSON
* gdalinfo: json output: do not escape forward slash
* gdal_translate (and GTiff driver): copy XMP metadata unless -noxmp is specified (#3050)
* gdal_viewshed: adjust computation of observer position (#2599)
* gdaldem: ignore 'nv' entry in color file if there is no nodata value in input file
* gdalwarp: fix crash if warping a dataset without source or target CRS when -ct is specified (#2675)
* gdalwarp: improve logic for selecting input overview when target bounds and resolution are specified
* gdalwarp: better guess of target resolution when target extent is specified (#2754)
* gdalbuildvrt: for easier understanding, and replicate gdal_translate -of VRT behavior, clamp xSize/ySize of SrcRect/DstRect if outside raster dimensions. Not a fix per se
* gdalbuildvrt: add support for automatically declaring virtual overviews in very restricted situations
* gdalbuildvrt: fix -srcnodata / -vrtnodata handling in -separate mode (#2978)
* gdal_grid: Addition of -tr option (#2839)
* gdal_contour: major speed up in polygon mode (#2908)
* gdal2tiles: make general cmd line switches like --formats work without exception (#2522)
* gdal2tiles: fix issue in nativezoom computation with --profile=raster on a raster whose size is below the tile size
* gdal2tiles: fix --xyz with -p raster, fix KML generation with --xyz (#2463) and update OpenLayers export to OpenLayers 6.3.1
* gdal2tiles: add -w mapml output, and possibilities to use custom tiling scheme / profile
* gdal2tiles.py: fix generation of tiles at high zoom levels when input is small (#2896)
* gdal2tiles.py: make sure configuration options specified with --config are passed to worker processes (#2950)
* gdal2tiles.py: fix --profile=raster on a non-georeferenced image (#2998)
* gdal2tiles: change from cdn.leafletjs.com to unpkg.com for leaflet .css and .js (#3084)
* 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
* gdal_calc: support multiple calc arguments to produce a multiband file (#3003)
* gdal_calc.py: raise exception in case of I/O error. Fixes QGIS #36867
* gdal_sieve.py: do not write geotransform to the target if the source doesn't have one (#2830)
* gdalcompare.py - export def find_diff(golden_file, new_file, check_sds=False) into a function for reuse
* gdalcompare.py: fix floor division in Python 3
* validate_cloud_optimized_geotiff.py: update to support SPARSE_OK=YES files
Multi driver changes:
* Driver metadata: fix XML errors in option declarations and add testing (#2656)
* JPEG2000 drivers: extent signature for JPEG2000 codestream to avoid false positive detections.
LERC:
* Fixed a bug in Lerc2 decoder (https://github.com/Esri/lerc/pull/129)
* Fixed a bug in Lerc1 decoder (https://github.com/Esri/lerc/pull/121)
AAIGrid:
* mention dataset name in errors (#3051)
BAG driver:
* add support for reading georeferenced metadata
* remove support for interpolated resampled raster
* add support for COUNT VALUE_POPULATION strategy
* support reading other single resolution layers on the root node
* add support for Create()/warp operation
* add support for reading the tracking list (with OGR API)
* fix reporting of vertical CRS
* fix missing nodes at right and top edges of supergrids in resampling mode (#2737)
* allow it to be used in multidimensional mode through the generic HDF5 driver
* fix for big endian arch
* avoid crash on non-standard dataset
COG driver:
* add support for using custom TILING_SCHEME using OGC 17-083r2 JSON encoded definitions
* add ZOOM_LEVEL_STRATEGY creation option
* add WARP_RESAMPLING and OVERVIEW_RESAMPLING to override general RESAMPLING option (#2671)
* write information about tiling scheme in a TILING_SCHEME metadata domain
* add a SPARSE_OK=YES option to create sparse files
* TIFF/COG: report content of the header ghost area in metadata
* skip reprojection when source dataset matches reprojection specifications
* fix rounding issue when computing overview dimensions
* fix crash if passing an invalid (warp) resampling
* fix crash when source dataset is non-Byte/non-UInt16 with a color table (fixes #2946)
DIMAP driver:
* fix loading when R1C1 tile is not present (#2999)
DTED driver:
* add support for EGM08 for dted metadata "E08" (#3047)
E00grid driver:
* avoid recursive call in _GetNextSourceChar(). Fixes ossfuzz#25161
ECW driver:
* fix related to network files with SDK >= 5.5 (#2652)
ENVI driver:
* write nodata value in 'data ignore value' header field
* add support for writing south-up / rotation=180 datasets
FIT driver:
* reject negative value PAGESIZE creation option (ossfuzz#26596)
FITS driver:
* add support for reading multiple-extension FITS files through subdatasets
* add support for reading binary tables
* initialize default geotransform
* do not emit error if no georeferencing is found
GPKG driver:
* perf improvement: when inserting more than 100 features in a transaction in an existing layer, switch to a deferred insertion strategy for spatial index entries
* on reading of gridded coverage data with PNG tiles, select -FLT_MAX as the nodata value (#2857)
* add support for using custom TILING_SCHEME using OGC 17-083r2 JSON encoded definitions
* increase limitation of number of tables to 10000, and make it configurable through OGR_TABLE_LIMIT config option as for vector tables
* more robust and simple logic to build overviews and compute overview factor (#2858)
* make ST_Transform() fallback to EPSG code when no SRS with the given srs_id can be found in gpkg_spatial_ref_sys
* CreateSpatialIndex(): slight optimization by bumping batches to 500K features
* make SELECT DisableSpatialIndex(...) run faster
* fix when writing a tile with uniform negative values or values > 65535 (when nodata is set) in PNG tiles (#3044)
* fix GDAL 3.0 regression regarding some update scenarios (#2325)
GRASS driver:
* simplified to GRASS GIS 7+ only (#2945)
* fix reading GRASS groups (#2876)
GRIB driver:
* correctly report PDS template number for messages with subgrids (#3004)
* avoid rejecting valid product due to security check
* fix retrieval of nodata value for GRIB1 products (GDAL 3.1 regression, #2962)
* fix reading subfields reusing the bitmap of a previous one (GDAL 3.1 regression, #3099)
* Degrib g2clib: rename symbols of our internal modified copy (#2775)
GTiff driver:
* add read support for overviews/masks referenced through TIFFTAG_SUBIFD (#1690)
* add WEBP_LEVEL_OVERVIEW config option to set WebP compression level on overviews
* fix wrong direction for half-pixel shift with GCPs and PixelIsPoint convention
* for Geodetic TIFF grids (GTG), report the 'grid_name' metadata item in the subdataset description
* fix reading/writing GEO_METADATA TIFF tag on big-endian
* fix importing WGS_1984_Web_Mercator / ESRI:102113 (#2560)
* use gcore global thread pool when doing multithreaded operations
* allow multi-threaded JPEG compression. This can help a bit
* fix potential crash when generating degenerate 1x1 overviews
* in CreateCopy() mode, avoid closing and re-opening the file handle
* add earlier check to bail out when attempting JPEG compression with paletted image
* LERC codec: do not write TIFFTAG_LERC_PARAMETERS several times as it cause spurious directory rewrites, and breaks for example COG creation
* LERC codec: fix encoding of datasets with NaN values (#3055)
* SRS reader: interpret infinite value in GeogInvFlatteningGeoKey as 0 (fixes PROJ #2317)
* support hidden SHIFT_ORIGIN_IN_MINUS_180_PLUS_180=YES open option used by GDALOpenVerticalShiftGrid()
* Internal libtiff: updated to latest upstream master version
* Internal libgeotiff: updated to latest upstream master version
HDF4 driver:
* do not report SDS when there are EOS_SWATH or EOS_GRID in it. Add LIST_SDS open option
* multidim: fix issue when reading transposed array, and duplicate attribute names (#2848)
HDF5 driver:
* add support for new 'CSK 2nd generation' (CSG) (#2930)
* multidim: fixes for big endian host
* multidim: fix performance issue when reading from sliced array
HFA driver:
* do not report TOWGS84 when reading SRS with WGS84, NAD27 or NAD83 datums (unless OSR_STRIP_TOWGS84 config option is set to NO) (fixes QGIS #36837)
ISCE driver:
* avoid crashing division by zero on corrupted datasets. Fixes ossfuzz#24252
ISIS3 driver:
* make sure that in-line label size is at least 65536 bytes (#2741)
JP2KAK driver:
* add ORGtparts creation option
JP2OpenJPEG driver:
* add support for generating files with PLT marker segments (OpenJPEG > 2.3.1)
* add support to enable multi-threaded encoded (OpenJPEG > 2.3.1)
* writer: acquire input data in background thread
* fix reading overviews on Sentinel2 PVI files (343x343 size, with 8x8 tiles) (#2984)
LCP driver:
* add extension checking in Identify() (#2641)
MRF driver:
* add support for interleaved LERC (#2846)
* LERC V1 support for NaN and other bug fixes (#2891)
* missing data return on initial caching of nodata tiles (#2913)
* Fixes for Create() (#2923)
NetCDF driver:
* GrowDim(): fix issue with non-ASCII filename on Windows
* fix setting offset and scale in CreateCopy()
* allow a NETCDF:http://example.com/my.nc DAP dataset to be opened
* multidim: fix performance issue when reading from sliced array
* multidim: optimize reading into a data type 'larger' than the native one
* multidim: identify the indexing variable of a dimension through the 'coordinates' attribute of other variables (#2805)
* multidim: add CHECKSUM and FILTER creation options. Make SetRawNoDataValue() use nc_def_var_fill()
* multidim: fix retrieval of missing_attribute, etc... when reading mask
NITF driver:
* add support for various TREs for Spectral NITF Implementation Profile (SNIP): MATESA, GRDPSB, BANDSB, ACCHZB, ACCVTB, MSTGTA, PIATGB, PIXQLA, PIXMTA, CSEXRB, ILLUMB, CSRLSB, CSWRPB
* Add nested variable support in xml:TRE
PAux driver:
* avoid ingesting large binary unrelated files (found when investigating #2722)
PCRaster driver:
* fix Create() mode by propagating eAccess = GA_Update (#2948)
PDF driver:
* update to pdfium/4272 with https://github.com/rouault/pdfium_build_gdal_3_2
PDS driver:
* take into account FIRST_STANDARD_PARALLEL for Mercator projection (#2490)
RMF driver:
* Better support for sparse files. Fill null tiles with NoData value.
RS2 driver:
* remove support for CharLS compression since it is removed from upstream librasterlite2
SAFE driver:
* deal correctly with WV swaths (#2843)
TileDB driver:
* support for pixel interleave and single formats (#2703)
TSX driver:
* fix issue with reading dataset in .zip file on Windows (#2814)
VICAR driver:
* fix for Basic compression and non-Byte type on big endian host
* avoid potential null-dereference on corrupted dataset. Fixes ossfuzz#24254
VRT driver:
* Add support for explicit virtual overviews. Can be built with gdaladdo --config VRT_VIRTUAL_OVERVIEW YES (#2955)
* VRTDataset::IRasterIO(): allow source overviews to be used when non-nearest resampling is used, and the VRT bands don't expose overviews (#2911)
* fix VRTRasterBand nodata handling when creating implicit overviews (#2920)
* round src/dst coordinates to integer within 1e-3 margin
* prevent potential infinite recursion in VRTDataset::IRasterIO()
WMS driver:
* Add a GDAL_MAX_CONNECTIONS config option
* WMS cache: add a <CleanTimeout> in <Cache> XML configuration (#2966)
WMTS driver:
* Add support for DataType tag in service description XML (#2794)
== OGR 3.2.0 - Overview of Changes ==
Core:
* Add unique constraints to OGRFieldDefn in core, GML, PG, PGDump, GPKG, SQLite and VRT drivers (#2622)
* Add support for field AlternativeName to OGRFieldDefn, read alias in openfilegdb driver (#2729)
* Add GDALDataset::AbortSQL (#2953)
* OGRFeature::GetFieldAsString(): remove 80 character limitation when formatting string/integer/real lists (#2661)
* Add OGRLayerUniquePtr and OGRExpatUniquePtr aliases (#2635)
* OGRSQL: take into account second part of arithmetic expression to correctly infer
result type.
* OGRSQL: support constructs 'A AND B AND C ... AND N' with many successive AND ((#2989)
* OGRSQL: Fixed buffer overflow in BuildParseInfo for SQL query when joining multiple tables that each have implicit FID columns.
* ogr_geometry.h: export OGRWktOptions class (#2576)
* ogr_swq.h: type nOperation as swq_op
OGRSpatialReference:
* Make GetAuthorityCode('PROJCS') work on a WKT1 COMPD_CS with a VERT_DATUM type = 2002 (Ellipsoid height)
* Make OSRGetPROJSearchPaths() return the value set by OSRSetPROJSearchPaths()
* exportToProj4(): make it add +geoidgrids= when possible (needs PROJ 7.2)
* Add OSRDemoteTo2D() and expose it to SWIG
* fix GetUTMZone() to work on 3D projected CRS
* exportToWkt(): accept FORMAT=WKT2_2019 (alias of WKT2_2018)
* fixes to avoid crashes with datum ensemble objects (needs PROJ 7.2)
* Avoid warnings in GetProjTLSContextHolder() when PROJ resource path is not already set (PROJ #2242)
* ogr_proj_p.cpp: make sure init() is called in OSRPJContextHolder() constructor to avoid potential use of default NULL PROJ context (#2691)
* fix issue with PROJ context and OSRCleanup() (#2744)
* Fix exportToWkt() after morphToESRI() on Geographic/Projected 3D CRS. But only works with PROJ 7.2
Utilities:
* ogrinfo: report field unique constraint
* ogrinfo: report field alternative name
* ogrinfo: report SUBDATASETS domain
* ogrinfo/ogr2ogr: fix issues with -sql @filename where SQL comments are not at start of line (#2811)
* ogr2ogr: bump default value of -gt to 100 000
Multi driver changes:
* Avoid copy&paste implementations of GetNextFeature() relying on GetNextRawFeature() through OGRGetNextFeatureThroughRaw class
* make sure GetNextFeature() always return nullptr after the first time it did (ie no implicit ResetReading()) in GPKG, SQLite, PCIDSK, MSSQLSpatial and MySQL driver
* better support for layers with field names differing by case in OGR SQL, SQL SQLite and VRT
CSV driver:
* do not try to read .csvt if CSV filename has no extension (#3006)
DXF driver:
* Propagate PaperSpace field from INSERTs to subfeatures
* Fix wrong transformer composition for ASM entities
* do not rely on tail recursion and avoid potential big stack calls when eliminated 999 comment lines. Fixes ossfuzz#22668
Elasticsearch driver:
* make OVERWRITE_INDEX=YES work properly by re-creating the index afterwards
ESRIJSON driver:
* fix GetFeatureCount() and GetExtent()
FileGDB/OpenFileGDB drivers:
* qualify DateTime values with UTC timezone when <IsTimeInUTC>true</IsTimeInUTC> is present in layer metadata (#2719)
FileGDB driver:
* generate layer definition XML with HasSpatialIndex=true to better reflect reality.
* add support for reading and writing field alternative names
* simplify spatial filtering, and apply full intersection in GetFeatureCount() instead of BBOX one, so as to be similar to OpenFileGDB
FlatGeoBuf driver:
* Metadata extensions (#2929)
* fix illegal use of std::vector (#2773)
* make GetExtent() work on feature write (#2874)
GeoJSON driver:
* fix opening of file starting with {"coordinates" (#2720)
* fix opening of file starting with {"geometry":{"coordinates" (#2787)
* RFC7946 writer: fix processing of geometry that covers the whole world (#2833)
* 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
GML driver:
* add a WRITE_GFS=AUTO/YES/NO open option (#2982)
* writer: correctly format OFTDate and OFTDateTime fields (#2897)
* hugefileresolver: add missing xmlns:xlink to make Xerces parser happy
* fix typo in VFR GFS files BonitovaneDilRizeniId -> BonitovanyDilRizeniId (#2685)
* when encountering XML issue, defer emission of error message until we return a NULL feature, so as to avoid to confuse ogr2ogr (#2730)
* XSD parser: recognized unsignedLong data type
* avoid 'Destination buffer too small' error to be emitted on /vsicurl_streaming/ URLs with filters coming from the WFS driver
* fix layer extent with wrong axis order in some cases (#3091)
* recognize AIXM ElevatedSurface to be able to proper axis swapping (#3091)
GMLAS driver:
* avoid running out of file descriptors in case of big number of layers
* fix so as to get same unique ids on big-endian arch
GPKG driver:
* add a PRELUDE_STATEMENTS open option that can be used for example to attach other databases
* add a DATETIME_FORMAT=WITH_TZ/UTC dataset creation option (defaults to WITH_TZ) to specify how to deal with non-UTC datetime values (#2898)
* hide view "geometry_columns"
* fix wrong RTree _update3 trigger on existing files (QGIS #36935)
GRASS driver:
* simplified to GRASS GIS 7+ only (#2945)
GTM driver:
* on write, do not consider TZFlag=1 (localtime) as a timezone value (refs #2696)
* on write, take into correctly timezone value to convert to UTC (refs #2696)
LIBKML driver:
* do not advertise RandomWrite capability (unless on a update layer, when datasource is created with UPDATE_TARGETHREF creation option) (fixes QGIS 39087)
MDB driver:
* fix warning when parsing 'false' boolean value
MITAB driver:
* fix reading and writing of Transverse Mercator projections based on KKJ
* .tab: fix writing empty/null Time fields (#2612)
* fix reading and writing of non-metre linear units
* Support for font and custom symbols in mitab (#3081)
MVT driver:
* 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)
* writing: fix crashes in multi-threading mode (#2764)
NAS driver:
* add support for new GID7 updates
* also filter for wfs:member (as in GID7)
* do not try to write a .gfs file when NAS_GFS_TEMPLATE is specified
netCDF driver:
* simple geometries: fix for big-endian
OAPIF driver:
* avoid re-adding user query parameters if they are found in URLs returned by the API (#2873)
* do not list raster or coverage collections
* support opening of a collection when its URL is non-standard such as in MOAW workflows
* fix memory leak when reading schema from .xsd
ODBC driver:
* Allow mdb files to be opened with the generic ODBC driver on non-windows platforms
* Fix w.r.t fallback to alternative Access ODBC driver name
* Fix DSN string construction for Windows Access ODBC driver, template candidate preference order (#2878)
* Correctly handle datetime fields provided by the mdbtools ODBC driver
* Read MS Access databases with ACCDB and STYLE extensions (#2880)
OCI driver:
* fix server 12.2 version detection
ODS driver:
* do not create files with Zip64 extension, to avoid compatibility issue with LibreOffice Calc
* avoid potential deep call stack in formula evaluation. Fixes ossfuzz#22237
OpenFileGDB driver:
* add support for reading .spx spatial index file
* more reliable .gdbtable header reading
OSM driver:
* remove limitation to 10000 nodes per way (#849)
* Replace hard-coded tag filter with variable
* Optionally disable early tag filtering
* Don't filter out explicit attributes (#2603)
PDF driver:
* write correctly attribute object dictionary when there is no field to write, and read back correctly broken files we generated before (#2624)
PDS4 driver:
* fix potential double free if RenameFileTo() fails
PGeo driver:
* Quote DBQ value in PGEO driver template to avoid issues opening MDB paths with spaces
* Fixes to automatic ODBC driver installation (#2838)
* Read non-spatial tables (#2889)
PG driver:
* Make ogr2ogr -f PostgreSQL work when using PG:service= syntax (actually a workaround in GDALDriver::Create())
* take into potential generated columns (PostgreSQL >= 12) to avoid issuing INSERT, UPDATE or COPY statements with them
* PG (and PostgisRaster driver): set the application name in PostgreSQL connections (#2658)
* apply standard libpq parsing rules for connection parameters for our custom connection parameters (schemas, active_schemas, tables) (#2824)
PGDump driver:
* change default value of POSTGIS_VERSION layer creation option to 2.2
SEGY driver:
* avoid opening FITS files
Shapefile driver:
* do not claim to support DateTime data type
* when several candidate SRS are found with confidence >= 90%, take the one from EPSG (contributes to fixes QGIS #32255)
* SHPRestoreSHX: fix for (64 bit) big endian
S57 driver:
* apply update to DSID_EDTN field (#2498)
* 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 behavior (#2660)
SXF driver:
* fixes for big-endian
SQLite/Spatialite driver:
* add a PRELUDE_STATEMENTS open option that can be used for example to attach other databases
WFS driver:
* avoid /vsicurl_streaming/ URL to be truncated in case of big filter (but the server might reject it)
XLSX driver:
* do not create files with Zip64 extension, to avoid compatibility issue with LibreOffice Calc
* fix numeric precision issue when reading datetime that could lead to an error of 1 second (#2683)
== SWIG Language Bindings ==
All bindings:
* OGRDriver.CopyDataSource(): check that source dataset is not NULL
* validate range of resample_alg algorithm (#2591)
* expose CPLSetCurrentErrorHandlerCatchDebug() as gdal.SetCurrentErrorHandlerCatchDebug()
CSharp bindings:
* Add build support for .NET core (#1368)
* SWIG 4.0 compatibility (#2802)
* Adding typemaps C# for wrapper_GDALWarpDestDS and wrapper_GDALWarpDestName (#2621)
* Expose Dataset.GetSpatialRef() (#2620)
* Expose OSR.GetCRSInfoListFromDatabase (#1665)
* Fixed implementation of Utf8BytesToString (#2649)
Java bindings:
* update minimum source/target Java version to 7 to please JDK 11 (#2594)
* make 'install' target copy maven artifacts (gdal-X.Y.Z.jar) to /usr/share/java
Perl bindings:
Python bindings:
* Move implementation of scripts in osgeo.utils package to be reusable
* Fix Python2 install to be synchronous and report all errors (#2515)
* add a colorSelection='nearest_color_entry'/'exact_color_entry' argument to gdal.DEMProcessing()
* accept string as value for gdal.Translate() metadataOptions and creationOptions argument when providing single option (#2709)
* gdal.Info(): make options=['-json'] work properly
* remove use of deprecated PyObject_AsReadBuffer() function
* makefile.vc: remove '-modern -new_repr' on python target for SWIG 4 compatibility
* add GDALMDArray.shape attribute and GDALMDArray.ReadAsMaskedArray() method
* make Dataset.ReadRaster() and Dataset.ReadAsArray() accept floating-point coordinates (#3101)
= GDAL/OGR 3.1.0 Release Notes =
== In a nutshell... ==
* Implement RFC 75: support for multidimensional arrays in MEM, VRT, netCDF, HDF4, HDF5 and GRIB drivers. Read/write for MEM and netCDF. Read/only for others. Add gdalmdiminfo and gdalmdimtranslate utilities.
* Implement RFC76: add capability of writing vector drivers in Python
* New GDAL drivers:
- COG: write-only, for Cloud Optimized GeoTIFF
- EXR: read/write driver, relying on OpenEXR library
- ISG: read-only, for geoid models of the International Service for the Geoid
- RDB: read-only, for RIEGL Database .mpx RDB 2 files (#1538) (needs proprietary SDK)
* New OGR drivers:
- FlatGeoBuf: read-support and creation (#1742)
- MapML: read/write driver for experimental web spec
* Improved drivers:
- OAPIF driver (renamed from WFS3): updated to OGC API - Features 1.0 core spec
- GTiff: improve performance of internal overview creation
- GTiff: GeoTIFF 1.1 support
- Shapefile driver: add read/creation/update support for .shz and .shp.zip
- netCDF vector: read/write support for CF-1.8 Encoded Geometries (#1287)
- VICAR: multiple improvements and write support (#1855)
- DDS: add read support
* Other improvements:
- gdalwarp: accept output drivers with only CreateCopy() capabilities
- gdal_viewshed: new utility for viewshed algorithm
* Remove GFT driver now that the online service no longer exists (#2050)
* New Sphinx-based documentation
* Multiple security related fixes (ossfuzz)
* Continued code linting (cppcheck, CoverityScan, etc.)
* Compatibility with GDAL 3.0:
- C and C++ API: backward compatible changes
- C ABI: backward compatible changes
- C++ ABI: modified
- Functional changes: see MIGRATION_GUIDE.TXT
== GDAL/OGR 3.1.0 - General Changes ==
Build(Unix):
* use pkg-config for libxml2 detection (#2173)
* fix detection of libpq in a non-standard place (#1542)
* do not use absolute path in linking command. Helps Mac OS and cygwin builds (#2075)
* Enable Bash completions and control installation
* GDALmake.opt.in: silence datarootdir warning
* Doc: allow user full control over installation directory
* fix JVM detection for HDFS support on MacOS (#2313)
* Remove #define HOST_FILLORDER from cpl_config.h (#2345)
* Added search for proj library in lib64 directory.
* configure: strip -L/usr/lib and similar from netCDF, MySQL, GEOS and SFCGAL lib path (#2395)
* configure: remove useless -lproj from --with-spatialite dectection
Build(Windows):
* parametrize number of CPUs for parallel builds with CPU_COUNT variable (#1922)
* add HDF5_H5_IS_DLL variable to switch the scenario when HDF5 is built as a DLL (#1931)
* add POSTFIX that defaults to _d for GDAL .dll, .lib and .pdb for DEBUG builds (#1901)
* Fix issues with thread_local and C++ objects that don't work well with DLL on Windows
All:
* Support Poppler 0.82, 0.83, 0.85
== GDAL 3.1.0 - Overview of Changes ==
== Algorithms ==
* Warper: add sum resampling method (#1437)
* Average resampling (warp and overview/translate): use weighted average for border source pixels
* GDALReprojectImage(): properly take into account source/target alpha bands
* GDALCreateReprojectionTransformerEx(): do not emit error if reverse transformation fails, and fix crash when trying to use null reverse transformation
* Warper: fix GDAL 2.3 regression in a situation with source nodata value, multiple bands and nearest resampling where the logic to detect which source pixels are nodata was inverted (#1656)
* GWKAverageOrModeThread(): reject invalid source pixels for average/q1/q3/mode/min/max resampling (#2365)
* Multithreaded warper: make sure a transformer object is used by the thread which created it (#1989). This workarounds a PROJ bug also fixed per https://github.com/OSGeo/PROJ/pull/1726
* Contour: fix SegmentMerger list iterator skipping and out of bounds error (#1670)
* Contour: fix (over) precision issue when comparing pixel value to NoData on Float32 rasters (#1987)
* Contour: add sanity checks for interval based contouring, in case the dataset contains extreme values regarding the settings, which would lead to a lot of memory allocations / too large computation time
* TPS warper: enhance precision without armadillo support (#1809)
* RPC warper: fix issue when source image has a geotransform (#2460)
* GDALRasterizeGeometries(): fix potential integer overflow / memory allocation failure, depending on GDAL_CACHEMAX and raster dimensions (#2261)
* Rasterize: speed optimization for geometry collections (#2369)
* GDALContourGenerate(): propagate raster acquisition error (#2410)
== Port ==
* /vsitar/: support >100 character file names (#1559)
* /vsitar/: accept space as end of field terminator
* /vsigz/: fix seeking within .gz/.tgz files larger than 2 GB (#2315)
* /vsicurl (and derived filesystems): fix concurrency issue with multithreaded reads (#1244)
* /vsicurl/: avoid downloading one extra block when the end offset is just at a chunk boundary
* /vsicurl/: fix CPL_VSIL_CURL_ALLOWED_EXTENSIONS with query string (#1614)
* /vsicurl/: allow 'Connection timed out' CURL errors as candidate for HTTP retry
* /vsicurl/: GetFileSize(): when HEAD request does not return Content-Length header, retry with GET
* /vsis3/: for a long living file handle, refresh credentials coming from EC2/AIM (#1593)
* /vsis3/: invalidate cached non-existing file is AWS_ config options are changed in the meantime (#2294)
* /vsis3/ /vsigs/ /vsiaz/: implement Rename() first doing a copy of the original file and then deleting it
* /vsis3/ and similar: add a NUM_THREADS option to Sync() for parallelized copy
* AWS: Fix error in loading ~/.aws/config file (#2203)
* VSISync(): when copying from /vsis3/ to /vsis3/ (or /vsigs/->/vsigs/, /vsiaz/->/vsiaz/), use CopyObject() method to use server side copy
* VSISync(): make file copying from /vsis3/ actually use /vsis3_streaming/ to reduce number of GET requests
* VSISync(): add a CHUNK_SIZE option to Sync() to split large objects and get parallelization of their download and upload
* Add VSIUnlinkBatch() for batch deletion of files, and add optimized /vsis3/ implementation
* Add efficient VSIRmdirRecursive() implementation for /vsis3/
* Add VSIGetFileMetadata()/VSISetFileMetadata() and implement them to get/set HTTP headers, and AWS S3 object tagging
* /vsis3/ and other network filesystems: avoid useless network requests when we already got a directory listing (#2429)
* /vsiswift/: V3 authentication method, handling auth token expiration
* /vsimem/: make Rename() error if destination file is not in /vsimem/
* /vsizip/ writing: in ZIP64 mode, also advertise 45 as the version in the central directory (avoids a warning from 'zip' utility)
* Add CPLCanRecode function and use it in MITAB, Shape and SXF drivers to decide when to advertise UTF-8 capability
* CPLConfigOptionSetter: only reset thread-locale value, not global one
* CPLJSONObject::GetType(): return Long when the value doesn't fit on a int32
* CPLJSON: distinguish Null type from Unknown/invalid type
* CPLEscapeString(): escape double-quote for CPLES_URL
* Add a CPLCondTimedWait()
* cpl_safemaths.hpp: safe + and * for GUInt64
* Add CPLJSonStreamingWriter class
* Add cpl_error_internal.h with logic with error accumulator
* Add VSIOverwriteFile()