GDAL 3.9.1__tar.gz → 3.9.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. {gdal-3.9.1 → gdal-3.9.2}/PKG-INFO +2 -2
  2. {gdal-3.9.1 → gdal-3.9.2}/README.rst +1 -1
  3. {gdal-3.9.1 → gdal-3.9.2}/extensions/gdal_wrap.cpp +21 -18
  4. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/GDAL.egg-info/PKG-INFO +2 -2
  5. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/__init__.py +1 -1
  6. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/gdal2tiles.py +17 -11
  7. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/gdal_retile.py +40 -1
  8. {gdal-3.9.1 → gdal-3.9.2}/osgeo/gdal.py +6 -6
  9. {gdal-3.9.1 → gdal-3.9.2}/setup.py +1 -1
  10. {gdal-3.9.1 → gdal-3.9.2}/extensions/gdal_array_wrap.cpp +0 -0
  11. {gdal-3.9.1 → gdal-3.9.2}/extensions/gdalconst_wrap.c +0 -0
  12. {gdal-3.9.1 → gdal-3.9.2}/extensions/gnm_wrap.cpp +0 -0
  13. {gdal-3.9.1 → gdal-3.9.2}/extensions/ogr_wrap.cpp +0 -0
  14. {gdal-3.9.1 → gdal-3.9.2}/extensions/osr_wrap.cpp +0 -0
  15. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/GDAL.egg-info/SOURCES.txt +0 -0
  16. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/GDAL.egg-info/dependency_links.txt +0 -0
  17. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/GDAL.egg-info/entry_points.txt +0 -0
  18. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/GDAL.egg-info/not-zip-safe +0 -0
  19. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/GDAL.egg-info/requires.txt +0 -0
  20. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/GDAL.egg-info/top_level.txt +0 -0
  21. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/auxiliary/__init__.py +0 -0
  22. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/auxiliary/array_util.py +0 -0
  23. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/auxiliary/base.py +0 -0
  24. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/auxiliary/batch_creator.py +0 -0
  25. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/auxiliary/color_palette.py +0 -0
  26. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/auxiliary/color_table.py +0 -0
  27. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/auxiliary/extent_util.py +0 -0
  28. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/auxiliary/gdal_argparse.py +0 -0
  29. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/auxiliary/numpy_util.py +0 -0
  30. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/auxiliary/osr_util.py +0 -0
  31. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/auxiliary/progress.py +0 -0
  32. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/auxiliary/raster_creation.py +0 -0
  33. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/auxiliary/rectangle.py +0 -0
  34. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/auxiliary/util.py +0 -0
  35. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/gdal2xyz.py +0 -0
  36. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/gdal_calc.py +0 -0
  37. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/gdal_edit.py +0 -0
  38. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/gdal_fillnodata.py +0 -0
  39. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/gdal_merge.py +0 -0
  40. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/gdal_pansharpen.py +0 -0
  41. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/gdal_polygonize.py +0 -0
  42. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/gdal_proximity.py +0 -0
  43. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/gdal_sieve.py +0 -0
  44. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/gdalattachpct.py +0 -0
  45. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/gdalcompare.py +0 -0
  46. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/gdalmove.py +0 -0
  47. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/ogr_layer_algebra.py +0 -0
  48. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/ogrmerge.py +0 -0
  49. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/pct2rgb.py +0 -0
  50. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/rgb2pct.py +0 -0
  51. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/__init__.py +0 -0
  52. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/assemblepoly.py +0 -0
  53. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/build_jp2_from_xml.py +0 -0
  54. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/classify.py +0 -0
  55. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/crs2crs2grid.py +0 -0
  56. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/densify.py +0 -0
  57. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/dump_jp2.py +0 -0
  58. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/epsg_tr.py +0 -0
  59. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/esri2wkt.py +0 -0
  60. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/fft.py +0 -0
  61. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/fix_gpkg.py +0 -0
  62. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/gcps2ogr.py +0 -0
  63. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/gcps2vec.py +0 -0
  64. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/gcps2wld.py +0 -0
  65. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/gdal2grd.py +0 -0
  66. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/gdal_auth.py +0 -0
  67. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/gdal_cp.py +0 -0
  68. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/gdal_create_pdf.py +0 -0
  69. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/gdal_ls.py +0 -0
  70. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/gdal_lut.py +0 -0
  71. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/gdal_mkdir.py +0 -0
  72. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/gdal_remove_towgs84.py +0 -0
  73. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/gdal_rm.py +0 -0
  74. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/gdal_rmdir.py +0 -0
  75. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/gdal_vrtmerge.py +0 -0
  76. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/gdalbuildvrtofvrt.py +0 -0
  77. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/gdalchksum.py +0 -0
  78. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/gdalcopyproj.py +0 -0
  79. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/gdalfilter.py +0 -0
  80. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/gdalident.py +0 -0
  81. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/gdalimport.py +0 -0
  82. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/gdalinfo.py +0 -0
  83. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/gdallocationinfo.py +0 -0
  84. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/get_soundg.py +0 -0
  85. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/histrep.py +0 -0
  86. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/hsv_merge.py +0 -0
  87. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/jpeg_in_tiff_extract.py +0 -0
  88. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/load2odbc.py +0 -0
  89. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/loslas2ntv2.py +0 -0
  90. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/magphase.py +0 -0
  91. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/make_fuzzer_friendly_archive.py +0 -0
  92. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/mkgraticule.py +0 -0
  93. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/ogr2vrt.py +0 -0
  94. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/ogr_build_junction_table.py +0 -0
  95. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/ogr_dispatch.py +0 -0
  96. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/ogrinfo.py +0 -0
  97. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/ogrupdate.py +0 -0
  98. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/rel.py +0 -0
  99. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/tigerpoly.py +0 -0
  100. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/tile_extent_from_raster.py +0 -0
  101. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/tolatlong.py +0 -0
  102. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/val_repl.py +0 -0
  103. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/validate_cloud_optimized_geotiff.py +0 -0
  104. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/validate_geoparquet.py +0 -0
  105. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/validate_gpkg.py +0 -0
  106. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/validate_jp2.py +0 -0
  107. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/vec_tr.py +0 -0
  108. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/vec_tr_spat.py +0 -0
  109. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/osgeo_utils/samples/wcs_virtds_params.py +0 -0
  110. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/scripts/gdal2tiles.py +0 -0
  111. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/scripts/gdal2xyz.py +0 -0
  112. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/scripts/gdal_calc.py +0 -0
  113. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/scripts/gdal_edit.py +0 -0
  114. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/scripts/gdal_fillnodata.py +0 -0
  115. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/scripts/gdal_merge.py +0 -0
  116. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/scripts/gdal_pansharpen.py +0 -0
  117. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/scripts/gdal_polygonize.py +0 -0
  118. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/scripts/gdal_proximity.py +0 -0
  119. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/scripts/gdal_retile.py +0 -0
  120. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/scripts/gdal_sieve.py +0 -0
  121. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/scripts/gdalattachpct.py +0 -0
  122. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/scripts/gdalcompare.py +0 -0
  123. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/scripts/gdalmove.py +0 -0
  124. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/scripts/ogr_layer_algebra.py +0 -0
  125. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/scripts/ogrmerge.py +0 -0
  126. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/scripts/pct2rgb.py +0 -0
  127. {gdal-3.9.1 → gdal-3.9.2}/gdal-utils/scripts/rgb2pct.py +0 -0
  128. {gdal-3.9.1 → gdal-3.9.2}/osgeo/__init__.py +0 -0
  129. {gdal-3.9.1 → gdal-3.9.2}/osgeo/gdal_array.py +0 -0
  130. {gdal-3.9.1 → gdal-3.9.2}/osgeo/gdalconst.py +0 -0
  131. {gdal-3.9.1 → gdal-3.9.2}/osgeo/gdalnumeric.py +0 -0
  132. {gdal-3.9.1 → gdal-3.9.2}/osgeo/gnm.py +0 -0
  133. {gdal-3.9.1 → gdal-3.9.2}/osgeo/ogr.py +0 -0
  134. {gdal-3.9.1 → gdal-3.9.2}/osgeo/osr.py +0 -0
  135. {gdal-3.9.1 → gdal-3.9.2}/pyproject.toml +0 -0
  136. {gdal-3.9.1 → gdal-3.9.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: GDAL
3
- Version: 3.9.1
3
+ Version: 3.9.2
4
4
  Summary: GDAL: Geospatial Data Abstraction Library
5
5
  Home-page: http://www.gdal.org
6
6
  Author: Frank Warmerdam, Howard Butler, Even Rouault
@@ -44,7 +44,7 @@ reference documentation, but the https://gdal.org/api/python_bindings.html#tutor
44
44
  Dependencies
45
45
  ------------
46
46
 
47
- * libgdal (3.9.1 or greater) and header files (gdal-devel)
47
+ * libgdal (3.9.2 or greater) and header files (gdal-devel)
48
48
  * numpy (1.0.0 or greater) and header files (numpy-devel) (not explicitly
49
49
  required, but many examples and utilities will not work without it)
50
50
 
@@ -13,7 +13,7 @@ reference documentation, but the https://gdal.org/api/python_bindings.html#tutor
13
13
  Dependencies
14
14
  ------------
15
15
 
16
- * libgdal (3.9.1 or greater) and header files (gdal-devel)
16
+ * libgdal (3.9.2 or greater) and header files (gdal-devel)
17
17
  * numpy (1.0.0 or greater) and header files (numpy-devel) (not explicitly
18
18
  required, but many examples and utilities will not work without it)
19
19
 
@@ -6622,8 +6622,8 @@ SWIGINTERN CPLErr GDALMDArrayHS_Read(GDALMDArrayHS *self,int nDims1,GUIntBig *ar
6622
6622
  SWIGINTERN CPLErr GDALMDArrayHS_WriteStringArray(GDALMDArrayHS *self,int nDims1,GUIntBig *array_start_idx,int nDims2,GUIntBig *count,int nDims3,GIntBig *array_step,GDALExtendedDataTypeHS *buffer_datatype,char **options){
6623
6623
 
6624
6624
  const int nExpectedDims = (int)GDALMDArrayGetDimensionCount(self);
6625
- std::vector<size_t> count_internal(nExpectedDims);
6626
- if( nExpectedDims != 1 )
6625
+ std::vector<size_t> count_internal(nExpectedDims + 1);
6626
+ if( nExpectedDims > 1 )
6627
6627
  {
6628
6628
  CPLError(CE_Failure, CPLE_AppDefined,
6629
6629
  "Unsupported number of dimensions");
@@ -6638,23 +6638,26 @@ SWIGINTERN CPLErr GDALMDArrayHS_WriteStringArray(GDALMDArrayHS *self,int nDims1,
6638
6638
  return CE_Failure;
6639
6639
  }
6640
6640
  }
6641
- if( nDims1 != 1 )
6641
+ if( nExpectedDims == 1 )
6642
6642
  {
6643
- CPLError(CE_Failure, CPLE_AppDefined,
6644
- "Wrong number of values in array_start_idx");
6645
- return CE_Failure;
6646
- }
6647
- if( nDims2 != 1 )
6648
- {
6649
- CPLError(CE_Failure, CPLE_AppDefined,
6650
- "Wrong number of values in count");
6651
- return CE_Failure;
6652
- }
6653
- if( nDims3 != 1 )
6654
- {
6655
- CPLError(CE_Failure, CPLE_AppDefined,
6656
- "Wrong number of values in array_step");
6657
- return CE_Failure;
6643
+ if( nDims1 != 1 )
6644
+ {
6645
+ CPLError(CE_Failure, CPLE_AppDefined,
6646
+ "Wrong number of values in array_start_idx");
6647
+ return CE_Failure;
6648
+ }
6649
+ if( nDims2 != 1 )
6650
+ {
6651
+ CPLError(CE_Failure, CPLE_AppDefined,
6652
+ "Wrong number of values in count");
6653
+ return CE_Failure;
6654
+ }
6655
+ if( nDims3 != 1 )
6656
+ {
6657
+ CPLError(CE_Failure, CPLE_AppDefined,
6658
+ "Wrong number of values in array_step");
6659
+ return CE_Failure;
6660
+ }
6658
6661
  }
6659
6662
 
6660
6663
  CPLErr eErr = GDALMDArrayWrite(self,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: GDAL
3
- Version: 3.9.1
3
+ Version: 3.9.2
4
4
  Summary: GDAL: Geospatial Data Abstraction Library
5
5
  Home-page: http://www.gdal.org
6
6
  Author: Frank Warmerdam, Howard Butler, Even Rouault
@@ -44,7 +44,7 @@ reference documentation, but the https://gdal.org/api/python_bindings.html#tutor
44
44
  Dependencies
45
45
  ------------
46
46
 
47
- * libgdal (3.9.1 or greater) and header files (gdal-devel)
47
+ * libgdal (3.9.2 or greater) and header files (gdal-devel)
48
48
  * numpy (1.0.0 or greater) and header files (numpy-devel) (not explicitly
49
49
  required, but many examples and utilities will not work without it)
50
50
 
@@ -1,5 +1,5 @@
1
1
  __package_name__ = "gdal-utils"
2
- gdal_utils_version = (3, 9, 1, 0)
2
+ gdal_utils_version = (3, 9, 2, 0)
3
3
  __version__ = ".".join(str(i) for i in gdal_utils_version)
4
4
  __author__ = "Frank Warmerdam"
5
5
  __author_email__ = "warmerdam@pobox.com"
@@ -895,13 +895,22 @@ def scale_query_to_tile(dsquery, dstile, options, tilefilename=""):
895
895
  options.excluded_values or options.nodata_values_pct_threshold < 100
896
896
  ):
897
897
 
898
+ warp_options = "-r average"
899
+
900
+ assert options.nodata_values_pct_threshold is not None
901
+ warp_options += (
902
+ f" -wo NODATA_VALUES_PCT_THRESHOLD={options.nodata_values_pct_threshold}"
903
+ )
904
+
905
+ if options.excluded_values:
906
+ assert options.excluded_values_pct_threshold is not None
907
+ warp_options += f" -wo EXCLUDED_VALUES={options.excluded_values}"
908
+ warp_options += f" -wo EXCLUDED_VALUES_PCT_THRESHOLD={options.excluded_values_pct_threshold}"
909
+
898
910
  gdal.Warp(
899
911
  dstile,
900
912
  dsquery,
901
- options="-r average "
902
- + f"-wo EXCLUDED_VALUES={options.excluded_values} "
903
- + f"-wo EXCLUDED_VALUES_PCT_THRESHOLD={options.excluded_values_pct_threshold} "
904
- + f"-wo NODATA_VALUES_PCT_THRESHOLD={options.nodata_values_pct_threshold}",
913
+ options=warp_options,
905
914
  )
906
915
 
907
916
  elif options.resampling == "average":
@@ -3979,13 +3988,10 @@ function ExtDraggableObject(src, opt_drag) {
3979
3988
 
3980
3989
  // Base layers
3981
3990
  // .. OpenStreetMap
3982
- var osm = L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors', minZoom: %(minzoom)s, maxZoom: %(maxzoom)s});
3991
+ var osm = L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors', minZoom: %(minzoom)s, maxZoom: %(maxzoom)s});
3983
3992
 
3984
3993
  // .. CartoDB Positron
3985
- var cartodb = L.tileLayer('http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png', {attribution: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, &copy; <a href="http://cartodb.com/attributions">CartoDB</a>', minZoom: %(minzoom)s, maxZoom: %(maxzoom)s});
3986
-
3987
- // .. OSM Toner
3988
- var toner = L.tileLayer('http://{s}.tile.stamen.com/toner/{z}/{x}/{y}.png', {attribution: 'Map tiles by <a href="http://stamen.com">Stamen Design</a>, under <a href="http://creativecommons.org/licenses/by/3.0">CC BY 3.0</a>. Data by <a href="http://openstreetmap.org">OpenStreetMap</a>, under <a href="http://www.openstreetmap.org/copyright">ODbL</a>.', minZoom: %(minzoom)s, maxZoom: %(maxzoom)s});
3994
+ var cartodb = L.tileLayer('https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png', {attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, &copy; <a href="https://carto.com/attribution">CartoDB</a>', minZoom: %(minzoom)s, maxZoom: %(maxzoom)s});
3989
3995
 
3990
3996
  // .. White background
3991
3997
  var white = L.tileLayer("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEAAQMAAABmvDolAAAAA1BMVEX///+nxBvIAAAAH0lEQVQYGe3BAQ0AAADCIPunfg43YAAAAAAAAAAA5wIhAAAB9aK9BAAAAABJRU5ErkJggg==", {minZoom: %(minzoom)s, maxZoom: %(maxzoom)s});
@@ -4002,7 +4008,7 @@ function ExtDraggableObject(src, opt_drag) {
4002
4008
  layers: [osm]
4003
4009
  });
4004
4010
 
4005
- var basemaps = {"OpenStreetMap": osm, "CartoDB Positron": cartodb, "Stamen Toner": toner, "Without background": white}
4011
+ var basemaps = {"OpenStreetMap": osm, "CartoDB Positron": cartodb, "Without background": white}
4006
4012
  var overlaymaps = {"Layer": lyr}
4007
4013
 
4008
4014
  // Title
@@ -4018,7 +4024,7 @@ function ExtDraggableObject(src, opt_drag) {
4018
4024
  title.addTo(map);
4019
4025
 
4020
4026
  // Note
4021
- var src = 'Generated by <a href="https://gdal.org/programs/gdal2tiles.html">GDAL2Tiles</a>, Copyright &copy; 2008 <a href="http://www.klokan.cz/">Klokan Petr Pridal</a>, <a href="https://gdal.org">GDAL</a> &amp; <a href="http://www.osgeo.org/">OSGeo</a> <a href="http://code.google.com/soc/">GSoC</a>';
4027
+ var src = 'Generated by <a href="https://gdal.org/programs/gdal2tiles.html">GDAL2Tiles</a>, Copyright &copy; 2008 <a href="http://www.klokan.cz/">Klokan Petr Pridal</a>, <a href="https://gdal.org">GDAL</a> &amp; <a href="https://www.osgeo.org/">OSGeo</a> <a href="https://summerofcode.withgoogle.com/">GSoC</a>';
4022
4028
  var title = L.control({position: 'bottomleft'});
4023
4029
  title.onAdd = function(map) {
4024
4030
  this._div = L.DomUtil.create('div', 'ctl src');
@@ -337,13 +337,52 @@ def getTileIndexFromFiles(g):
337
337
  ogrTileIndexDS = createTileIndex(
338
338
  g.Verbose, "TileIndex", g.TileIndexFieldName, None, g.TileIndexDriverTyp
339
339
  )
340
+ firstTile = True
341
+ globalSRS = None
340
342
  for inputTile in g.Names:
341
343
 
342
344
  fhInputTile = gdal.Open(inputTile)
343
345
  if fhInputTile is None:
344
346
  return None
345
347
 
346
- dec = AffineTransformDecorator(fhInputTile.GetGeoTransform())
348
+ # Check the geotransform has no rotational terms.
349
+ gt = fhInputTile.GetGeoTransform()
350
+ if gt[2] != 0 or gt[4] != 0:
351
+ print(
352
+ "File %s has a geotransform matrix with rotational terms, which is not supported. You may need to use gdalwarp before."
353
+ % inputTile,
354
+ file=sys.stderr,
355
+ )
356
+ return None
357
+
358
+ # Check SRS consistency among tiles
359
+ srs = fhInputTile.GetSpatialRef()
360
+ if firstTile:
361
+ globalSRS = srs
362
+ else:
363
+ if globalSRS is not None and srs is None:
364
+ print(
365
+ "File %s has no SRS whether other tiles have one." % inputTile,
366
+ file=sys.stderr,
367
+ )
368
+ return None
369
+ elif globalSRS is None and srs is not None:
370
+ print(
371
+ "File %s has a SRS whether other tiles do not." % inputTile,
372
+ file=sys.stderr,
373
+ )
374
+ return None
375
+ elif (
376
+ globalSRS is not None and srs is not None and not globalSRS.IsSame(srs)
377
+ ):
378
+ print(
379
+ "File %s has a SRS different from other tiles." % inputTile,
380
+ file=sys.stderr,
381
+ )
382
+ return None
383
+
384
+ firstTile = False
385
+ dec = AffineTransformDecorator(gt)
347
386
  points = dec.pointsFor(fhInputTile.RasterXSize, fhInputTile.RasterYSize)
348
387
 
349
388
  addFeature(
@@ -2333,15 +2333,15 @@ def Footprint(destNameOrDestDS, srcDS, **kwargs):
2333
2333
 
2334
2334
  1. Special mode to get deserialized GeoJSON (in EPSG:4326 if dstSRS not specified):
2335
2335
 
2336
- >>> deserialized_geojson = gdal.FootPrint(None, src_ds, format="GeoJSON")
2336
+ >>> deserialized_geojson = gdal.Footprint(None, src_ds, format="GeoJSON")
2337
2337
 
2338
2338
  2. Special mode to get WKT:
2339
2339
 
2340
- >>> wkt = gdal.FootPrint(None, src_ds, format="WKT")
2340
+ >>> wkt = gdal.Footprint(None, src_ds, format="WKT")
2341
2341
 
2342
2342
  3. Get result in a GeoPackage
2343
2343
 
2344
- >>> gdal.FootPrintf("out.gpkg", src_ds, format="GPKG")
2344
+ >>> gdal.Footprint("out.gpkg", src_ds, format="GPKG")
2345
2345
 
2346
2346
  """
2347
2347
 
@@ -6271,13 +6271,13 @@ class MDArray(object):
6271
6271
  if not buffer_datatype:
6272
6272
  buffer_datatype = self.GetDataType()
6273
6273
 
6274
- is_1d_string = self.GetDataType().GetClass() == GEDTC_STRING and buffer_datatype.GetClass() == GEDTC_STRING and dimCount == 1
6274
+ is_0d_or_1d_string = self.GetDataType().GetClass() == GEDTC_STRING and buffer_datatype.GetClass() == GEDTC_STRING and dimCount <= 1
6275
6275
 
6276
6276
  if not array_start_idx:
6277
6277
  array_start_idx = [0] * dimCount
6278
6278
 
6279
6279
  if not count:
6280
- if is_1d_string:
6280
+ if is_0d_or_1d_string:
6281
6281
  assert type(buffer) == type([])
6282
6282
  count = [ len(buffer) ]
6283
6283
  else:
@@ -6296,7 +6296,7 @@ class MDArray(object):
6296
6296
  stride *= cnt
6297
6297
  buffer_stride.reverse()
6298
6298
 
6299
- if is_1d_string:
6299
+ if is_0d_or_1d_string:
6300
6300
  return _gdal.MDArray_WriteStringArray(self, array_start_idx, count, array_step, buffer_datatype, buffer)
6301
6301
 
6302
6302
  return _gdal.MDArray_Write(self, array_start_idx, count, array_step, buffer_stride, buffer_datatype, buffer)
@@ -17,7 +17,7 @@ from setuptools import setup
17
17
  from setuptools import find_packages
18
18
  from setuptools import Extension
19
19
 
20
- version = '3.9.1'
20
+ version = '3.9.2'
21
21
 
22
22
  # If CXX is defined in the environment, it will be used to link the .so
23
23
  # but setuptools will be confused if it is made of several words like 'ccache g++'
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes