@cpp.js/package-gdal 1.0.0-beta.20

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 (1072) hide show
  1. package/LICENSE +467 -0
  2. package/README.md +47 -0
  3. package/cppjs-package-gdal.podspec +15 -0
  4. package/cppjs.build.js +53 -0
  5. package/cppjs.config.js +88 -0
  6. package/dist/prebuilt/Android-arm64-v8a/include/cpl_atomic_ops.h +106 -0
  7. package/dist/prebuilt/Android-arm64-v8a/include/cpl_auto_close.h +89 -0
  8. package/dist/prebuilt/Android-arm64-v8a/include/cpl_compressor.h +128 -0
  9. package/dist/prebuilt/Android-arm64-v8a/include/cpl_config.h +215 -0
  10. package/dist/prebuilt/Android-arm64-v8a/include/cpl_config_extras.h +34 -0
  11. package/dist/prebuilt/Android-arm64-v8a/include/cpl_conv.h +433 -0
  12. package/dist/prebuilt/Android-arm64-v8a/include/cpl_csv.h +87 -0
  13. package/dist/prebuilt/Android-arm64-v8a/include/cpl_error.h +348 -0
  14. package/dist/prebuilt/Android-arm64-v8a/include/cpl_hash_set.h +99 -0
  15. package/dist/prebuilt/Android-arm64-v8a/include/cpl_http.h +265 -0
  16. package/dist/prebuilt/Android-arm64-v8a/include/cpl_json.h +317 -0
  17. package/dist/prebuilt/Android-arm64-v8a/include/cpl_list.h +75 -0
  18. package/dist/prebuilt/Android-arm64-v8a/include/cpl_minixml.h +227 -0
  19. package/dist/prebuilt/Android-arm64-v8a/include/cpl_multiproc.h +257 -0
  20. package/dist/prebuilt/Android-arm64-v8a/include/cpl_port.h +1186 -0
  21. package/dist/prebuilt/Android-arm64-v8a/include/cpl_progress.h +65 -0
  22. package/dist/prebuilt/Android-arm64-v8a/include/cpl_quad_tree.h +118 -0
  23. package/dist/prebuilt/Android-arm64-v8a/include/cpl_spawn.h +76 -0
  24. package/dist/prebuilt/Android-arm64-v8a/include/cpl_string.h +876 -0
  25. package/dist/prebuilt/Android-arm64-v8a/include/cpl_time.h +45 -0
  26. package/dist/prebuilt/Android-arm64-v8a/include/cpl_virtualmem.h +381 -0
  27. package/dist/prebuilt/Android-arm64-v8a/include/cpl_vsi.h +798 -0
  28. package/dist/prebuilt/Android-arm64-v8a/include/cpl_vsi_error.h +69 -0
  29. package/dist/prebuilt/Android-arm64-v8a/include/cpl_vsi_virtual.h +547 -0
  30. package/dist/prebuilt/Android-arm64-v8a/include/cplkeywordparser.h +77 -0
  31. package/dist/prebuilt/Android-arm64-v8a/include/gdal.h +2550 -0
  32. package/dist/prebuilt/Android-arm64-v8a/include/gdal_alg.h +730 -0
  33. package/dist/prebuilt/Android-arm64-v8a/include/gdal_alg_priv.h +399 -0
  34. package/dist/prebuilt/Android-arm64-v8a/include/gdal_csv.h +41 -0
  35. package/dist/prebuilt/Android-arm64-v8a/include/gdal_frmts.h +249 -0
  36. package/dist/prebuilt/Android-arm64-v8a/include/gdal_mdreader.h +256 -0
  37. package/dist/prebuilt/Android-arm64-v8a/include/gdal_pam.h +473 -0
  38. package/dist/prebuilt/Android-arm64-v8a/include/gdal_priv.h +4389 -0
  39. package/dist/prebuilt/Android-arm64-v8a/include/gdal_proxy.h +457 -0
  40. package/dist/prebuilt/Android-arm64-v8a/include/gdal_rat.h +406 -0
  41. package/dist/prebuilt/Android-arm64-v8a/include/gdal_simplesurf.h +595 -0
  42. package/dist/prebuilt/Android-arm64-v8a/include/gdal_utils.h +329 -0
  43. package/dist/prebuilt/Android-arm64-v8a/include/gdal_version.h +33 -0
  44. package/dist/prebuilt/Android-arm64-v8a/include/gdal_vrt.h +105 -0
  45. package/dist/prebuilt/Android-arm64-v8a/include/gdalcachedpixelaccessor.h +455 -0
  46. package/dist/prebuilt/Android-arm64-v8a/include/gdalgeorefpamdataset.h +89 -0
  47. package/dist/prebuilt/Android-arm64-v8a/include/gdalgrid.h +118 -0
  48. package/dist/prebuilt/Android-arm64-v8a/include/gdalgrid_priv.h +83 -0
  49. package/dist/prebuilt/Android-arm64-v8a/include/gdaljp2abstractdataset.h +77 -0
  50. package/dist/prebuilt/Android-arm64-v8a/include/gdaljp2metadata.h +253 -0
  51. package/dist/prebuilt/Android-arm64-v8a/include/gdalpansharpen.h +274 -0
  52. package/dist/prebuilt/Android-arm64-v8a/include/gdalsubdatasetinfo.h +120 -0
  53. package/dist/prebuilt/Android-arm64-v8a/include/gdalwarper.h +635 -0
  54. package/dist/prebuilt/Android-arm64-v8a/include/gnm.h +750 -0
  55. package/dist/prebuilt/Android-arm64-v8a/include/gnm_api.h +101 -0
  56. package/dist/prebuilt/Android-arm64-v8a/include/gnmgraph.h +258 -0
  57. package/dist/prebuilt/Android-arm64-v8a/include/memdataset.h +187 -0
  58. package/dist/prebuilt/Android-arm64-v8a/include/ogr_api.h +1036 -0
  59. package/dist/prebuilt/Android-arm64-v8a/include/ogr_core.h +1338 -0
  60. package/dist/prebuilt/Android-arm64-v8a/include/ogr_feature.h +1997 -0
  61. package/dist/prebuilt/Android-arm64-v8a/include/ogr_featurestyle.h +874 -0
  62. package/dist/prebuilt/Android-arm64-v8a/include/ogr_geocoding.h +62 -0
  63. package/dist/prebuilt/Android-arm64-v8a/include/ogr_geomcoordinateprecision.h +95 -0
  64. package/dist/prebuilt/Android-arm64-v8a/include/ogr_geometry.h +4282 -0
  65. package/dist/prebuilt/Android-arm64-v8a/include/ogr_p.h +341 -0
  66. package/dist/prebuilt/Android-arm64-v8a/include/ogr_recordbatch.h +120 -0
  67. package/dist/prebuilt/Android-arm64-v8a/include/ogr_spatialref.h +1021 -0
  68. package/dist/prebuilt/Android-arm64-v8a/include/ogr_srs_api.h +1102 -0
  69. package/dist/prebuilt/Android-arm64-v8a/include/ogr_swq.h +493 -0
  70. package/dist/prebuilt/Android-arm64-v8a/include/ogrsf_frmts.h +749 -0
  71. package/dist/prebuilt/Android-arm64-v8a/include/rawdataset.h +271 -0
  72. package/dist/prebuilt/Android-arm64-v8a/include/vrtdataset.h +2298 -0
  73. package/dist/prebuilt/Android-arm64-v8a/lib/cmake/gdal/GDAL-targets-release.cmake +19 -0
  74. package/dist/prebuilt/Android-arm64-v8a/lib/cmake/gdal/GDAL-targets.cmake +106 -0
  75. package/dist/prebuilt/Android-arm64-v8a/lib/cmake/gdal/GDALConfig.cmake +21 -0
  76. package/dist/prebuilt/Android-arm64-v8a/lib/cmake/gdal/GDALConfigVersion.cmake +85 -0
  77. package/dist/prebuilt/Android-arm64-v8a/lib/gdalplugins/drivers.ini +287 -0
  78. package/dist/prebuilt/Android-arm64-v8a/lib/libgdal.so +0 -0
  79. package/dist/prebuilt/Android-arm64-v8a/lib/pkgconfig/gdal.pc +17 -0
  80. package/dist/prebuilt/Android-arm64-v8a/share/gdal/GDALLogoBW.svg +138 -0
  81. package/dist/prebuilt/Android-arm64-v8a/share/gdal/GDALLogoColor.svg +126 -0
  82. package/dist/prebuilt/Android-arm64-v8a/share/gdal/GDALLogoGS.svg +126 -0
  83. package/dist/prebuilt/Android-arm64-v8a/share/gdal/LICENSE.TXT +467 -0
  84. package/dist/prebuilt/Android-arm64-v8a/share/gdal/MM_m_idofic.csv +321 -0
  85. package/dist/prebuilt/Android-arm64-v8a/share/gdal/cubewerx_extra.wkt +48 -0
  86. package/dist/prebuilt/Android-arm64-v8a/share/gdal/default.rsc +0 -0
  87. package/dist/prebuilt/Android-arm64-v8a/share/gdal/ecw_cs.wkt +1453 -0
  88. package/dist/prebuilt/Android-arm64-v8a/share/gdal/epsg.wkt +1 -0
  89. package/dist/prebuilt/Android-arm64-v8a/share/gdal/esri_StatePlane_extra.wkt +631 -0
  90. package/dist/prebuilt/Android-arm64-v8a/share/gdal/gdalicon.png +0 -0
  91. package/dist/prebuilt/Android-arm64-v8a/share/gdal/gdalinfo_output.schema.json +346 -0
  92. package/dist/prebuilt/Android-arm64-v8a/share/gdal/gdalmdiminfo_output.schema.json +321 -0
  93. package/dist/prebuilt/Android-arm64-v8a/share/gdal/gdaltileindex.xsd +269 -0
  94. package/dist/prebuilt/Android-arm64-v8a/share/gdal/gdalvrt.xsd +880 -0
  95. package/dist/prebuilt/Android-arm64-v8a/share/gdal/gfs.xsd +246 -0
  96. package/dist/prebuilt/Android-arm64-v8a/share/gdal/gml_registry.xml +117 -0
  97. package/dist/prebuilt/Android-arm64-v8a/share/gdal/gml_registry.xsd +66 -0
  98. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_center.csv +251 -0
  99. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_process.csv +102 -0
  100. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_subcenter.csv +63 -0
  101. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_0_0.csv +261 -0
  102. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_0_1.csv +261 -0
  103. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_0_13.csv +261 -0
  104. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_0_14.csv +261 -0
  105. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_0_15.csv +261 -0
  106. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_0_16.csv +261 -0
  107. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_0_17.csv +11 -0
  108. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_0_18.csv +261 -0
  109. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_0_19.csv +261 -0
  110. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_0_190.csv +261 -0
  111. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_0_191.csv +261 -0
  112. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_0_2.csv +261 -0
  113. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_0_20.csv +261 -0
  114. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_0_21.csv +261 -0
  115. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_0_3.csv +261 -0
  116. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_0_4.csv +261 -0
  117. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_0_5.csv +261 -0
  118. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_0_6.csv +261 -0
  119. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_0_7.csv +261 -0
  120. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_10_0.csv +261 -0
  121. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_10_1.csv +261 -0
  122. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_10_191.csv +261 -0
  123. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_10_2.csv +261 -0
  124. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_10_3.csv +261 -0
  125. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_10_4.csv +261 -0
  126. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_1_0.csv +261 -0
  127. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_1_1.csv +261 -0
  128. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_1_2.csv +261 -0
  129. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_20_0.csv +261 -0
  130. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_20_1.csv +261 -0
  131. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_20_2.csv +261 -0
  132. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_2_0.csv +261 -0
  133. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_2_3.csv +261 -0
  134. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_2_4.csv +261 -0
  135. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_2_5.csv +261 -0
  136. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_2_6.csv +261 -0
  137. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_3_0.csv +261 -0
  138. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_3_1.csv +261 -0
  139. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_3_2.csv +28 -0
  140. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_3_3.csv +8 -0
  141. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_3_4.csv +14 -0
  142. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_3_5.csv +11 -0
  143. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_3_6.csv +11 -0
  144. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_4_0.csv +261 -0
  145. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_4_1.csv +261 -0
  146. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_4_10.csv +261 -0
  147. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_4_2.csv +261 -0
  148. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_4_3.csv +261 -0
  149. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_4_4.csv +261 -0
  150. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_4_5.csv +261 -0
  151. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_4_6.csv +261 -0
  152. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_4_7.csv +261 -0
  153. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_4_8.csv +261 -0
  154. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_4_9.csv +261 -0
  155. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_local_Canada.csv +5 -0
  156. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_local_HPC.csv +2 -0
  157. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_local_MRMS.csv +175 -0
  158. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_local_NCEP.csv +401 -0
  159. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_local_NDFD.csv +38 -0
  160. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_2_local_index.csv +7 -0
  161. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_4_5.csv +261 -0
  162. package/dist/prebuilt/Android-arm64-v8a/share/gdal/grib2_table_versions.csv +3 -0
  163. package/dist/prebuilt/Android-arm64-v8a/share/gdal/gt_datum.csv +229 -0
  164. package/dist/prebuilt/Android-arm64-v8a/share/gdal/gt_ellips.csv +24 -0
  165. package/dist/prebuilt/Android-arm64-v8a/share/gdal/header.dxf +1124 -0
  166. package/dist/prebuilt/Android-arm64-v8a/share/gdal/inspire_cp_BasicPropertyUnit.gfs +57 -0
  167. package/dist/prebuilt/Android-arm64-v8a/share/gdal/inspire_cp_CadastralBoundary.gfs +60 -0
  168. package/dist/prebuilt/Android-arm64-v8a/share/gdal/inspire_cp_CadastralParcel.gfs +81 -0
  169. package/dist/prebuilt/Android-arm64-v8a/share/gdal/inspire_cp_CadastralZoning.gfs +161 -0
  170. package/dist/prebuilt/Android-arm64-v8a/share/gdal/jpfgdgml_AdmArea.gfs +59 -0
  171. package/dist/prebuilt/Android-arm64-v8a/share/gdal/jpfgdgml_AdmBdry.gfs +49 -0
  172. package/dist/prebuilt/Android-arm64-v8a/share/gdal/jpfgdgml_AdmPt.gfs +59 -0
  173. package/dist/prebuilt/Android-arm64-v8a/share/gdal/jpfgdgml_BldA.gfs +54 -0
  174. package/dist/prebuilt/Android-arm64-v8a/share/gdal/jpfgdgml_BldL.gfs +54 -0
  175. package/dist/prebuilt/Android-arm64-v8a/share/gdal/jpfgdgml_Cntr.gfs +54 -0
  176. package/dist/prebuilt/Android-arm64-v8a/share/gdal/jpfgdgml_CommBdry.gfs +49 -0
  177. package/dist/prebuilt/Android-arm64-v8a/share/gdal/jpfgdgml_CommPt.gfs +59 -0
  178. package/dist/prebuilt/Android-arm64-v8a/share/gdal/jpfgdgml_Cstline.gfs +54 -0
  179. package/dist/prebuilt/Android-arm64-v8a/share/gdal/jpfgdgml_ElevPt.gfs +54 -0
  180. package/dist/prebuilt/Android-arm64-v8a/share/gdal/jpfgdgml_GCP.gfs +94 -0
  181. package/dist/prebuilt/Android-arm64-v8a/share/gdal/jpfgdgml_LeveeEdge.gfs +49 -0
  182. package/dist/prebuilt/Android-arm64-v8a/share/gdal/jpfgdgml_RailCL.gfs +54 -0
  183. package/dist/prebuilt/Android-arm64-v8a/share/gdal/jpfgdgml_RdASL.gfs +44 -0
  184. package/dist/prebuilt/Android-arm64-v8a/share/gdal/jpfgdgml_RdArea.gfs +54 -0
  185. package/dist/prebuilt/Android-arm64-v8a/share/gdal/jpfgdgml_RdCompt.gfs +59 -0
  186. package/dist/prebuilt/Android-arm64-v8a/share/gdal/jpfgdgml_RdEdg.gfs +59 -0
  187. package/dist/prebuilt/Android-arm64-v8a/share/gdal/jpfgdgml_RdMgtBdry.gfs +49 -0
  188. package/dist/prebuilt/Android-arm64-v8a/share/gdal/jpfgdgml_RdSgmtA.gfs +59 -0
  189. package/dist/prebuilt/Android-arm64-v8a/share/gdal/jpfgdgml_RvrMgtBdry.gfs +49 -0
  190. package/dist/prebuilt/Android-arm64-v8a/share/gdal/jpfgdgml_SBAPt.gfs +49 -0
  191. package/dist/prebuilt/Android-arm64-v8a/share/gdal/jpfgdgml_SBArea.gfs +54 -0
  192. package/dist/prebuilt/Android-arm64-v8a/share/gdal/jpfgdgml_SBBdry.gfs +44 -0
  193. package/dist/prebuilt/Android-arm64-v8a/share/gdal/jpfgdgml_WA.gfs +54 -0
  194. package/dist/prebuilt/Android-arm64-v8a/share/gdal/jpfgdgml_WL.gfs +54 -0
  195. package/dist/prebuilt/Android-arm64-v8a/share/gdal/jpfgdgml_WStrA.gfs +54 -0
  196. package/dist/prebuilt/Android-arm64-v8a/share/gdal/jpfgdgml_WStrL.gfs +54 -0
  197. package/dist/prebuilt/Android-arm64-v8a/share/gdal/nitf_spec.xml +3306 -0
  198. package/dist/prebuilt/Android-arm64-v8a/share/gdal/nitf_spec.xsd +189 -0
  199. package/dist/prebuilt/Android-arm64-v8a/share/gdal/ogrinfo_output.schema.json +528 -0
  200. package/dist/prebuilt/Android-arm64-v8a/share/gdal/ogrvrt.xsd +546 -0
  201. package/dist/prebuilt/Android-arm64-v8a/share/gdal/osmconf.ini +132 -0
  202. package/dist/prebuilt/Android-arm64-v8a/share/gdal/ozi_datum.csv +131 -0
  203. package/dist/prebuilt/Android-arm64-v8a/share/gdal/ozi_ellips.csv +35 -0
  204. package/dist/prebuilt/Android-arm64-v8a/share/gdal/pci_datum.txt +530 -0
  205. package/dist/prebuilt/Android-arm64-v8a/share/gdal/pci_ellips.txt +129 -0
  206. package/dist/prebuilt/Android-arm64-v8a/share/gdal/pdfcomposition.xsd +721 -0
  207. package/dist/prebuilt/Android-arm64-v8a/share/gdal/ruian_vf_ob_v1.gfs +1455 -0
  208. package/dist/prebuilt/Android-arm64-v8a/share/gdal/ruian_vf_st_uvoh_v1.gfs +86 -0
  209. package/dist/prebuilt/Android-arm64-v8a/share/gdal/ruian_vf_st_v1.gfs +1489 -0
  210. package/dist/prebuilt/Android-arm64-v8a/share/gdal/ruian_vf_v1.gfs +2126 -0
  211. package/dist/prebuilt/Android-arm64-v8a/share/gdal/s57agencies.csv +249 -0
  212. package/dist/prebuilt/Android-arm64-v8a/share/gdal/s57attributes.csv +484 -0
  213. package/dist/prebuilt/Android-arm64-v8a/share/gdal/s57expectedinput.csv +1008 -0
  214. package/dist/prebuilt/Android-arm64-v8a/share/gdal/s57objectclasses.csv +287 -0
  215. package/dist/prebuilt/Android-arm64-v8a/share/gdal/seed_2d.dgn +0 -0
  216. package/dist/prebuilt/Android-arm64-v8a/share/gdal/seed_3d.dgn +0 -0
  217. package/dist/prebuilt/Android-arm64-v8a/share/gdal/stateplane.csv +259 -0
  218. package/dist/prebuilt/Android-arm64-v8a/share/gdal/tms_LINZAntarticaMapTileGrid.json +190 -0
  219. package/dist/prebuilt/Android-arm64-v8a/share/gdal/tms_MapML_APSTILE.json +268 -0
  220. package/dist/prebuilt/Android-arm64-v8a/share/gdal/tms_MapML_CBMTILE.json +346 -0
  221. package/dist/prebuilt/Android-arm64-v8a/share/gdal/tms_NZTM2000.json +243 -0
  222. package/dist/prebuilt/Android-arm64-v8a/share/gdal/trailer.dxf +434 -0
  223. package/dist/prebuilt/Android-arm64-v8a/share/gdal/vdv452.xml +367 -0
  224. package/dist/prebuilt/Android-arm64-v8a/share/gdal/vdv452.xsd +63 -0
  225. package/dist/prebuilt/CMakeLists.txt +44 -0
  226. package/dist/prebuilt/Emscripten-x86_64/include/cpl_atomic_ops.h +106 -0
  227. package/dist/prebuilt/Emscripten-x86_64/include/cpl_auto_close.h +89 -0
  228. package/dist/prebuilt/Emscripten-x86_64/include/cpl_compressor.h +128 -0
  229. package/dist/prebuilt/Emscripten-x86_64/include/cpl_config.h +215 -0
  230. package/dist/prebuilt/Emscripten-x86_64/include/cpl_config_extras.h +34 -0
  231. package/dist/prebuilt/Emscripten-x86_64/include/cpl_conv.h +433 -0
  232. package/dist/prebuilt/Emscripten-x86_64/include/cpl_csv.h +87 -0
  233. package/dist/prebuilt/Emscripten-x86_64/include/cpl_error.h +348 -0
  234. package/dist/prebuilt/Emscripten-x86_64/include/cpl_hash_set.h +99 -0
  235. package/dist/prebuilt/Emscripten-x86_64/include/cpl_http.h +265 -0
  236. package/dist/prebuilt/Emscripten-x86_64/include/cpl_json.h +317 -0
  237. package/dist/prebuilt/Emscripten-x86_64/include/cpl_list.h +75 -0
  238. package/dist/prebuilt/Emscripten-x86_64/include/cpl_minixml.h +227 -0
  239. package/dist/prebuilt/Emscripten-x86_64/include/cpl_multiproc.h +257 -0
  240. package/dist/prebuilt/Emscripten-x86_64/include/cpl_port.h +1186 -0
  241. package/dist/prebuilt/Emscripten-x86_64/include/cpl_progress.h +65 -0
  242. package/dist/prebuilt/Emscripten-x86_64/include/cpl_quad_tree.h +118 -0
  243. package/dist/prebuilt/Emscripten-x86_64/include/cpl_spawn.h +76 -0
  244. package/dist/prebuilt/Emscripten-x86_64/include/cpl_string.h +876 -0
  245. package/dist/prebuilt/Emscripten-x86_64/include/cpl_time.h +45 -0
  246. package/dist/prebuilt/Emscripten-x86_64/include/cpl_virtualmem.h +381 -0
  247. package/dist/prebuilt/Emscripten-x86_64/include/cpl_vsi.h +798 -0
  248. package/dist/prebuilt/Emscripten-x86_64/include/cpl_vsi_error.h +69 -0
  249. package/dist/prebuilt/Emscripten-x86_64/include/cpl_vsi_virtual.h +547 -0
  250. package/dist/prebuilt/Emscripten-x86_64/include/cplkeywordparser.h +77 -0
  251. package/dist/prebuilt/Emscripten-x86_64/include/gdal.h +2550 -0
  252. package/dist/prebuilt/Emscripten-x86_64/include/gdal_alg.h +730 -0
  253. package/dist/prebuilt/Emscripten-x86_64/include/gdal_alg_priv.h +399 -0
  254. package/dist/prebuilt/Emscripten-x86_64/include/gdal_csv.h +41 -0
  255. package/dist/prebuilt/Emscripten-x86_64/include/gdal_frmts.h +249 -0
  256. package/dist/prebuilt/Emscripten-x86_64/include/gdal_mdreader.h +256 -0
  257. package/dist/prebuilt/Emscripten-x86_64/include/gdal_pam.h +473 -0
  258. package/dist/prebuilt/Emscripten-x86_64/include/gdal_priv.h +4389 -0
  259. package/dist/prebuilt/Emscripten-x86_64/include/gdal_proxy.h +457 -0
  260. package/dist/prebuilt/Emscripten-x86_64/include/gdal_rat.h +406 -0
  261. package/dist/prebuilt/Emscripten-x86_64/include/gdal_simplesurf.h +595 -0
  262. package/dist/prebuilt/Emscripten-x86_64/include/gdal_utils.h +329 -0
  263. package/dist/prebuilt/Emscripten-x86_64/include/gdal_version.h +33 -0
  264. package/dist/prebuilt/Emscripten-x86_64/include/gdal_vrt.h +105 -0
  265. package/dist/prebuilt/Emscripten-x86_64/include/gdalcachedpixelaccessor.h +455 -0
  266. package/dist/prebuilt/Emscripten-x86_64/include/gdalgeorefpamdataset.h +89 -0
  267. package/dist/prebuilt/Emscripten-x86_64/include/gdalgrid.h +118 -0
  268. package/dist/prebuilt/Emscripten-x86_64/include/gdalgrid_priv.h +83 -0
  269. package/dist/prebuilt/Emscripten-x86_64/include/gdaljp2abstractdataset.h +77 -0
  270. package/dist/prebuilt/Emscripten-x86_64/include/gdaljp2metadata.h +253 -0
  271. package/dist/prebuilt/Emscripten-x86_64/include/gdalpansharpen.h +274 -0
  272. package/dist/prebuilt/Emscripten-x86_64/include/gdalsubdatasetinfo.h +120 -0
  273. package/dist/prebuilt/Emscripten-x86_64/include/gdalwarper.h +635 -0
  274. package/dist/prebuilt/Emscripten-x86_64/include/gnm.h +750 -0
  275. package/dist/prebuilt/Emscripten-x86_64/include/gnm_api.h +101 -0
  276. package/dist/prebuilt/Emscripten-x86_64/include/gnmgraph.h +258 -0
  277. package/dist/prebuilt/Emscripten-x86_64/include/memdataset.h +187 -0
  278. package/dist/prebuilt/Emscripten-x86_64/include/ogr_api.h +1036 -0
  279. package/dist/prebuilt/Emscripten-x86_64/include/ogr_core.h +1338 -0
  280. package/dist/prebuilt/Emscripten-x86_64/include/ogr_feature.h +1997 -0
  281. package/dist/prebuilt/Emscripten-x86_64/include/ogr_featurestyle.h +874 -0
  282. package/dist/prebuilt/Emscripten-x86_64/include/ogr_geocoding.h +62 -0
  283. package/dist/prebuilt/Emscripten-x86_64/include/ogr_geomcoordinateprecision.h +95 -0
  284. package/dist/prebuilt/Emscripten-x86_64/include/ogr_geometry.h +4282 -0
  285. package/dist/prebuilt/Emscripten-x86_64/include/ogr_p.h +341 -0
  286. package/dist/prebuilt/Emscripten-x86_64/include/ogr_recordbatch.h +120 -0
  287. package/dist/prebuilt/Emscripten-x86_64/include/ogr_spatialref.h +1021 -0
  288. package/dist/prebuilt/Emscripten-x86_64/include/ogr_srs_api.h +1102 -0
  289. package/dist/prebuilt/Emscripten-x86_64/include/ogr_swq.h +493 -0
  290. package/dist/prebuilt/Emscripten-x86_64/include/ogrsf_frmts.h +749 -0
  291. package/dist/prebuilt/Emscripten-x86_64/include/rawdataset.h +271 -0
  292. package/dist/prebuilt/Emscripten-x86_64/include/vrtdataset.h +2298 -0
  293. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/3.20/FindLibLZMA.cmake +126 -0
  294. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/3.20/FindPostgreSQL.cmake +312 -0
  295. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/DefineFindPackage2.cmake +164 -0
  296. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/GDAL-targets-release.cmake +19 -0
  297. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/GDAL-targets.cmake +107 -0
  298. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/GDALConfig.cmake +31 -0
  299. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/GDALConfigVersion.cmake +85 -0
  300. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/GdalFindModulePath.cmake +13 -0
  301. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindBRUNSLI.cmake +74 -0
  302. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindBlosc.cmake +74 -0
  303. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindCURL.cmake +235 -0
  304. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindCryptoPP.cmake +91 -0
  305. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindDB2.cmake +103 -0
  306. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindDeflate.cmake +111 -0
  307. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindECW.cmake +168 -0
  308. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindEXPAT.cmake +156 -0
  309. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindFYBA.cmake +38 -0
  310. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindFileGDB.cmake +93 -0
  311. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindFreeXL.cmake +66 -0
  312. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindGEOS.cmake +49 -0
  313. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindGIF.cmake +96 -0
  314. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindGeoTIFF.cmake +104 -0
  315. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindHDF4.cmake +131 -0
  316. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindHDFS.cmake +54 -0
  317. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindIDB.cmake +45 -0
  318. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindIconv.cmake +143 -0
  319. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindJSONC.cmake +47 -0
  320. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindKDU.cmake +105 -0
  321. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindLERC.cmake +46 -0
  322. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindLURATECH.cmake +35 -0
  323. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindLZ4.cmake +130 -0
  324. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindLibKML.cmake +131 -0
  325. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindMONGOCXX.cmake +56 -0
  326. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindMRSID.cmake +66 -0
  327. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindMSSQL_NCLI.cmake +86 -0
  328. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindMSSQL_ODBC.cmake +113 -0
  329. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindMySQL.cmake +83 -0
  330. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindNetCDF.cmake +209 -0
  331. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindODBC.cmake +258 -0
  332. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindODBCCPP.cmake +72 -0
  333. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindOGDI.cmake +63 -0
  334. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindOpenCAD.cmake +96 -0
  335. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindOpenEXR.cmake +125 -0
  336. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindOpenJPEG.cmake +124 -0
  337. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindOracle.cmake +226 -0
  338. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindPCRE.cmake +28 -0
  339. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindPCRE2.cmake +27 -0
  340. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindPROJ.cmake +91 -0
  341. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindPodofo.cmake +93 -0
  342. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindPoppler.cmake +182 -0
  343. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindQHULL.cmake +43 -0
  344. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindRASTERLITE2.cmake +85 -0
  345. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindSFCGAL.cmake +87 -0
  346. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindSPATIALITE.cmake +73 -0
  347. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindSQLite3.cmake +190 -0
  348. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindShapelib.cmake +69 -0
  349. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindSpatialindex.cmake +18 -0
  350. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindTEIGHA.cmake +242 -0
  351. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindWebP.cmake +38 -0
  352. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/packages/FindZSTD.cmake +95 -0
  353. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/thirdparty/DotnetImports.props.in +7 -0
  354. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/thirdparty/FindCSharp.cmake +72 -0
  355. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/thirdparty/FindDotnet.cmake +499 -0
  356. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/thirdparty/FindInt128.cmake +65 -0
  357. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/thirdparty/FindMono.cmake +162 -0
  358. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/thirdparty/GetGitHeadDate.cmake +33 -0
  359. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/thirdparty/GetGitRevisionDescription.cmake +181 -0
  360. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/thirdparty/GetGitRevisionDescription.cmake.in +50 -0
  361. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/thirdparty/OSXInstallDirs.cmake +214 -0
  362. package/dist/prebuilt/Emscripten-x86_64/lib/cmake/gdal/thirdparty/SystemSummary.cmake +89 -0
  363. package/dist/prebuilt/Emscripten-x86_64/lib/gdalplugins/drivers.ini +287 -0
  364. package/dist/prebuilt/Emscripten-x86_64/lib/libgdal.a +0 -0
  365. package/dist/prebuilt/Emscripten-x86_64/lib/pkgconfig/gdal.pc +17 -0
  366. package/dist/prebuilt/Emscripten-x86_64/share/gdal/GDALLogoBW.svg +138 -0
  367. package/dist/prebuilt/Emscripten-x86_64/share/gdal/GDALLogoColor.svg +126 -0
  368. package/dist/prebuilt/Emscripten-x86_64/share/gdal/GDALLogoGS.svg +126 -0
  369. package/dist/prebuilt/Emscripten-x86_64/share/gdal/LICENSE.TXT +467 -0
  370. package/dist/prebuilt/Emscripten-x86_64/share/gdal/MM_m_idofic.csv +321 -0
  371. package/dist/prebuilt/Emscripten-x86_64/share/gdal/cubewerx_extra.wkt +48 -0
  372. package/dist/prebuilt/Emscripten-x86_64/share/gdal/default.rsc +0 -0
  373. package/dist/prebuilt/Emscripten-x86_64/share/gdal/ecw_cs.wkt +1453 -0
  374. package/dist/prebuilt/Emscripten-x86_64/share/gdal/epsg.wkt +1 -0
  375. package/dist/prebuilt/Emscripten-x86_64/share/gdal/esri_StatePlane_extra.wkt +631 -0
  376. package/dist/prebuilt/Emscripten-x86_64/share/gdal/gdalicon.png +0 -0
  377. package/dist/prebuilt/Emscripten-x86_64/share/gdal/gdalinfo_output.schema.json +346 -0
  378. package/dist/prebuilt/Emscripten-x86_64/share/gdal/gdalmdiminfo_output.schema.json +321 -0
  379. package/dist/prebuilt/Emscripten-x86_64/share/gdal/gdaltileindex.xsd +269 -0
  380. package/dist/prebuilt/Emscripten-x86_64/share/gdal/gdalvrt.xsd +880 -0
  381. package/dist/prebuilt/Emscripten-x86_64/share/gdal/gfs.xsd +246 -0
  382. package/dist/prebuilt/Emscripten-x86_64/share/gdal/gml_registry.xml +117 -0
  383. package/dist/prebuilt/Emscripten-x86_64/share/gdal/gml_registry.xsd +66 -0
  384. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_center.csv +251 -0
  385. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_process.csv +102 -0
  386. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_subcenter.csv +63 -0
  387. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_0_0.csv +261 -0
  388. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_0_1.csv +261 -0
  389. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_0_13.csv +261 -0
  390. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_0_14.csv +261 -0
  391. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_0_15.csv +261 -0
  392. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_0_16.csv +261 -0
  393. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_0_17.csv +11 -0
  394. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_0_18.csv +261 -0
  395. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_0_19.csv +261 -0
  396. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_0_190.csv +261 -0
  397. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_0_191.csv +261 -0
  398. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_0_2.csv +261 -0
  399. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_0_20.csv +261 -0
  400. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_0_21.csv +261 -0
  401. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_0_3.csv +261 -0
  402. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_0_4.csv +261 -0
  403. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_0_5.csv +261 -0
  404. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_0_6.csv +261 -0
  405. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_0_7.csv +261 -0
  406. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_10_0.csv +261 -0
  407. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_10_1.csv +261 -0
  408. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_10_191.csv +261 -0
  409. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_10_2.csv +261 -0
  410. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_10_3.csv +261 -0
  411. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_10_4.csv +261 -0
  412. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_1_0.csv +261 -0
  413. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_1_1.csv +261 -0
  414. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_1_2.csv +261 -0
  415. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_20_0.csv +261 -0
  416. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_20_1.csv +261 -0
  417. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_20_2.csv +261 -0
  418. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_2_0.csv +261 -0
  419. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_2_3.csv +261 -0
  420. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_2_4.csv +261 -0
  421. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_2_5.csv +261 -0
  422. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_2_6.csv +261 -0
  423. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_3_0.csv +261 -0
  424. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_3_1.csv +261 -0
  425. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_3_2.csv +28 -0
  426. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_3_3.csv +8 -0
  427. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_3_4.csv +14 -0
  428. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_3_5.csv +11 -0
  429. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_3_6.csv +11 -0
  430. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_4_0.csv +261 -0
  431. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_4_1.csv +261 -0
  432. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_4_10.csv +261 -0
  433. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_4_2.csv +261 -0
  434. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_4_3.csv +261 -0
  435. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_4_4.csv +261 -0
  436. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_4_5.csv +261 -0
  437. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_4_6.csv +261 -0
  438. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_4_7.csv +261 -0
  439. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_4_8.csv +261 -0
  440. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_4_9.csv +261 -0
  441. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_local_Canada.csv +5 -0
  442. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_local_HPC.csv +2 -0
  443. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_local_MRMS.csv +175 -0
  444. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_local_NCEP.csv +401 -0
  445. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_local_NDFD.csv +38 -0
  446. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_2_local_index.csv +7 -0
  447. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_4_5.csv +261 -0
  448. package/dist/prebuilt/Emscripten-x86_64/share/gdal/grib2_table_versions.csv +3 -0
  449. package/dist/prebuilt/Emscripten-x86_64/share/gdal/gt_datum.csv +229 -0
  450. package/dist/prebuilt/Emscripten-x86_64/share/gdal/gt_ellips.csv +24 -0
  451. package/dist/prebuilt/Emscripten-x86_64/share/gdal/header.dxf +1124 -0
  452. package/dist/prebuilt/Emscripten-x86_64/share/gdal/inspire_cp_BasicPropertyUnit.gfs +57 -0
  453. package/dist/prebuilt/Emscripten-x86_64/share/gdal/inspire_cp_CadastralBoundary.gfs +60 -0
  454. package/dist/prebuilt/Emscripten-x86_64/share/gdal/inspire_cp_CadastralParcel.gfs +81 -0
  455. package/dist/prebuilt/Emscripten-x86_64/share/gdal/inspire_cp_CadastralZoning.gfs +161 -0
  456. package/dist/prebuilt/Emscripten-x86_64/share/gdal/jpfgdgml_AdmArea.gfs +59 -0
  457. package/dist/prebuilt/Emscripten-x86_64/share/gdal/jpfgdgml_AdmBdry.gfs +49 -0
  458. package/dist/prebuilt/Emscripten-x86_64/share/gdal/jpfgdgml_AdmPt.gfs +59 -0
  459. package/dist/prebuilt/Emscripten-x86_64/share/gdal/jpfgdgml_BldA.gfs +54 -0
  460. package/dist/prebuilt/Emscripten-x86_64/share/gdal/jpfgdgml_BldL.gfs +54 -0
  461. package/dist/prebuilt/Emscripten-x86_64/share/gdal/jpfgdgml_Cntr.gfs +54 -0
  462. package/dist/prebuilt/Emscripten-x86_64/share/gdal/jpfgdgml_CommBdry.gfs +49 -0
  463. package/dist/prebuilt/Emscripten-x86_64/share/gdal/jpfgdgml_CommPt.gfs +59 -0
  464. package/dist/prebuilt/Emscripten-x86_64/share/gdal/jpfgdgml_Cstline.gfs +54 -0
  465. package/dist/prebuilt/Emscripten-x86_64/share/gdal/jpfgdgml_ElevPt.gfs +54 -0
  466. package/dist/prebuilt/Emscripten-x86_64/share/gdal/jpfgdgml_GCP.gfs +94 -0
  467. package/dist/prebuilt/Emscripten-x86_64/share/gdal/jpfgdgml_LeveeEdge.gfs +49 -0
  468. package/dist/prebuilt/Emscripten-x86_64/share/gdal/jpfgdgml_RailCL.gfs +54 -0
  469. package/dist/prebuilt/Emscripten-x86_64/share/gdal/jpfgdgml_RdASL.gfs +44 -0
  470. package/dist/prebuilt/Emscripten-x86_64/share/gdal/jpfgdgml_RdArea.gfs +54 -0
  471. package/dist/prebuilt/Emscripten-x86_64/share/gdal/jpfgdgml_RdCompt.gfs +59 -0
  472. package/dist/prebuilt/Emscripten-x86_64/share/gdal/jpfgdgml_RdEdg.gfs +59 -0
  473. package/dist/prebuilt/Emscripten-x86_64/share/gdal/jpfgdgml_RdMgtBdry.gfs +49 -0
  474. package/dist/prebuilt/Emscripten-x86_64/share/gdal/jpfgdgml_RdSgmtA.gfs +59 -0
  475. package/dist/prebuilt/Emscripten-x86_64/share/gdal/jpfgdgml_RvrMgtBdry.gfs +49 -0
  476. package/dist/prebuilt/Emscripten-x86_64/share/gdal/jpfgdgml_SBAPt.gfs +49 -0
  477. package/dist/prebuilt/Emscripten-x86_64/share/gdal/jpfgdgml_SBArea.gfs +54 -0
  478. package/dist/prebuilt/Emscripten-x86_64/share/gdal/jpfgdgml_SBBdry.gfs +44 -0
  479. package/dist/prebuilt/Emscripten-x86_64/share/gdal/jpfgdgml_WA.gfs +54 -0
  480. package/dist/prebuilt/Emscripten-x86_64/share/gdal/jpfgdgml_WL.gfs +54 -0
  481. package/dist/prebuilt/Emscripten-x86_64/share/gdal/jpfgdgml_WStrA.gfs +54 -0
  482. package/dist/prebuilt/Emscripten-x86_64/share/gdal/jpfgdgml_WStrL.gfs +54 -0
  483. package/dist/prebuilt/Emscripten-x86_64/share/gdal/nitf_spec.xml +3306 -0
  484. package/dist/prebuilt/Emscripten-x86_64/share/gdal/nitf_spec.xsd +189 -0
  485. package/dist/prebuilt/Emscripten-x86_64/share/gdal/ogrinfo_output.schema.json +528 -0
  486. package/dist/prebuilt/Emscripten-x86_64/share/gdal/ogrvrt.xsd +546 -0
  487. package/dist/prebuilt/Emscripten-x86_64/share/gdal/osmconf.ini +132 -0
  488. package/dist/prebuilt/Emscripten-x86_64/share/gdal/ozi_datum.csv +131 -0
  489. package/dist/prebuilt/Emscripten-x86_64/share/gdal/ozi_ellips.csv +35 -0
  490. package/dist/prebuilt/Emscripten-x86_64/share/gdal/pci_datum.txt +530 -0
  491. package/dist/prebuilt/Emscripten-x86_64/share/gdal/pci_ellips.txt +129 -0
  492. package/dist/prebuilt/Emscripten-x86_64/share/gdal/pdfcomposition.xsd +721 -0
  493. package/dist/prebuilt/Emscripten-x86_64/share/gdal/ruian_vf_ob_v1.gfs +1455 -0
  494. package/dist/prebuilt/Emscripten-x86_64/share/gdal/ruian_vf_st_uvoh_v1.gfs +86 -0
  495. package/dist/prebuilt/Emscripten-x86_64/share/gdal/ruian_vf_st_v1.gfs +1489 -0
  496. package/dist/prebuilt/Emscripten-x86_64/share/gdal/ruian_vf_v1.gfs +2126 -0
  497. package/dist/prebuilt/Emscripten-x86_64/share/gdal/s57agencies.csv +249 -0
  498. package/dist/prebuilt/Emscripten-x86_64/share/gdal/s57attributes.csv +484 -0
  499. package/dist/prebuilt/Emscripten-x86_64/share/gdal/s57expectedinput.csv +1008 -0
  500. package/dist/prebuilt/Emscripten-x86_64/share/gdal/s57objectclasses.csv +287 -0
  501. package/dist/prebuilt/Emscripten-x86_64/share/gdal/seed_2d.dgn +0 -0
  502. package/dist/prebuilt/Emscripten-x86_64/share/gdal/seed_3d.dgn +0 -0
  503. package/dist/prebuilt/Emscripten-x86_64/share/gdal/stateplane.csv +259 -0
  504. package/dist/prebuilt/Emscripten-x86_64/share/gdal/tms_LINZAntarticaMapTileGrid.json +190 -0
  505. package/dist/prebuilt/Emscripten-x86_64/share/gdal/tms_MapML_APSTILE.json +268 -0
  506. package/dist/prebuilt/Emscripten-x86_64/share/gdal/tms_MapML_CBMTILE.json +346 -0
  507. package/dist/prebuilt/Emscripten-x86_64/share/gdal/tms_NZTM2000.json +243 -0
  508. package/dist/prebuilt/Emscripten-x86_64/share/gdal/trailer.dxf +434 -0
  509. package/dist/prebuilt/Emscripten-x86_64/share/gdal/vdv452.xml +367 -0
  510. package/dist/prebuilt/Emscripten-x86_64/share/gdal/vdv452.xsd +63 -0
  511. package/dist/prebuilt/gdal.xcframework/Info.plist +50 -0
  512. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/cpl_atomic_ops.h +106 -0
  513. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/cpl_auto_close.h +89 -0
  514. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/cpl_compressor.h +128 -0
  515. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/cpl_config.h +215 -0
  516. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/cpl_config_extras.h +34 -0
  517. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/cpl_conv.h +433 -0
  518. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/cpl_csv.h +87 -0
  519. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/cpl_error.h +348 -0
  520. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/cpl_hash_set.h +99 -0
  521. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/cpl_http.h +265 -0
  522. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/cpl_json.h +317 -0
  523. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/cpl_list.h +75 -0
  524. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/cpl_minixml.h +227 -0
  525. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/cpl_multiproc.h +257 -0
  526. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/cpl_port.h +1186 -0
  527. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/cpl_progress.h +65 -0
  528. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/cpl_quad_tree.h +118 -0
  529. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/cpl_spawn.h +76 -0
  530. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/cpl_string.h +876 -0
  531. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/cpl_time.h +45 -0
  532. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/cpl_virtualmem.h +381 -0
  533. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/cpl_vsi.h +798 -0
  534. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/cpl_vsi_error.h +69 -0
  535. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/cpl_vsi_virtual.h +547 -0
  536. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/cplkeywordparser.h +77 -0
  537. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/gdal.h +2550 -0
  538. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/gdal_alg.h +730 -0
  539. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/gdal_alg_priv.h +399 -0
  540. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/gdal_csv.h +41 -0
  541. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/gdal_frmts.h +249 -0
  542. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/gdal_mdreader.h +256 -0
  543. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/gdal_pam.h +473 -0
  544. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/gdal_priv.h +4389 -0
  545. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/gdal_proxy.h +457 -0
  546. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/gdal_rat.h +406 -0
  547. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/gdal_simplesurf.h +595 -0
  548. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/gdal_utils.h +329 -0
  549. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/gdal_version.h +33 -0
  550. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/gdal_vrt.h +105 -0
  551. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/gdalcachedpixelaccessor.h +455 -0
  552. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/gdalgeorefpamdataset.h +89 -0
  553. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/gdalgrid.h +118 -0
  554. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/gdalgrid_priv.h +83 -0
  555. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/gdaljp2abstractdataset.h +77 -0
  556. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/gdaljp2metadata.h +253 -0
  557. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/gdalpansharpen.h +274 -0
  558. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/gdalsubdatasetinfo.h +120 -0
  559. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/gdalwarper.h +635 -0
  560. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/gnm.h +750 -0
  561. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/gnm_api.h +101 -0
  562. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/gnmgraph.h +258 -0
  563. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/memdataset.h +187 -0
  564. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/ogr_api.h +1036 -0
  565. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/ogr_core.h +1338 -0
  566. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/ogr_feature.h +1997 -0
  567. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/ogr_featurestyle.h +874 -0
  568. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/ogr_geocoding.h +62 -0
  569. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/ogr_geomcoordinateprecision.h +95 -0
  570. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/ogr_geometry.h +4282 -0
  571. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/ogr_p.h +341 -0
  572. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/ogr_recordbatch.h +120 -0
  573. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/ogr_spatialref.h +1021 -0
  574. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/ogr_srs_api.h +1102 -0
  575. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/ogr_swq.h +493 -0
  576. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/ogrsf_frmts.h +749 -0
  577. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/rawdataset.h +271 -0
  578. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/Headers/vrtdataset.h +2298 -0
  579. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e/libgdal.a +0 -0
  580. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/cpl_atomic_ops.h +106 -0
  581. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/cpl_auto_close.h +89 -0
  582. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/cpl_compressor.h +128 -0
  583. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/cpl_config.h +215 -0
  584. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/cpl_config_extras.h +34 -0
  585. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/cpl_conv.h +433 -0
  586. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/cpl_csv.h +87 -0
  587. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/cpl_error.h +348 -0
  588. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/cpl_hash_set.h +99 -0
  589. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/cpl_http.h +265 -0
  590. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/cpl_json.h +317 -0
  591. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/cpl_list.h +75 -0
  592. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/cpl_minixml.h +227 -0
  593. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/cpl_multiproc.h +257 -0
  594. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/cpl_port.h +1186 -0
  595. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/cpl_progress.h +65 -0
  596. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/cpl_quad_tree.h +118 -0
  597. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/cpl_spawn.h +76 -0
  598. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/cpl_string.h +876 -0
  599. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/cpl_time.h +45 -0
  600. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/cpl_virtualmem.h +381 -0
  601. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/cpl_vsi.h +798 -0
  602. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/cpl_vsi_error.h +69 -0
  603. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/cpl_vsi_virtual.h +547 -0
  604. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/cplkeywordparser.h +77 -0
  605. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/gdal.h +2550 -0
  606. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/gdal_alg.h +730 -0
  607. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/gdal_alg_priv.h +399 -0
  608. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/gdal_csv.h +41 -0
  609. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/gdal_frmts.h +249 -0
  610. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/gdal_mdreader.h +256 -0
  611. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/gdal_pam.h +473 -0
  612. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/gdal_priv.h +4389 -0
  613. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/gdal_proxy.h +457 -0
  614. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/gdal_rat.h +406 -0
  615. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/gdal_simplesurf.h +595 -0
  616. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/gdal_utils.h +329 -0
  617. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/gdal_version.h +33 -0
  618. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/gdal_vrt.h +105 -0
  619. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/gdalcachedpixelaccessor.h +455 -0
  620. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/gdalgeorefpamdataset.h +89 -0
  621. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/gdalgrid.h +118 -0
  622. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/gdalgrid_priv.h +83 -0
  623. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/gdaljp2abstractdataset.h +77 -0
  624. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/gdaljp2metadata.h +253 -0
  625. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/gdalpansharpen.h +274 -0
  626. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/gdalsubdatasetinfo.h +120 -0
  627. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/gdalwarper.h +635 -0
  628. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/gnm.h +750 -0
  629. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/gnm_api.h +101 -0
  630. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/gnmgraph.h +258 -0
  631. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/memdataset.h +187 -0
  632. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/ogr_api.h +1036 -0
  633. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/ogr_core.h +1338 -0
  634. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/ogr_feature.h +1997 -0
  635. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/ogr_featurestyle.h +874 -0
  636. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/ogr_geocoding.h +62 -0
  637. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/ogr_geomcoordinateprecision.h +95 -0
  638. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/ogr_geometry.h +4282 -0
  639. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/ogr_p.h +341 -0
  640. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/ogr_recordbatch.h +120 -0
  641. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/ogr_spatialref.h +1021 -0
  642. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/ogr_srs_api.h +1102 -0
  643. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/ogr_swq.h +493 -0
  644. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/ogrsf_frmts.h +749 -0
  645. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/rawdataset.h +271 -0
  646. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/Headers/vrtdataset.h +2298 -0
  647. package/dist/prebuilt/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/libgdal.a +0 -0
  648. package/dist/prebuilt/iOS-iphoneos/include/cpl_atomic_ops.h +106 -0
  649. package/dist/prebuilt/iOS-iphoneos/include/cpl_auto_close.h +89 -0
  650. package/dist/prebuilt/iOS-iphoneos/include/cpl_compressor.h +128 -0
  651. package/dist/prebuilt/iOS-iphoneos/include/cpl_config.h +215 -0
  652. package/dist/prebuilt/iOS-iphoneos/include/cpl_config_extras.h +34 -0
  653. package/dist/prebuilt/iOS-iphoneos/include/cpl_conv.h +433 -0
  654. package/dist/prebuilt/iOS-iphoneos/include/cpl_csv.h +87 -0
  655. package/dist/prebuilt/iOS-iphoneos/include/cpl_error.h +348 -0
  656. package/dist/prebuilt/iOS-iphoneos/include/cpl_hash_set.h +99 -0
  657. package/dist/prebuilt/iOS-iphoneos/include/cpl_http.h +265 -0
  658. package/dist/prebuilt/iOS-iphoneos/include/cpl_json.h +317 -0
  659. package/dist/prebuilt/iOS-iphoneos/include/cpl_list.h +75 -0
  660. package/dist/prebuilt/iOS-iphoneos/include/cpl_minixml.h +227 -0
  661. package/dist/prebuilt/iOS-iphoneos/include/cpl_multiproc.h +257 -0
  662. package/dist/prebuilt/iOS-iphoneos/include/cpl_port.h +1186 -0
  663. package/dist/prebuilt/iOS-iphoneos/include/cpl_progress.h +65 -0
  664. package/dist/prebuilt/iOS-iphoneos/include/cpl_quad_tree.h +118 -0
  665. package/dist/prebuilt/iOS-iphoneos/include/cpl_spawn.h +76 -0
  666. package/dist/prebuilt/iOS-iphoneos/include/cpl_string.h +876 -0
  667. package/dist/prebuilt/iOS-iphoneos/include/cpl_time.h +45 -0
  668. package/dist/prebuilt/iOS-iphoneos/include/cpl_virtualmem.h +381 -0
  669. package/dist/prebuilt/iOS-iphoneos/include/cpl_vsi.h +798 -0
  670. package/dist/prebuilt/iOS-iphoneos/include/cpl_vsi_error.h +69 -0
  671. package/dist/prebuilt/iOS-iphoneos/include/cpl_vsi_virtual.h +547 -0
  672. package/dist/prebuilt/iOS-iphoneos/include/cplkeywordparser.h +77 -0
  673. package/dist/prebuilt/iOS-iphoneos/include/gdal.h +2550 -0
  674. package/dist/prebuilt/iOS-iphoneos/include/gdal_alg.h +730 -0
  675. package/dist/prebuilt/iOS-iphoneos/include/gdal_alg_priv.h +399 -0
  676. package/dist/prebuilt/iOS-iphoneos/include/gdal_csv.h +41 -0
  677. package/dist/prebuilt/iOS-iphoneos/include/gdal_frmts.h +249 -0
  678. package/dist/prebuilt/iOS-iphoneos/include/gdal_mdreader.h +256 -0
  679. package/dist/prebuilt/iOS-iphoneos/include/gdal_pam.h +473 -0
  680. package/dist/prebuilt/iOS-iphoneos/include/gdal_priv.h +4389 -0
  681. package/dist/prebuilt/iOS-iphoneos/include/gdal_proxy.h +457 -0
  682. package/dist/prebuilt/iOS-iphoneos/include/gdal_rat.h +406 -0
  683. package/dist/prebuilt/iOS-iphoneos/include/gdal_simplesurf.h +595 -0
  684. package/dist/prebuilt/iOS-iphoneos/include/gdal_utils.h +329 -0
  685. package/dist/prebuilt/iOS-iphoneos/include/gdal_version.h +33 -0
  686. package/dist/prebuilt/iOS-iphoneos/include/gdal_vrt.h +105 -0
  687. package/dist/prebuilt/iOS-iphoneos/include/gdalcachedpixelaccessor.h +455 -0
  688. package/dist/prebuilt/iOS-iphoneos/include/gdalgeorefpamdataset.h +89 -0
  689. package/dist/prebuilt/iOS-iphoneos/include/gdalgrid.h +118 -0
  690. package/dist/prebuilt/iOS-iphoneos/include/gdalgrid_priv.h +83 -0
  691. package/dist/prebuilt/iOS-iphoneos/include/gdaljp2abstractdataset.h +77 -0
  692. package/dist/prebuilt/iOS-iphoneos/include/gdaljp2metadata.h +253 -0
  693. package/dist/prebuilt/iOS-iphoneos/include/gdalpansharpen.h +274 -0
  694. package/dist/prebuilt/iOS-iphoneos/include/gdalsubdatasetinfo.h +120 -0
  695. package/dist/prebuilt/iOS-iphoneos/include/gdalwarper.h +635 -0
  696. package/dist/prebuilt/iOS-iphoneos/include/gnm.h +750 -0
  697. package/dist/prebuilt/iOS-iphoneos/include/gnm_api.h +101 -0
  698. package/dist/prebuilt/iOS-iphoneos/include/gnmgraph.h +258 -0
  699. package/dist/prebuilt/iOS-iphoneos/include/memdataset.h +187 -0
  700. package/dist/prebuilt/iOS-iphoneos/include/ogr_api.h +1036 -0
  701. package/dist/prebuilt/iOS-iphoneos/include/ogr_core.h +1338 -0
  702. package/dist/prebuilt/iOS-iphoneos/include/ogr_feature.h +1997 -0
  703. package/dist/prebuilt/iOS-iphoneos/include/ogr_featurestyle.h +874 -0
  704. package/dist/prebuilt/iOS-iphoneos/include/ogr_geocoding.h +62 -0
  705. package/dist/prebuilt/iOS-iphoneos/include/ogr_geomcoordinateprecision.h +95 -0
  706. package/dist/prebuilt/iOS-iphoneos/include/ogr_geometry.h +4282 -0
  707. package/dist/prebuilt/iOS-iphoneos/include/ogr_p.h +341 -0
  708. package/dist/prebuilt/iOS-iphoneos/include/ogr_recordbatch.h +120 -0
  709. package/dist/prebuilt/iOS-iphoneos/include/ogr_spatialref.h +1021 -0
  710. package/dist/prebuilt/iOS-iphoneos/include/ogr_srs_api.h +1102 -0
  711. package/dist/prebuilt/iOS-iphoneos/include/ogr_swq.h +493 -0
  712. package/dist/prebuilt/iOS-iphoneos/include/ogrsf_frmts.h +749 -0
  713. package/dist/prebuilt/iOS-iphoneos/include/rawdataset.h +271 -0
  714. package/dist/prebuilt/iOS-iphoneos/include/vrtdataset.h +2298 -0
  715. package/dist/prebuilt/iOS-iphoneos/share/gdal/GDALLogoBW.svg +138 -0
  716. package/dist/prebuilt/iOS-iphoneos/share/gdal/GDALLogoColor.svg +126 -0
  717. package/dist/prebuilt/iOS-iphoneos/share/gdal/GDALLogoGS.svg +126 -0
  718. package/dist/prebuilt/iOS-iphoneos/share/gdal/LICENSE.TXT +467 -0
  719. package/dist/prebuilt/iOS-iphoneos/share/gdal/MM_m_idofic.csv +321 -0
  720. package/dist/prebuilt/iOS-iphoneos/share/gdal/cubewerx_extra.wkt +48 -0
  721. package/dist/prebuilt/iOS-iphoneos/share/gdal/default.rsc +0 -0
  722. package/dist/prebuilt/iOS-iphoneos/share/gdal/ecw_cs.wkt +1453 -0
  723. package/dist/prebuilt/iOS-iphoneos/share/gdal/epsg.wkt +1 -0
  724. package/dist/prebuilt/iOS-iphoneos/share/gdal/esri_StatePlane_extra.wkt +631 -0
  725. package/dist/prebuilt/iOS-iphoneos/share/gdal/gdalicon.png +0 -0
  726. package/dist/prebuilt/iOS-iphoneos/share/gdal/gdalinfo_output.schema.json +346 -0
  727. package/dist/prebuilt/iOS-iphoneos/share/gdal/gdalmdiminfo_output.schema.json +321 -0
  728. package/dist/prebuilt/iOS-iphoneos/share/gdal/gdaltileindex.xsd +269 -0
  729. package/dist/prebuilt/iOS-iphoneos/share/gdal/gdalvrt.xsd +880 -0
  730. package/dist/prebuilt/iOS-iphoneos/share/gdal/gfs.xsd +246 -0
  731. package/dist/prebuilt/iOS-iphoneos/share/gdal/gml_registry.xml +117 -0
  732. package/dist/prebuilt/iOS-iphoneos/share/gdal/gml_registry.xsd +66 -0
  733. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_center.csv +251 -0
  734. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_process.csv +102 -0
  735. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_subcenter.csv +63 -0
  736. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_0_0.csv +261 -0
  737. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_0_1.csv +261 -0
  738. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_0_13.csv +261 -0
  739. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_0_14.csv +261 -0
  740. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_0_15.csv +261 -0
  741. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_0_16.csv +261 -0
  742. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_0_17.csv +11 -0
  743. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_0_18.csv +261 -0
  744. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_0_19.csv +261 -0
  745. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_0_190.csv +261 -0
  746. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_0_191.csv +261 -0
  747. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_0_2.csv +261 -0
  748. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_0_20.csv +261 -0
  749. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_0_21.csv +261 -0
  750. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_0_3.csv +261 -0
  751. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_0_4.csv +261 -0
  752. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_0_5.csv +261 -0
  753. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_0_6.csv +261 -0
  754. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_0_7.csv +261 -0
  755. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_10_0.csv +261 -0
  756. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_10_1.csv +261 -0
  757. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_10_191.csv +261 -0
  758. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_10_2.csv +261 -0
  759. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_10_3.csv +261 -0
  760. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_10_4.csv +261 -0
  761. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_1_0.csv +261 -0
  762. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_1_1.csv +261 -0
  763. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_1_2.csv +261 -0
  764. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_20_0.csv +261 -0
  765. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_20_1.csv +261 -0
  766. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_20_2.csv +261 -0
  767. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_2_0.csv +261 -0
  768. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_2_3.csv +261 -0
  769. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_2_4.csv +261 -0
  770. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_2_5.csv +261 -0
  771. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_2_6.csv +261 -0
  772. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_3_0.csv +261 -0
  773. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_3_1.csv +261 -0
  774. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_3_2.csv +28 -0
  775. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_3_3.csv +8 -0
  776. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_3_4.csv +14 -0
  777. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_3_5.csv +11 -0
  778. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_3_6.csv +11 -0
  779. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_4_0.csv +261 -0
  780. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_4_1.csv +261 -0
  781. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_4_10.csv +261 -0
  782. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_4_2.csv +261 -0
  783. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_4_3.csv +261 -0
  784. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_4_4.csv +261 -0
  785. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_4_5.csv +261 -0
  786. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_4_6.csv +261 -0
  787. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_4_7.csv +261 -0
  788. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_4_8.csv +261 -0
  789. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_4_9.csv +261 -0
  790. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_local_Canada.csv +5 -0
  791. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_local_HPC.csv +2 -0
  792. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_local_MRMS.csv +175 -0
  793. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_local_NCEP.csv +401 -0
  794. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_local_NDFD.csv +38 -0
  795. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_2_local_index.csv +7 -0
  796. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_4_5.csv +261 -0
  797. package/dist/prebuilt/iOS-iphoneos/share/gdal/grib2_table_versions.csv +3 -0
  798. package/dist/prebuilt/iOS-iphoneos/share/gdal/gt_datum.csv +229 -0
  799. package/dist/prebuilt/iOS-iphoneos/share/gdal/gt_ellips.csv +24 -0
  800. package/dist/prebuilt/iOS-iphoneos/share/gdal/header.dxf +1124 -0
  801. package/dist/prebuilt/iOS-iphoneos/share/gdal/inspire_cp_BasicPropertyUnit.gfs +57 -0
  802. package/dist/prebuilt/iOS-iphoneos/share/gdal/inspire_cp_CadastralBoundary.gfs +60 -0
  803. package/dist/prebuilt/iOS-iphoneos/share/gdal/inspire_cp_CadastralParcel.gfs +81 -0
  804. package/dist/prebuilt/iOS-iphoneos/share/gdal/inspire_cp_CadastralZoning.gfs +161 -0
  805. package/dist/prebuilt/iOS-iphoneos/share/gdal/jpfgdgml_AdmArea.gfs +59 -0
  806. package/dist/prebuilt/iOS-iphoneos/share/gdal/jpfgdgml_AdmBdry.gfs +49 -0
  807. package/dist/prebuilt/iOS-iphoneos/share/gdal/jpfgdgml_AdmPt.gfs +59 -0
  808. package/dist/prebuilt/iOS-iphoneos/share/gdal/jpfgdgml_BldA.gfs +54 -0
  809. package/dist/prebuilt/iOS-iphoneos/share/gdal/jpfgdgml_BldL.gfs +54 -0
  810. package/dist/prebuilt/iOS-iphoneos/share/gdal/jpfgdgml_Cntr.gfs +54 -0
  811. package/dist/prebuilt/iOS-iphoneos/share/gdal/jpfgdgml_CommBdry.gfs +49 -0
  812. package/dist/prebuilt/iOS-iphoneos/share/gdal/jpfgdgml_CommPt.gfs +59 -0
  813. package/dist/prebuilt/iOS-iphoneos/share/gdal/jpfgdgml_Cstline.gfs +54 -0
  814. package/dist/prebuilt/iOS-iphoneos/share/gdal/jpfgdgml_ElevPt.gfs +54 -0
  815. package/dist/prebuilt/iOS-iphoneos/share/gdal/jpfgdgml_GCP.gfs +94 -0
  816. package/dist/prebuilt/iOS-iphoneos/share/gdal/jpfgdgml_LeveeEdge.gfs +49 -0
  817. package/dist/prebuilt/iOS-iphoneos/share/gdal/jpfgdgml_RailCL.gfs +54 -0
  818. package/dist/prebuilt/iOS-iphoneos/share/gdal/jpfgdgml_RdASL.gfs +44 -0
  819. package/dist/prebuilt/iOS-iphoneos/share/gdal/jpfgdgml_RdArea.gfs +54 -0
  820. package/dist/prebuilt/iOS-iphoneos/share/gdal/jpfgdgml_RdCompt.gfs +59 -0
  821. package/dist/prebuilt/iOS-iphoneos/share/gdal/jpfgdgml_RdEdg.gfs +59 -0
  822. package/dist/prebuilt/iOS-iphoneos/share/gdal/jpfgdgml_RdMgtBdry.gfs +49 -0
  823. package/dist/prebuilt/iOS-iphoneos/share/gdal/jpfgdgml_RdSgmtA.gfs +59 -0
  824. package/dist/prebuilt/iOS-iphoneos/share/gdal/jpfgdgml_RvrMgtBdry.gfs +49 -0
  825. package/dist/prebuilt/iOS-iphoneos/share/gdal/jpfgdgml_SBAPt.gfs +49 -0
  826. package/dist/prebuilt/iOS-iphoneos/share/gdal/jpfgdgml_SBArea.gfs +54 -0
  827. package/dist/prebuilt/iOS-iphoneos/share/gdal/jpfgdgml_SBBdry.gfs +44 -0
  828. package/dist/prebuilt/iOS-iphoneos/share/gdal/jpfgdgml_WA.gfs +54 -0
  829. package/dist/prebuilt/iOS-iphoneos/share/gdal/jpfgdgml_WL.gfs +54 -0
  830. package/dist/prebuilt/iOS-iphoneos/share/gdal/jpfgdgml_WStrA.gfs +54 -0
  831. package/dist/prebuilt/iOS-iphoneos/share/gdal/jpfgdgml_WStrL.gfs +54 -0
  832. package/dist/prebuilt/iOS-iphoneos/share/gdal/nitf_spec.xml +3306 -0
  833. package/dist/prebuilt/iOS-iphoneos/share/gdal/nitf_spec.xsd +189 -0
  834. package/dist/prebuilt/iOS-iphoneos/share/gdal/ogrinfo_output.schema.json +528 -0
  835. package/dist/prebuilt/iOS-iphoneos/share/gdal/ogrvrt.xsd +546 -0
  836. package/dist/prebuilt/iOS-iphoneos/share/gdal/osmconf.ini +132 -0
  837. package/dist/prebuilt/iOS-iphoneos/share/gdal/ozi_datum.csv +131 -0
  838. package/dist/prebuilt/iOS-iphoneos/share/gdal/ozi_ellips.csv +35 -0
  839. package/dist/prebuilt/iOS-iphoneos/share/gdal/pci_datum.txt +530 -0
  840. package/dist/prebuilt/iOS-iphoneos/share/gdal/pci_ellips.txt +129 -0
  841. package/dist/prebuilt/iOS-iphoneos/share/gdal/pdfcomposition.xsd +721 -0
  842. package/dist/prebuilt/iOS-iphoneos/share/gdal/ruian_vf_ob_v1.gfs +1455 -0
  843. package/dist/prebuilt/iOS-iphoneos/share/gdal/ruian_vf_st_uvoh_v1.gfs +86 -0
  844. package/dist/prebuilt/iOS-iphoneos/share/gdal/ruian_vf_st_v1.gfs +1489 -0
  845. package/dist/prebuilt/iOS-iphoneos/share/gdal/ruian_vf_v1.gfs +2126 -0
  846. package/dist/prebuilt/iOS-iphoneos/share/gdal/s57agencies.csv +249 -0
  847. package/dist/prebuilt/iOS-iphoneos/share/gdal/s57attributes.csv +484 -0
  848. package/dist/prebuilt/iOS-iphoneos/share/gdal/s57expectedinput.csv +1008 -0
  849. package/dist/prebuilt/iOS-iphoneos/share/gdal/s57objectclasses.csv +287 -0
  850. package/dist/prebuilt/iOS-iphoneos/share/gdal/seed_2d.dgn +0 -0
  851. package/dist/prebuilt/iOS-iphoneos/share/gdal/seed_3d.dgn +0 -0
  852. package/dist/prebuilt/iOS-iphoneos/share/gdal/stateplane.csv +259 -0
  853. package/dist/prebuilt/iOS-iphoneos/share/gdal/tms_LINZAntarticaMapTileGrid.json +190 -0
  854. package/dist/prebuilt/iOS-iphoneos/share/gdal/tms_MapML_APSTILE.json +268 -0
  855. package/dist/prebuilt/iOS-iphoneos/share/gdal/tms_MapML_CBMTILE.json +346 -0
  856. package/dist/prebuilt/iOS-iphoneos/share/gdal/tms_NZTM2000.json +243 -0
  857. package/dist/prebuilt/iOS-iphoneos/share/gdal/trailer.dxf +434 -0
  858. package/dist/prebuilt/iOS-iphoneos/share/gdal/vdv452.xml +367 -0
  859. package/dist/prebuilt/iOS-iphoneos/share/gdal/vdv452.xsd +63 -0
  860. package/dist/prebuilt/iOS-iphonesimulator/include/cpl_atomic_ops.h +106 -0
  861. package/dist/prebuilt/iOS-iphonesimulator/include/cpl_auto_close.h +89 -0
  862. package/dist/prebuilt/iOS-iphonesimulator/include/cpl_compressor.h +128 -0
  863. package/dist/prebuilt/iOS-iphonesimulator/include/cpl_config.h +215 -0
  864. package/dist/prebuilt/iOS-iphonesimulator/include/cpl_config_extras.h +34 -0
  865. package/dist/prebuilt/iOS-iphonesimulator/include/cpl_conv.h +433 -0
  866. package/dist/prebuilt/iOS-iphonesimulator/include/cpl_csv.h +87 -0
  867. package/dist/prebuilt/iOS-iphonesimulator/include/cpl_error.h +348 -0
  868. package/dist/prebuilt/iOS-iphonesimulator/include/cpl_hash_set.h +99 -0
  869. package/dist/prebuilt/iOS-iphonesimulator/include/cpl_http.h +265 -0
  870. package/dist/prebuilt/iOS-iphonesimulator/include/cpl_json.h +317 -0
  871. package/dist/prebuilt/iOS-iphonesimulator/include/cpl_list.h +75 -0
  872. package/dist/prebuilt/iOS-iphonesimulator/include/cpl_minixml.h +227 -0
  873. package/dist/prebuilt/iOS-iphonesimulator/include/cpl_multiproc.h +257 -0
  874. package/dist/prebuilt/iOS-iphonesimulator/include/cpl_port.h +1186 -0
  875. package/dist/prebuilt/iOS-iphonesimulator/include/cpl_progress.h +65 -0
  876. package/dist/prebuilt/iOS-iphonesimulator/include/cpl_quad_tree.h +118 -0
  877. package/dist/prebuilt/iOS-iphonesimulator/include/cpl_spawn.h +76 -0
  878. package/dist/prebuilt/iOS-iphonesimulator/include/cpl_string.h +876 -0
  879. package/dist/prebuilt/iOS-iphonesimulator/include/cpl_time.h +45 -0
  880. package/dist/prebuilt/iOS-iphonesimulator/include/cpl_virtualmem.h +381 -0
  881. package/dist/prebuilt/iOS-iphonesimulator/include/cpl_vsi.h +798 -0
  882. package/dist/prebuilt/iOS-iphonesimulator/include/cpl_vsi_error.h +69 -0
  883. package/dist/prebuilt/iOS-iphonesimulator/include/cpl_vsi_virtual.h +547 -0
  884. package/dist/prebuilt/iOS-iphonesimulator/include/cplkeywordparser.h +77 -0
  885. package/dist/prebuilt/iOS-iphonesimulator/include/gdal.h +2550 -0
  886. package/dist/prebuilt/iOS-iphonesimulator/include/gdal_alg.h +730 -0
  887. package/dist/prebuilt/iOS-iphonesimulator/include/gdal_alg_priv.h +399 -0
  888. package/dist/prebuilt/iOS-iphonesimulator/include/gdal_csv.h +41 -0
  889. package/dist/prebuilt/iOS-iphonesimulator/include/gdal_frmts.h +249 -0
  890. package/dist/prebuilt/iOS-iphonesimulator/include/gdal_mdreader.h +256 -0
  891. package/dist/prebuilt/iOS-iphonesimulator/include/gdal_pam.h +473 -0
  892. package/dist/prebuilt/iOS-iphonesimulator/include/gdal_priv.h +4389 -0
  893. package/dist/prebuilt/iOS-iphonesimulator/include/gdal_proxy.h +457 -0
  894. package/dist/prebuilt/iOS-iphonesimulator/include/gdal_rat.h +406 -0
  895. package/dist/prebuilt/iOS-iphonesimulator/include/gdal_simplesurf.h +595 -0
  896. package/dist/prebuilt/iOS-iphonesimulator/include/gdal_utils.h +329 -0
  897. package/dist/prebuilt/iOS-iphonesimulator/include/gdal_version.h +33 -0
  898. package/dist/prebuilt/iOS-iphonesimulator/include/gdal_vrt.h +105 -0
  899. package/dist/prebuilt/iOS-iphonesimulator/include/gdalcachedpixelaccessor.h +455 -0
  900. package/dist/prebuilt/iOS-iphonesimulator/include/gdalgeorefpamdataset.h +89 -0
  901. package/dist/prebuilt/iOS-iphonesimulator/include/gdalgrid.h +118 -0
  902. package/dist/prebuilt/iOS-iphonesimulator/include/gdalgrid_priv.h +83 -0
  903. package/dist/prebuilt/iOS-iphonesimulator/include/gdaljp2abstractdataset.h +77 -0
  904. package/dist/prebuilt/iOS-iphonesimulator/include/gdaljp2metadata.h +253 -0
  905. package/dist/prebuilt/iOS-iphonesimulator/include/gdalpansharpen.h +274 -0
  906. package/dist/prebuilt/iOS-iphonesimulator/include/gdalsubdatasetinfo.h +120 -0
  907. package/dist/prebuilt/iOS-iphonesimulator/include/gdalwarper.h +635 -0
  908. package/dist/prebuilt/iOS-iphonesimulator/include/gnm.h +750 -0
  909. package/dist/prebuilt/iOS-iphonesimulator/include/gnm_api.h +101 -0
  910. package/dist/prebuilt/iOS-iphonesimulator/include/gnmgraph.h +258 -0
  911. package/dist/prebuilt/iOS-iphonesimulator/include/memdataset.h +187 -0
  912. package/dist/prebuilt/iOS-iphonesimulator/include/ogr_api.h +1036 -0
  913. package/dist/prebuilt/iOS-iphonesimulator/include/ogr_core.h +1338 -0
  914. package/dist/prebuilt/iOS-iphonesimulator/include/ogr_feature.h +1997 -0
  915. package/dist/prebuilt/iOS-iphonesimulator/include/ogr_featurestyle.h +874 -0
  916. package/dist/prebuilt/iOS-iphonesimulator/include/ogr_geocoding.h +62 -0
  917. package/dist/prebuilt/iOS-iphonesimulator/include/ogr_geomcoordinateprecision.h +95 -0
  918. package/dist/prebuilt/iOS-iphonesimulator/include/ogr_geometry.h +4282 -0
  919. package/dist/prebuilt/iOS-iphonesimulator/include/ogr_p.h +341 -0
  920. package/dist/prebuilt/iOS-iphonesimulator/include/ogr_recordbatch.h +120 -0
  921. package/dist/prebuilt/iOS-iphonesimulator/include/ogr_spatialref.h +1021 -0
  922. package/dist/prebuilt/iOS-iphonesimulator/include/ogr_srs_api.h +1102 -0
  923. package/dist/prebuilt/iOS-iphonesimulator/include/ogr_swq.h +493 -0
  924. package/dist/prebuilt/iOS-iphonesimulator/include/ogrsf_frmts.h +749 -0
  925. package/dist/prebuilt/iOS-iphonesimulator/include/rawdataset.h +271 -0
  926. package/dist/prebuilt/iOS-iphonesimulator/include/vrtdataset.h +2298 -0
  927. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/GDALLogoBW.svg +138 -0
  928. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/GDALLogoColor.svg +126 -0
  929. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/GDALLogoGS.svg +126 -0
  930. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/LICENSE.TXT +467 -0
  931. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/MM_m_idofic.csv +321 -0
  932. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/cubewerx_extra.wkt +48 -0
  933. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/default.rsc +0 -0
  934. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/ecw_cs.wkt +1453 -0
  935. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/epsg.wkt +1 -0
  936. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/esri_StatePlane_extra.wkt +631 -0
  937. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/gdalicon.png +0 -0
  938. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/gdalinfo_output.schema.json +346 -0
  939. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/gdalmdiminfo_output.schema.json +321 -0
  940. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/gdaltileindex.xsd +269 -0
  941. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/gdalvrt.xsd +880 -0
  942. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/gfs.xsd +246 -0
  943. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/gml_registry.xml +117 -0
  944. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/gml_registry.xsd +66 -0
  945. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_center.csv +251 -0
  946. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_process.csv +102 -0
  947. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_subcenter.csv +63 -0
  948. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_0_0.csv +261 -0
  949. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_0_1.csv +261 -0
  950. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_0_13.csv +261 -0
  951. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_0_14.csv +261 -0
  952. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_0_15.csv +261 -0
  953. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_0_16.csv +261 -0
  954. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_0_17.csv +11 -0
  955. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_0_18.csv +261 -0
  956. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_0_19.csv +261 -0
  957. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_0_190.csv +261 -0
  958. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_0_191.csv +261 -0
  959. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_0_2.csv +261 -0
  960. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_0_20.csv +261 -0
  961. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_0_21.csv +261 -0
  962. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_0_3.csv +261 -0
  963. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_0_4.csv +261 -0
  964. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_0_5.csv +261 -0
  965. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_0_6.csv +261 -0
  966. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_0_7.csv +261 -0
  967. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_10_0.csv +261 -0
  968. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_10_1.csv +261 -0
  969. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_10_191.csv +261 -0
  970. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_10_2.csv +261 -0
  971. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_10_3.csv +261 -0
  972. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_10_4.csv +261 -0
  973. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_1_0.csv +261 -0
  974. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_1_1.csv +261 -0
  975. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_1_2.csv +261 -0
  976. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_20_0.csv +261 -0
  977. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_20_1.csv +261 -0
  978. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_20_2.csv +261 -0
  979. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_2_0.csv +261 -0
  980. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_2_3.csv +261 -0
  981. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_2_4.csv +261 -0
  982. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_2_5.csv +261 -0
  983. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_2_6.csv +261 -0
  984. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_3_0.csv +261 -0
  985. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_3_1.csv +261 -0
  986. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_3_2.csv +28 -0
  987. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_3_3.csv +8 -0
  988. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_3_4.csv +14 -0
  989. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_3_5.csv +11 -0
  990. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_3_6.csv +11 -0
  991. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_4_0.csv +261 -0
  992. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_4_1.csv +261 -0
  993. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_4_10.csv +261 -0
  994. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_4_2.csv +261 -0
  995. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_4_3.csv +261 -0
  996. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_4_4.csv +261 -0
  997. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_4_5.csv +261 -0
  998. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_4_6.csv +261 -0
  999. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_4_7.csv +261 -0
  1000. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_4_8.csv +261 -0
  1001. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_4_9.csv +261 -0
  1002. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_local_Canada.csv +5 -0
  1003. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_local_HPC.csv +2 -0
  1004. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_local_MRMS.csv +175 -0
  1005. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_local_NCEP.csv +401 -0
  1006. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_local_NDFD.csv +38 -0
  1007. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_2_local_index.csv +7 -0
  1008. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_4_5.csv +261 -0
  1009. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/grib2_table_versions.csv +3 -0
  1010. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/gt_datum.csv +229 -0
  1011. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/gt_ellips.csv +24 -0
  1012. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/header.dxf +1124 -0
  1013. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/inspire_cp_BasicPropertyUnit.gfs +57 -0
  1014. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/inspire_cp_CadastralBoundary.gfs +60 -0
  1015. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/inspire_cp_CadastralParcel.gfs +81 -0
  1016. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/inspire_cp_CadastralZoning.gfs +161 -0
  1017. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/jpfgdgml_AdmArea.gfs +59 -0
  1018. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/jpfgdgml_AdmBdry.gfs +49 -0
  1019. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/jpfgdgml_AdmPt.gfs +59 -0
  1020. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/jpfgdgml_BldA.gfs +54 -0
  1021. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/jpfgdgml_BldL.gfs +54 -0
  1022. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/jpfgdgml_Cntr.gfs +54 -0
  1023. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/jpfgdgml_CommBdry.gfs +49 -0
  1024. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/jpfgdgml_CommPt.gfs +59 -0
  1025. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/jpfgdgml_Cstline.gfs +54 -0
  1026. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/jpfgdgml_ElevPt.gfs +54 -0
  1027. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/jpfgdgml_GCP.gfs +94 -0
  1028. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/jpfgdgml_LeveeEdge.gfs +49 -0
  1029. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/jpfgdgml_RailCL.gfs +54 -0
  1030. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/jpfgdgml_RdASL.gfs +44 -0
  1031. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/jpfgdgml_RdArea.gfs +54 -0
  1032. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/jpfgdgml_RdCompt.gfs +59 -0
  1033. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/jpfgdgml_RdEdg.gfs +59 -0
  1034. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/jpfgdgml_RdMgtBdry.gfs +49 -0
  1035. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/jpfgdgml_RdSgmtA.gfs +59 -0
  1036. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/jpfgdgml_RvrMgtBdry.gfs +49 -0
  1037. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/jpfgdgml_SBAPt.gfs +49 -0
  1038. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/jpfgdgml_SBArea.gfs +54 -0
  1039. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/jpfgdgml_SBBdry.gfs +44 -0
  1040. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/jpfgdgml_WA.gfs +54 -0
  1041. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/jpfgdgml_WL.gfs +54 -0
  1042. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/jpfgdgml_WStrA.gfs +54 -0
  1043. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/jpfgdgml_WStrL.gfs +54 -0
  1044. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/nitf_spec.xml +3306 -0
  1045. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/nitf_spec.xsd +189 -0
  1046. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/ogrinfo_output.schema.json +528 -0
  1047. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/ogrvrt.xsd +546 -0
  1048. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/osmconf.ini +132 -0
  1049. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/ozi_datum.csv +131 -0
  1050. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/ozi_ellips.csv +35 -0
  1051. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/pci_datum.txt +530 -0
  1052. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/pci_ellips.txt +129 -0
  1053. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/pdfcomposition.xsd +721 -0
  1054. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/ruian_vf_ob_v1.gfs +1455 -0
  1055. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/ruian_vf_st_uvoh_v1.gfs +86 -0
  1056. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/ruian_vf_st_v1.gfs +1489 -0
  1057. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/ruian_vf_v1.gfs +2126 -0
  1058. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/s57agencies.csv +249 -0
  1059. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/s57attributes.csv +484 -0
  1060. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/s57expectedinput.csv +1008 -0
  1061. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/s57objectclasses.csv +287 -0
  1062. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/seed_2d.dgn +0 -0
  1063. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/seed_3d.dgn +0 -0
  1064. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/stateplane.csv +259 -0
  1065. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/tms_LINZAntarticaMapTileGrid.json +190 -0
  1066. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/tms_MapML_APSTILE.json +268 -0
  1067. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/tms_MapML_CBMTILE.json +346 -0
  1068. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/tms_NZTM2000.json +243 -0
  1069. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/trailer.dxf +434 -0
  1070. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/vdv452.xml +367 -0
  1071. package/dist/prebuilt/iOS-iphonesimulator/share/gdal/vdv452.xsd +63 -0
  1072. package/package.json +40 -0
@@ -0,0 +1,4389 @@
1
+ /******************************************************************************
2
+ * $Id$
3
+ *
4
+ * Name: gdal_priv.h
5
+ * Project: GDAL Core
6
+ * Purpose: GDAL Core C++/Private declarations.
7
+ * Author: Frank Warmerdam, warmerdam@pobox.com
8
+ *
9
+ ******************************************************************************
10
+ * Copyright (c) 1998, Frank Warmerdam
11
+ * Copyright (c) 2007-2014, Even Rouault <even dot rouault at spatialys.com>
12
+ *
13
+ * Permission is hereby granted, free of charge, to any person obtaining a
14
+ * copy of this software and associated documentation files (the "Software"),
15
+ * to deal in the Software without restriction, including without limitation
16
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
17
+ * and/or sell copies of the Software, and to permit persons to whom the
18
+ * Software is furnished to do so, subject to the following conditions:
19
+ *
20
+ * The above copyright notice and this permission notice shall be included
21
+ * in all copies or substantial portions of the Software.
22
+ *
23
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
26
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
29
+ * DEALINGS IN THE SOFTWARE.
30
+ ****************************************************************************/
31
+
32
+ #ifndef GDAL_PRIV_H_INCLUDED
33
+ #define GDAL_PRIV_H_INCLUDED
34
+
35
+ /**
36
+ * \file gdal_priv.h
37
+ *
38
+ * C++ GDAL entry points.
39
+ */
40
+
41
+ /* -------------------------------------------------------------------- */
42
+ /* Predeclare various classes before pulling in gdal.h, the */
43
+ /* public declarations. */
44
+ /* -------------------------------------------------------------------- */
45
+ class GDALMajorObject;
46
+ class GDALDataset;
47
+ class GDALRasterBand;
48
+ class GDALDriver;
49
+ class GDALRasterAttributeTable;
50
+ class GDALProxyDataset;
51
+ class GDALProxyRasterBand;
52
+ class GDALAsyncReader;
53
+ class GDALRelationship;
54
+
55
+ /* -------------------------------------------------------------------- */
56
+ /* Pull in the public declarations. This gets the C apis, and */
57
+ /* also various constants. However, we will still get to */
58
+ /* provide the real class definitions for the GDAL classes. */
59
+ /* -------------------------------------------------------------------- */
60
+
61
+ #include "gdal.h"
62
+ #include "gdal_frmts.h"
63
+ #include "gdalsubdatasetinfo.h"
64
+ #include "cpl_vsi.h"
65
+ #include "cpl_conv.h"
66
+ #include "cpl_string.h"
67
+ #include "cpl_minixml.h"
68
+ #include "cpl_multiproc.h"
69
+ #include "cpl_atomic_ops.h"
70
+
71
+ #include <stdarg.h>
72
+
73
+ #include <cmath>
74
+ #include <cstdint>
75
+ #include <iterator>
76
+ #include <limits>
77
+ #include <map>
78
+ #include <memory>
79
+ #include <set>
80
+ #include <vector>
81
+
82
+ #include "ogr_core.h"
83
+ #include "ogr_feature.h"
84
+
85
+ //! @cond Doxygen_Suppress
86
+ #define GMO_VALID 0x0001
87
+ #define GMO_IGNORE_UNIMPLEMENTED 0x0002
88
+ #define GMO_SUPPORT_MD 0x0004
89
+ #define GMO_SUPPORT_MDMD 0x0008
90
+ #define GMO_MD_DIRTY 0x0010
91
+ #define GMO_PAM_CLASS 0x0020
92
+
93
+ //! @endcond
94
+
95
+ /************************************************************************/
96
+ /* GDALMultiDomainMetadata */
97
+ /************************************************************************/
98
+
99
+ //! @cond Doxygen_Suppress
100
+ class CPL_DLL GDALMultiDomainMetadata
101
+ {
102
+ private:
103
+ CPLStringList aosDomainList{};
104
+
105
+ struct Comparator
106
+ {
107
+ bool operator()(const char *a, const char *b) const
108
+ {
109
+ return STRCASECMP(a, b) < 0;
110
+ }
111
+ };
112
+
113
+ std::map<const char *, CPLStringList, Comparator> oMetadata{};
114
+
115
+ public:
116
+ GDALMultiDomainMetadata();
117
+ ~GDALMultiDomainMetadata();
118
+
119
+ int XMLInit(const CPLXMLNode *psMetadata, int bMerge);
120
+ CPLXMLNode *Serialize() const;
121
+
122
+ CSLConstList GetDomainList() const
123
+ {
124
+ return aosDomainList.List();
125
+ }
126
+
127
+ char **GetMetadata(const char *pszDomain = "");
128
+ CPLErr SetMetadata(CSLConstList papszMetadata, const char *pszDomain = "");
129
+ const char *GetMetadataItem(const char *pszName,
130
+ const char *pszDomain = "");
131
+ CPLErr SetMetadataItem(const char *pszName, const char *pszValue,
132
+ const char *pszDomain = "");
133
+
134
+ void Clear();
135
+
136
+ inline void clear()
137
+ {
138
+ Clear();
139
+ }
140
+
141
+ private:
142
+ CPL_DISALLOW_COPY_ASSIGN(GDALMultiDomainMetadata)
143
+ };
144
+
145
+ //! @endcond
146
+
147
+ /* ******************************************************************** */
148
+ /* GDALMajorObject */
149
+ /* */
150
+ /* Base class providing metadata, description and other */
151
+ /* services shared by major objects. */
152
+ /* ******************************************************************** */
153
+
154
+ /** Object with metadata. */
155
+ class CPL_DLL GDALMajorObject
156
+ {
157
+ protected:
158
+ //! @cond Doxygen_Suppress
159
+ int nFlags; // GMO_* flags.
160
+ CPLString sDescription{};
161
+ GDALMultiDomainMetadata oMDMD{};
162
+
163
+ //! @endcond
164
+
165
+ char **BuildMetadataDomainList(char **papszList, int bCheckNonEmpty,
166
+ ...) CPL_NULL_TERMINATED;
167
+
168
+ public:
169
+ GDALMajorObject();
170
+ virtual ~GDALMajorObject();
171
+
172
+ int GetMOFlags() const;
173
+ void SetMOFlags(int nFlagsIn);
174
+
175
+ virtual const char *GetDescription() const;
176
+ virtual void SetDescription(const char *);
177
+
178
+ virtual char **GetMetadataDomainList();
179
+
180
+ virtual char **GetMetadata(const char *pszDomain = "");
181
+ virtual CPLErr SetMetadata(char **papszMetadata,
182
+ const char *pszDomain = "");
183
+ virtual const char *GetMetadataItem(const char *pszName,
184
+ const char *pszDomain = "");
185
+ virtual CPLErr SetMetadataItem(const char *pszName, const char *pszValue,
186
+ const char *pszDomain = "");
187
+
188
+ /** Convert a GDALMajorObject* to a GDALMajorObjectH.
189
+ * @since GDAL 2.3
190
+ */
191
+ static inline GDALMajorObjectH ToHandle(GDALMajorObject *poMajorObject)
192
+ {
193
+ return static_cast<GDALMajorObjectH>(poMajorObject);
194
+ }
195
+
196
+ /** Convert a GDALMajorObjectH to a GDALMajorObject*.
197
+ * @since GDAL 2.3
198
+ */
199
+ static inline GDALMajorObject *FromHandle(GDALMajorObjectH hMajorObject)
200
+ {
201
+ return static_cast<GDALMajorObject *>(hMajorObject);
202
+ }
203
+ };
204
+
205
+ /* ******************************************************************** */
206
+ /* GDALDefaultOverviews */
207
+ /* ******************************************************************** */
208
+
209
+ //! @cond Doxygen_Suppress
210
+ class CPL_DLL GDALDefaultOverviews
211
+ {
212
+ friend class GDALDataset;
213
+
214
+ GDALDataset *poDS;
215
+ GDALDataset *poODS;
216
+
217
+ CPLString osOvrFilename{};
218
+
219
+ bool bOvrIsAux;
220
+
221
+ bool bCheckedForMask;
222
+ bool bOwnMaskDS;
223
+ GDALDataset *poMaskDS;
224
+
225
+ // For "overview datasets" we record base level info so we can
226
+ // find our way back to get overview masks.
227
+ GDALDataset *poBaseDS;
228
+
229
+ // Stuff for deferred initialize/overviewscans.
230
+ bool bCheckedForOverviews;
231
+ void OverviewScan();
232
+ char *pszInitName;
233
+ bool bInitNameIsOVR;
234
+ char **papszInitSiblingFiles;
235
+
236
+ public:
237
+ GDALDefaultOverviews();
238
+ ~GDALDefaultOverviews();
239
+
240
+ void Initialize(GDALDataset *poDSIn, const char *pszName = nullptr,
241
+ char **papszSiblingFiles = nullptr, int bNameIsOVR = FALSE);
242
+
243
+ void TransferSiblingFiles(char **papszSiblingFiles);
244
+
245
+ int IsInitialized();
246
+
247
+ int CloseDependentDatasets();
248
+
249
+ // Overview Related
250
+
251
+ int GetOverviewCount(int nBand);
252
+ GDALRasterBand *GetOverview(int nBand, int iOverview);
253
+
254
+ CPLErr BuildOverviews(const char *pszBasename, const char *pszResampling,
255
+ int nOverviews, const int *panOverviewList,
256
+ int nBands, const int *panBandList,
257
+ GDALProgressFunc pfnProgress, void *pProgressData,
258
+ CSLConstList papszOptions);
259
+
260
+ CPLErr BuildOverviewsSubDataset(const char *pszPhysicalFile,
261
+ const char *pszResampling, int nOverviews,
262
+ const int *panOverviewList, int nBands,
263
+ const int *panBandList,
264
+ GDALProgressFunc pfnProgress,
265
+ void *pProgressData,
266
+ CSLConstList papszOptions);
267
+
268
+ CPLErr BuildOverviewsMask(const char *pszResampling, int nOverviews,
269
+ const int *panOverviewList,
270
+ GDALProgressFunc pfnProgress, void *pProgressData,
271
+ CSLConstList papszOptions);
272
+
273
+ CPLErr CleanOverviews();
274
+
275
+ // Mask Related
276
+
277
+ CPLErr CreateMaskBand(int nFlags, int nBand = -1);
278
+ GDALRasterBand *GetMaskBand(int nBand);
279
+ int GetMaskFlags(int nBand);
280
+
281
+ int HaveMaskFile(char **papszSiblings = nullptr,
282
+ const char *pszBasename = nullptr);
283
+
284
+ char **GetSiblingFiles()
285
+ {
286
+ return papszInitSiblingFiles;
287
+ }
288
+
289
+ private:
290
+ CPL_DISALLOW_COPY_ASSIGN(GDALDefaultOverviews)
291
+ };
292
+
293
+ //! @endcond
294
+
295
+ /* ******************************************************************** */
296
+ /* GDALOpenInfo */
297
+ /* ******************************************************************** */
298
+
299
+ /** Class for dataset open functions. */
300
+ class CPL_DLL GDALOpenInfo
301
+ {
302
+ bool bHasGotSiblingFiles;
303
+ char **papszSiblingFiles;
304
+ int nHeaderBytesTried;
305
+
306
+ public:
307
+ GDALOpenInfo(const char *pszFile, int nOpenFlagsIn,
308
+ const char *const *papszSiblingFiles = nullptr);
309
+ ~GDALOpenInfo(void);
310
+
311
+ /** Filename */
312
+ char *pszFilename;
313
+ /** Open options */
314
+ char **papszOpenOptions;
315
+
316
+ /** Access flag */
317
+ GDALAccess eAccess;
318
+ /** Open flags */
319
+ int nOpenFlags;
320
+
321
+ /** Whether stat()'ing the file was successful */
322
+ int bStatOK;
323
+ /** Whether the file is a directory */
324
+ int bIsDirectory;
325
+
326
+ /** Pointer to the file */
327
+ VSILFILE *fpL;
328
+
329
+ /** Number of bytes in pabyHeader */
330
+ int nHeaderBytes;
331
+ /** Buffer with first bytes of the file */
332
+ GByte *pabyHeader;
333
+
334
+ /** Allowed drivers (NULL for all) */
335
+ const char *const *papszAllowedDrivers;
336
+
337
+ int TryToIngest(int nBytes);
338
+ char **GetSiblingFiles();
339
+ char **StealSiblingFiles();
340
+ bool AreSiblingFilesLoaded() const;
341
+
342
+ private:
343
+ CPL_DISALLOW_COPY_ASSIGN(GDALOpenInfo)
344
+ };
345
+
346
+ /* ******************************************************************** */
347
+ /* gdal::GCP */
348
+ /* ******************************************************************** */
349
+
350
+ namespace gdal
351
+ {
352
+ /** C++ wrapper over the C GDAL_GCP structure.
353
+ *
354
+ * It has the same binary layout, and thus a gdal::GCP pointer can be cast as a
355
+ * GDAL_GCP pointer.
356
+ *
357
+ * @since 3.9
358
+ */
359
+ class CPL_DLL GCP
360
+ {
361
+ public:
362
+ explicit GCP(const char *pszId = "", const char *pszInfo = "",
363
+ double dfPixel = 0, double dfLine = 0, double dfX = 0,
364
+ double dfY = 0, double dfZ = 0);
365
+ ~GCP();
366
+ GCP(const GCP &);
367
+ explicit GCP(const GDAL_GCP &other);
368
+ GCP &operator=(const GCP &);
369
+ GCP(GCP &&);
370
+ GCP &operator=(GCP &&);
371
+
372
+ /** Returns the "id" member. */
373
+ inline const char *Id() const
374
+ {
375
+ return gcp.pszId;
376
+ }
377
+
378
+ void SetId(const char *pszId);
379
+
380
+ /** Returns the "info" member. */
381
+ inline const char *Info() const
382
+ {
383
+ return gcp.pszInfo;
384
+ }
385
+
386
+ void SetInfo(const char *pszInfo);
387
+
388
+ /** Returns the "pixel" member. */
389
+ inline double Pixel() const
390
+ {
391
+ return gcp.dfGCPPixel;
392
+ }
393
+
394
+ /** Returns a reference to the "pixel" member. */
395
+ inline double &Pixel()
396
+ {
397
+ return gcp.dfGCPPixel;
398
+ }
399
+
400
+ /** Returns the "line" member. */
401
+ inline double Line() const
402
+ {
403
+ return gcp.dfGCPLine;
404
+ }
405
+
406
+ /** Returns a reference to the "line" member. */
407
+ inline double &Line()
408
+ {
409
+ return gcp.dfGCPLine;
410
+ }
411
+
412
+ /** Returns the "X" member. */
413
+ inline double X() const
414
+ {
415
+ return gcp.dfGCPX;
416
+ }
417
+
418
+ /** Returns a reference to the "X" member. */
419
+ inline double &X()
420
+ {
421
+ return gcp.dfGCPX;
422
+ }
423
+
424
+ /** Returns the "Y" member. */
425
+ inline double Y() const
426
+ {
427
+ return gcp.dfGCPY;
428
+ }
429
+
430
+ /** Returns a reference to the "Y" member. */
431
+ inline double &Y()
432
+ {
433
+ return gcp.dfGCPY;
434
+ }
435
+
436
+ /** Returns the "Z" member. */
437
+ inline double Z() const
438
+ {
439
+ return gcp.dfGCPZ;
440
+ }
441
+
442
+ /** Returns a reference to the "Z" member. */
443
+ inline double &Z()
444
+ {
445
+ return gcp.dfGCPZ;
446
+ }
447
+
448
+ /** Casts as a C GDAL_GCP pointer */
449
+ inline const GDAL_GCP *c_ptr() const
450
+ {
451
+ return &gcp;
452
+ }
453
+
454
+ static const GDAL_GCP *c_ptr(const std::vector<GCP> &asGCPs);
455
+
456
+ static std::vector<GCP> fromC(const GDAL_GCP *pasGCPList, int nGCPCount);
457
+
458
+ private:
459
+ GDAL_GCP gcp;
460
+ };
461
+
462
+ } /* namespace gdal */
463
+
464
+ /* ******************************************************************** */
465
+ /* GDALDataset */
466
+ /* ******************************************************************** */
467
+
468
+ class OGRLayer;
469
+ class OGRGeometry;
470
+ class OGRSpatialReference;
471
+ class OGRStyleTable;
472
+ class swq_select;
473
+ class swq_select_parse_options;
474
+ class GDALGroup;
475
+
476
+ //! @cond Doxygen_Suppress
477
+ typedef struct GDALSQLParseInfo GDALSQLParseInfo;
478
+ //! @endcond
479
+
480
+ //! @cond Doxygen_Suppress
481
+ #ifdef GDAL_COMPILATION
482
+ #define OPTIONAL_OUTSIDE_GDAL(val)
483
+ #else
484
+ #define OPTIONAL_OUTSIDE_GDAL(val) = val
485
+ #endif
486
+ //! @endcond
487
+
488
+ /** A set of associated raster bands, usually from one file. */
489
+ class CPL_DLL GDALDataset : public GDALMajorObject
490
+ {
491
+ friend GDALDatasetH CPL_STDCALL
492
+ GDALOpenEx(const char *pszFilename, unsigned int nOpenFlags,
493
+ const char *const *papszAllowedDrivers,
494
+ const char *const *papszOpenOptions,
495
+ const char *const *papszSiblingFiles);
496
+ friend CPLErr CPL_STDCALL GDALClose(GDALDatasetH hDS);
497
+
498
+ friend class GDALDriver;
499
+ friend class GDALDefaultOverviews;
500
+ friend class GDALProxyDataset;
501
+ friend class GDALDriverManager;
502
+
503
+ CPL_INTERNAL void AddToDatasetOpenList();
504
+
505
+ CPL_INTERNAL void UnregisterFromSharedDataset();
506
+
507
+ CPL_INTERNAL static void ReportErrorV(const char *pszDSName,
508
+ CPLErr eErrClass, CPLErrorNum err_no,
509
+ const char *fmt, va_list args);
510
+
511
+ protected:
512
+ //! @cond Doxygen_Suppress
513
+ GDALDriver *poDriver = nullptr;
514
+ GDALAccess eAccess = GA_ReadOnly;
515
+
516
+ // Stored raster information.
517
+ int nRasterXSize = 512;
518
+ int nRasterYSize = 512;
519
+ int nBands = 0;
520
+ GDALRasterBand **papoBands = nullptr;
521
+
522
+ static constexpr int OPEN_FLAGS_CLOSED = -1;
523
+ int nOpenFlags =
524
+ 0; // set to OPEN_FLAGS_CLOSED after Close() has been called
525
+
526
+ int nRefCount = 1;
527
+ bool bForceCachedIO = false;
528
+ bool bShared = false;
529
+ bool bIsInternal = true;
530
+ bool bSuppressOnClose = false;
531
+
532
+ mutable std::map<std::string, std::unique_ptr<OGRFieldDomain>>
533
+ m_oMapFieldDomains{};
534
+
535
+ GDALDataset(void);
536
+ explicit GDALDataset(int bForceCachedIO);
537
+
538
+ void RasterInitialize(int, int);
539
+ void SetBand(int, GDALRasterBand *);
540
+ void SetBand(int nNewBand, std::unique_ptr<GDALRasterBand> poBand);
541
+
542
+ GDALDefaultOverviews oOvManager{};
543
+
544
+ virtual CPLErr IBuildOverviews(const char *, int, const int *, int,
545
+ const int *, GDALProgressFunc, void *,
546
+ CSLConstList papszOptions);
547
+
548
+ virtual CPLErr
549
+ IRasterIO(GDALRWFlag, int, int, int, int, void *, int, int, GDALDataType,
550
+ int, int *, GSpacing, GSpacing, GSpacing,
551
+ GDALRasterIOExtraArg *psExtraArg) CPL_WARN_UNUSED_RESULT;
552
+
553
+ CPLErr
554
+ BlockBasedRasterIO(GDALRWFlag, int, int, int, int, void *, int, int,
555
+ GDALDataType, int, int *, GSpacing, GSpacing, GSpacing,
556
+ GDALRasterIOExtraArg *psExtraArg) CPL_WARN_UNUSED_RESULT;
557
+ CPLErr BlockBasedFlushCache(bool bAtClosing);
558
+
559
+ CPLErr
560
+ BandBasedRasterIO(GDALRWFlag eRWFlag, int nXOff, int nYOff, int nXSize,
561
+ int nYSize, void *pData, int nBufXSize, int nBufYSize,
562
+ GDALDataType eBufType, int nBandCount, int *panBandMap,
563
+ GSpacing nPixelSpace, GSpacing nLineSpace,
564
+ GSpacing nBandSpace,
565
+ GDALRasterIOExtraArg *psExtraArg) CPL_WARN_UNUSED_RESULT;
566
+
567
+ CPLErr
568
+ RasterIOResampled(GDALRWFlag eRWFlag, int nXOff, int nYOff, int nXSize,
569
+ int nYSize, void *pData, int nBufXSize, int nBufYSize,
570
+ GDALDataType eBufType, int nBandCount, int *panBandMap,
571
+ GSpacing nPixelSpace, GSpacing nLineSpace,
572
+ GSpacing nBandSpace,
573
+ GDALRasterIOExtraArg *psExtraArg) CPL_WARN_UNUSED_RESULT;
574
+
575
+ CPLErr ValidateRasterIOOrAdviseReadParameters(
576
+ const char *pszCallingFunc, int *pbStopProcessingOnCENone, int nXOff,
577
+ int nYOff, int nXSize, int nYSize, int nBufXSize, int nBufYSize,
578
+ int nBandCount, int *panBandMap);
579
+
580
+ CPLErr TryOverviewRasterIO(GDALRWFlag eRWFlag, int nXOff, int nYOff,
581
+ int nXSize, int nYSize, void *pData,
582
+ int nBufXSize, int nBufYSize,
583
+ GDALDataType eBufType, int nBandCount,
584
+ int *panBandMap, GSpacing nPixelSpace,
585
+ GSpacing nLineSpace, GSpacing nBandSpace,
586
+ GDALRasterIOExtraArg *psExtraArg, int *pbTried);
587
+
588
+ void ShareLockWithParentDataset(GDALDataset *poParentDataset);
589
+
590
+ //! @endcond
591
+
592
+ void CleanupPostFileClosing();
593
+
594
+ virtual int CloseDependentDatasets();
595
+ //! @cond Doxygen_Suppress
596
+ int ValidateLayerCreationOptions(const char *const *papszLCO);
597
+
598
+ char **papszOpenOptions = nullptr;
599
+
600
+ friend class GDALRasterBand;
601
+
602
+ // The below methods related to read write mutex are fragile logic, and
603
+ // should not be used by out-of-tree code if possible.
604
+ int EnterReadWrite(GDALRWFlag eRWFlag);
605
+ void LeaveReadWrite();
606
+ void InitRWLock();
607
+
608
+ void TemporarilyDropReadWriteLock();
609
+ void ReacquireReadWriteLock();
610
+
611
+ void DisableReadWriteMutex();
612
+
613
+ int AcquireMutex();
614
+ void ReleaseMutex();
615
+
616
+ bool IsAllBands(int nBandCount, const int *panBandList) const;
617
+ //! @endcond
618
+
619
+ public:
620
+ ~GDALDataset() override;
621
+
622
+ virtual CPLErr Close();
623
+
624
+ int GetRasterXSize() const;
625
+ int GetRasterYSize() const;
626
+ int GetRasterCount() const;
627
+ GDALRasterBand *GetRasterBand(int);
628
+ const GDALRasterBand *GetRasterBand(int) const;
629
+
630
+ /**
631
+ * @brief SetQueryLoggerFunc
632
+ * @param pfnQueryLoggerFuncIn query logger function callback
633
+ * @param poQueryLoggerArgIn arguments passed to the query logger function
634
+ * @return true on success
635
+ */
636
+ virtual bool SetQueryLoggerFunc(GDALQueryLoggerFunc pfnQueryLoggerFuncIn,
637
+ void *poQueryLoggerArgIn);
638
+
639
+ /** Class returned by GetBands() that act as a container for raster bands.
640
+ */
641
+ class CPL_DLL Bands
642
+ {
643
+ private:
644
+ friend class GDALDataset;
645
+ GDALDataset *m_poSelf;
646
+
647
+ CPL_INTERNAL explicit Bands(GDALDataset *poSelf) : m_poSelf(poSelf)
648
+ {
649
+ }
650
+
651
+ class CPL_DLL Iterator
652
+ {
653
+ struct Private;
654
+ std::unique_ptr<Private> m_poPrivate;
655
+
656
+ public:
657
+ Iterator(GDALDataset *poDS, bool bStart);
658
+ Iterator(const Iterator &oOther); // declared but not defined.
659
+ // Needed for gcc 5.4 at least
660
+ Iterator(Iterator &&oOther) noexcept; // declared but not defined.
661
+ // Needed for gcc 5.4 at least
662
+ ~Iterator();
663
+ GDALRasterBand *operator*();
664
+ Iterator &operator++();
665
+ bool operator!=(const Iterator &it) const;
666
+ };
667
+
668
+ public:
669
+ const Iterator begin() const;
670
+
671
+ const Iterator end() const;
672
+
673
+ size_t size() const;
674
+
675
+ GDALRasterBand *operator[](int iBand);
676
+ GDALRasterBand *operator[](size_t iBand);
677
+ };
678
+
679
+ Bands GetBands();
680
+
681
+ virtual CPLErr FlushCache(bool bAtClosing = false);
682
+ virtual CPLErr DropCache();
683
+
684
+ virtual GIntBig GetEstimatedRAMUsage();
685
+
686
+ virtual const OGRSpatialReference *GetSpatialRef() const;
687
+ virtual CPLErr SetSpatialRef(const OGRSpatialReference *poSRS);
688
+
689
+ // Compatibility layer
690
+ const char *GetProjectionRef(void) const;
691
+ CPLErr SetProjection(const char *pszProjection);
692
+
693
+ virtual CPLErr GetGeoTransform(double *padfTransform);
694
+ virtual CPLErr SetGeoTransform(double *padfTransform);
695
+
696
+ virtual CPLErr AddBand(GDALDataType eType, char **papszOptions = nullptr);
697
+
698
+ virtual void *GetInternalHandle(const char *pszHandleName);
699
+ virtual GDALDriver *GetDriver(void);
700
+ virtual char **GetFileList(void);
701
+
702
+ virtual const char *GetDriverName();
703
+
704
+ virtual const OGRSpatialReference *GetGCPSpatialRef() const;
705
+ virtual int GetGCPCount();
706
+ virtual const GDAL_GCP *GetGCPs();
707
+ virtual CPLErr SetGCPs(int nGCPCount, const GDAL_GCP *pasGCPList,
708
+ const OGRSpatialReference *poGCP_SRS);
709
+
710
+ // Compatibility layer
711
+ const char *GetGCPProjection();
712
+ CPLErr SetGCPs(int nGCPCount, const GDAL_GCP *pasGCPList,
713
+ const char *pszGCPProjection);
714
+
715
+ virtual CPLErr AdviseRead(int nXOff, int nYOff, int nXSize, int nYSize,
716
+ int nBufXSize, int nBufYSize, GDALDataType eDT,
717
+ int nBandCount, int *panBandList,
718
+ char **papszOptions);
719
+
720
+ virtual CPLErr CreateMaskBand(int nFlagsIn);
721
+
722
+ virtual GDALAsyncReader *
723
+ BeginAsyncReader(int nXOff, int nYOff, int nXSize, int nYSize, void *pBuf,
724
+ int nBufXSize, int nBufYSize, GDALDataType eBufType,
725
+ int nBandCount, int *panBandMap, int nPixelSpace,
726
+ int nLineSpace, int nBandSpace, char **papszOptions);
727
+ virtual void EndAsyncReader(GDALAsyncReader *);
728
+
729
+ //! @cond Doxygen_Suppress
730
+ struct RawBinaryLayout
731
+ {
732
+ enum class Interleaving
733
+ {
734
+ UNKNOWN,
735
+ BIP,
736
+ BIL,
737
+ BSQ
738
+ };
739
+ std::string osRawFilename{};
740
+ Interleaving eInterleaving = Interleaving::UNKNOWN;
741
+ GDALDataType eDataType = GDT_Unknown;
742
+ bool bLittleEndianOrder = false;
743
+
744
+ vsi_l_offset nImageOffset = 0;
745
+ GIntBig nPixelOffset = 0;
746
+ GIntBig nLineOffset = 0;
747
+ GIntBig nBandOffset = 0;
748
+ };
749
+
750
+ virtual bool GetRawBinaryLayout(RawBinaryLayout &);
751
+ //! @endcond
752
+
753
+ CPLErr RasterIO(GDALRWFlag, int, int, int, int, void *, int, int,
754
+ GDALDataType, int, int *, GSpacing, GSpacing, GSpacing,
755
+ GDALRasterIOExtraArg *psExtraArg
756
+ #ifndef DOXYGEN_SKIP
757
+ OPTIONAL_OUTSIDE_GDAL(nullptr)
758
+ #endif
759
+ ) CPL_WARN_UNUSED_RESULT;
760
+
761
+ virtual CPLStringList GetCompressionFormats(int nXOff, int nYOff,
762
+ int nXSize, int nYSize,
763
+ int nBandCount,
764
+ const int *panBandList);
765
+ virtual CPLErr ReadCompressedData(const char *pszFormat, int nXOff,
766
+ int nYOff, int nXSize, int nYSize,
767
+ int nBands, const int *panBandList,
768
+ void **ppBuffer, size_t *pnBufferSize,
769
+ char **ppszDetailedFormat);
770
+
771
+ int Reference();
772
+ int Dereference();
773
+ int ReleaseRef();
774
+
775
+ /** Return access mode.
776
+ * @return access mode.
777
+ */
778
+ GDALAccess GetAccess() const
779
+ {
780
+ return eAccess;
781
+ }
782
+
783
+ int GetShared() const;
784
+ void MarkAsShared();
785
+
786
+ void MarkSuppressOnClose();
787
+ void UnMarkSuppressOnClose();
788
+
789
+ /** Return MarkSuppressOnClose flag.
790
+ * @return MarkSuppressOnClose flag.
791
+ */
792
+ bool IsMarkedSuppressOnClose()
793
+ {
794
+ return bSuppressOnClose;
795
+ }
796
+
797
+ /** Return open options.
798
+ * @return open options.
799
+ */
800
+ char **GetOpenOptions()
801
+ {
802
+ return papszOpenOptions;
803
+ }
804
+
805
+ static GDALDataset **GetOpenDatasets(int *pnDatasetCount);
806
+
807
+ CPLErr BuildOverviews(const char *, int, const int *, int, const int *,
808
+ GDALProgressFunc, void *,
809
+ CSLConstList papszOptions
810
+ #ifndef DOXYGEN_SKIP
811
+ OPTIONAL_OUTSIDE_GDAL(nullptr)
812
+ #endif
813
+ );
814
+
815
+ #ifndef DOXYGEN_XML
816
+ void ReportError(CPLErr eErrClass, CPLErrorNum err_no, const char *fmt,
817
+ ...) const CPL_PRINT_FUNC_FORMAT(4, 5);
818
+
819
+ static void ReportError(const char *pszDSName, CPLErr eErrClass,
820
+ CPLErrorNum err_no, const char *fmt, ...)
821
+ CPL_PRINT_FUNC_FORMAT(4, 5);
822
+ #endif
823
+
824
+ char **GetMetadata(const char *pszDomain = "") override;
825
+
826
+ // Only defined when Doxygen enabled
827
+ #ifdef DOXYGEN_SKIP
828
+ CPLErr SetMetadata(char **papszMetadata, const char *pszDomain) override;
829
+ CPLErr SetMetadataItem(const char *pszName, const char *pszValue,
830
+ const char *pszDomain) override;
831
+ #endif
832
+
833
+ char **GetMetadataDomainList() override;
834
+
835
+ virtual void ClearStatistics();
836
+
837
+ /** Convert a GDALDataset* to a GDALDatasetH.
838
+ * @since GDAL 2.3
839
+ */
840
+ static inline GDALDatasetH ToHandle(GDALDataset *poDS)
841
+ {
842
+ return static_cast<GDALDatasetH>(poDS);
843
+ }
844
+
845
+ /** Convert a GDALDatasetH to a GDALDataset*.
846
+ * @since GDAL 2.3
847
+ */
848
+ static inline GDALDataset *FromHandle(GDALDatasetH hDS)
849
+ {
850
+ return static_cast<GDALDataset *>(hDS);
851
+ }
852
+
853
+ /** @see GDALOpenEx().
854
+ * @since GDAL 2.3
855
+ */
856
+ static GDALDataset *Open(const char *pszFilename,
857
+ unsigned int nOpenFlags = 0,
858
+ const char *const *papszAllowedDrivers = nullptr,
859
+ const char *const *papszOpenOptions = nullptr,
860
+ const char *const *papszSiblingFiles = nullptr)
861
+ {
862
+ return FromHandle(GDALOpenEx(pszFilename, nOpenFlags,
863
+ papszAllowedDrivers, papszOpenOptions,
864
+ papszSiblingFiles));
865
+ }
866
+
867
+ /** Object returned by GetFeatures() iterators */
868
+ struct FeatureLayerPair
869
+ {
870
+ /** Unique pointer to a OGRFeature. */
871
+ OGRFeatureUniquePtr feature{};
872
+
873
+ /** Layer to which the feature belongs to. */
874
+ OGRLayer *layer = nullptr;
875
+ };
876
+
877
+ //! @cond Doxygen_Suppress
878
+ // SetEnableOverviews() only to be used by GDALOverviewDataset
879
+ void SetEnableOverviews(bool bEnable);
880
+
881
+ // Only to be used by driver's GetOverviewCount() method.
882
+ bool AreOverviewsEnabled() const;
883
+ //! @endcond
884
+
885
+ private:
886
+ class Private;
887
+ Private *m_poPrivate;
888
+
889
+ CPL_INTERNAL OGRLayer *BuildLayerFromSelectInfo(
890
+ swq_select *psSelectInfo, OGRGeometry *poSpatialFilter,
891
+ const char *pszDialect, swq_select_parse_options *poSelectParseOptions);
892
+ CPLStringList oDerivedMetadataList{};
893
+
894
+ public:
895
+ virtual int GetLayerCount();
896
+ virtual OGRLayer *GetLayer(int iLayer);
897
+
898
+ virtual bool IsLayerPrivate(int iLayer) const;
899
+
900
+ /** Class returned by GetLayers() that acts as a range of layers.
901
+ * @since GDAL 2.3
902
+ */
903
+ class CPL_DLL Layers
904
+ {
905
+ private:
906
+ friend class GDALDataset;
907
+ GDALDataset *m_poSelf;
908
+
909
+ CPL_INTERNAL explicit Layers(GDALDataset *poSelf) : m_poSelf(poSelf)
910
+ {
911
+ }
912
+
913
+ public:
914
+ /** Layer iterator.
915
+ * @since GDAL 2.3
916
+ */
917
+ class CPL_DLL Iterator
918
+ {
919
+ struct Private;
920
+ std::unique_ptr<Private> m_poPrivate;
921
+
922
+ public:
923
+ using value_type = OGRLayer *; /**< value_type */
924
+ using reference = OGRLayer *; /**< reference */
925
+ using difference_type = void; /**< difference_type */
926
+ using pointer = void; /**< pointer */
927
+ using iterator_category =
928
+ std::input_iterator_tag; /**< iterator_category */
929
+
930
+ Iterator(); /**< Default constructor */
931
+ Iterator(GDALDataset *poDS, bool bStart); /**< Constructor */
932
+ Iterator(const Iterator &oOther); /**< Copy constructor */
933
+ Iterator(Iterator &&oOther) noexcept; /**< Move constructor */
934
+ ~Iterator(); /**< Destructor */
935
+
936
+ Iterator &
937
+ operator=(const Iterator &oOther); /**< Assignment operator */
938
+ Iterator &operator=(
939
+ Iterator &&oOther) noexcept; /**< Move assignment operator */
940
+
941
+ OGRLayer *operator*() const; /**< Dereference operator */
942
+ Iterator &operator++(); /**< Pre-increment operator */
943
+ Iterator operator++(int); /**< Post-increment operator */
944
+ bool operator!=(const Iterator &it)
945
+ const; /**< Difference comparison operator */
946
+ };
947
+
948
+ Iterator begin() const;
949
+ Iterator end() const;
950
+
951
+ size_t size() const;
952
+
953
+ OGRLayer *operator[](int iLayer);
954
+ OGRLayer *operator[](size_t iLayer);
955
+ OGRLayer *operator[](const char *pszLayername);
956
+ };
957
+
958
+ Layers GetLayers();
959
+
960
+ virtual OGRLayer *GetLayerByName(const char *);
961
+ virtual OGRErr DeleteLayer(int iLayer);
962
+
963
+ virtual void ResetReading();
964
+ virtual OGRFeature *GetNextFeature(OGRLayer **ppoBelongingLayer,
965
+ double *pdfProgressPct,
966
+ GDALProgressFunc pfnProgress,
967
+ void *pProgressData);
968
+
969
+ /** Class returned by GetFeatures() that act as a container for vector
970
+ * features. */
971
+ class CPL_DLL Features
972
+ {
973
+ private:
974
+ friend class GDALDataset;
975
+ GDALDataset *m_poSelf;
976
+
977
+ CPL_INTERNAL explicit Features(GDALDataset *poSelf) : m_poSelf(poSelf)
978
+ {
979
+ }
980
+
981
+ class CPL_DLL Iterator
982
+ {
983
+ struct Private;
984
+ std::unique_ptr<Private> m_poPrivate;
985
+
986
+ public:
987
+ Iterator(GDALDataset *poDS, bool bStart);
988
+ Iterator(const Iterator &oOther); // declared but not defined.
989
+ // Needed for gcc 5.4 at least
990
+ Iterator(Iterator &&oOther) noexcept; // declared but not defined.
991
+ // Needed for gcc 5.4 at least
992
+ ~Iterator();
993
+ const FeatureLayerPair &operator*() const;
994
+ Iterator &operator++();
995
+ bool operator!=(const Iterator &it) const;
996
+ };
997
+
998
+ public:
999
+ const Iterator begin() const;
1000
+
1001
+ const Iterator end() const;
1002
+ };
1003
+
1004
+ Features GetFeatures();
1005
+
1006
+ virtual int TestCapability(const char *);
1007
+
1008
+ virtual std::vector<std::string>
1009
+ GetFieldDomainNames(CSLConstList papszOptions = nullptr) const;
1010
+
1011
+ virtual const OGRFieldDomain *GetFieldDomain(const std::string &name) const;
1012
+
1013
+ virtual bool AddFieldDomain(std::unique_ptr<OGRFieldDomain> &&domain,
1014
+ std::string &failureReason);
1015
+
1016
+ virtual bool DeleteFieldDomain(const std::string &name,
1017
+ std::string &failureReason);
1018
+
1019
+ virtual bool UpdateFieldDomain(std::unique_ptr<OGRFieldDomain> &&domain,
1020
+ std::string &failureReason);
1021
+
1022
+ virtual std::vector<std::string>
1023
+ GetRelationshipNames(CSLConstList papszOptions = nullptr) const;
1024
+
1025
+ virtual const GDALRelationship *
1026
+ GetRelationship(const std::string &name) const;
1027
+
1028
+ virtual bool
1029
+ AddRelationship(std::unique_ptr<GDALRelationship> &&relationship,
1030
+ std::string &failureReason);
1031
+
1032
+ virtual bool DeleteRelationship(const std::string &name,
1033
+ std::string &failureReason);
1034
+
1035
+ virtual bool
1036
+ UpdateRelationship(std::unique_ptr<GDALRelationship> &&relationship,
1037
+ std::string &failureReason);
1038
+
1039
+ //! @cond Doxygen_Suppress
1040
+ OGRLayer *CreateLayer(const char *pszName);
1041
+
1042
+ OGRLayer *CreateLayer(const char *pszName, std::nullptr_t);
1043
+ //! @endcond
1044
+
1045
+ OGRLayer *CreateLayer(const char *pszName,
1046
+ const OGRSpatialReference *poSpatialRef,
1047
+ OGRwkbGeometryType eGType = wkbUnknown,
1048
+ CSLConstList papszOptions = nullptr);
1049
+
1050
+ OGRLayer *CreateLayer(const char *pszName,
1051
+ const OGRGeomFieldDefn *poGeomFieldDefn,
1052
+ CSLConstList papszOptions = nullptr);
1053
+
1054
+ virtual OGRLayer *CopyLayer(OGRLayer *poSrcLayer, const char *pszNewName,
1055
+ char **papszOptions = nullptr);
1056
+
1057
+ virtual OGRStyleTable *GetStyleTable();
1058
+ virtual void SetStyleTableDirectly(OGRStyleTable *poStyleTable);
1059
+
1060
+ virtual void SetStyleTable(OGRStyleTable *poStyleTable);
1061
+
1062
+ virtual OGRLayer *ExecuteSQL(const char *pszStatement,
1063
+ OGRGeometry *poSpatialFilter,
1064
+ const char *pszDialect);
1065
+ virtual void ReleaseResultSet(OGRLayer *poResultsSet);
1066
+ virtual OGRErr AbortSQL();
1067
+
1068
+ int GetRefCount() const;
1069
+ int GetSummaryRefCount() const;
1070
+ OGRErr Release();
1071
+
1072
+ virtual OGRErr StartTransaction(int bForce = FALSE);
1073
+ virtual OGRErr CommitTransaction();
1074
+ virtual OGRErr RollbackTransaction();
1075
+
1076
+ virtual std::shared_ptr<GDALGroup> GetRootGroup() const;
1077
+
1078
+ //! @cond Doxygen_Suppress
1079
+ static int IsGenericSQLDialect(const char *pszDialect);
1080
+
1081
+ // Semi-public methods. Only to be used by in-tree drivers.
1082
+ GDALSQLParseInfo *
1083
+ BuildParseInfo(swq_select *psSelectInfo,
1084
+ swq_select_parse_options *poSelectParseOptions);
1085
+ static void DestroyParseInfo(GDALSQLParseInfo *psParseInfo);
1086
+ OGRLayer *ExecuteSQL(const char *pszStatement, OGRGeometry *poSpatialFilter,
1087
+ const char *pszDialect,
1088
+ swq_select_parse_options *poSelectParseOptions);
1089
+ //! @endcond
1090
+
1091
+ protected:
1092
+ virtual OGRLayer *ICreateLayer(const char *pszName,
1093
+ const OGRGeomFieldDefn *poGeomFieldDefn,
1094
+ CSLConstList papszOptions);
1095
+
1096
+ //! @cond Doxygen_Suppress
1097
+ OGRErr ProcessSQLCreateIndex(const char *);
1098
+ OGRErr ProcessSQLDropIndex(const char *);
1099
+ OGRErr ProcessSQLDropTable(const char *);
1100
+ OGRErr ProcessSQLAlterTableAddColumn(const char *);
1101
+ OGRErr ProcessSQLAlterTableDropColumn(const char *);
1102
+ OGRErr ProcessSQLAlterTableAlterColumn(const char *);
1103
+ OGRErr ProcessSQLAlterTableRenameColumn(const char *);
1104
+
1105
+ OGRStyleTable *m_poStyleTable = nullptr;
1106
+
1107
+ friend class GDALProxyPoolDataset;
1108
+ //! @endcond
1109
+
1110
+ private:
1111
+ CPL_DISALLOW_COPY_ASSIGN(GDALDataset)
1112
+ };
1113
+
1114
+ //! @cond Doxygen_Suppress
1115
+ struct CPL_DLL GDALDatasetUniquePtrDeleter
1116
+ {
1117
+ void operator()(GDALDataset *poDataset) const
1118
+ {
1119
+ GDALClose(poDataset);
1120
+ }
1121
+ };
1122
+
1123
+ //! @endcond
1124
+
1125
+ //! @cond Doxygen_Suppress
1126
+ struct CPL_DLL GDALDatasetUniquePtrReleaser
1127
+ {
1128
+ void operator()(GDALDataset *poDataset) const
1129
+ {
1130
+ if (poDataset)
1131
+ poDataset->Release();
1132
+ }
1133
+ };
1134
+
1135
+ //! @endcond
1136
+
1137
+ /** Unique pointer type for GDALDataset.
1138
+ * Appropriate for use on datasets open in non-shared mode and onto which
1139
+ * reference counter has not been manually modified.
1140
+ * @since GDAL 2.3
1141
+ */
1142
+ using GDALDatasetUniquePtr =
1143
+ std::unique_ptr<GDALDataset, GDALDatasetUniquePtrDeleter>;
1144
+
1145
+ /* ******************************************************************** */
1146
+ /* GDALRasterBlock */
1147
+ /* ******************************************************************** */
1148
+
1149
+ /** A single raster block in the block cache.
1150
+ *
1151
+ * And the global block manager that manages a least-recently-used list of
1152
+ * blocks from various datasets/bands */
1153
+ class CPL_DLL GDALRasterBlock
1154
+ {
1155
+ friend class GDALAbstractBandBlockCache;
1156
+
1157
+ GDALDataType eType;
1158
+
1159
+ bool bDirty;
1160
+ volatile int nLockCount;
1161
+
1162
+ int nXOff;
1163
+ int nYOff;
1164
+
1165
+ int nXSize;
1166
+ int nYSize;
1167
+
1168
+ void *pData;
1169
+
1170
+ GDALRasterBand *poBand;
1171
+
1172
+ GDALRasterBlock *poNext;
1173
+ GDALRasterBlock *poPrevious;
1174
+
1175
+ bool bMustDetach;
1176
+
1177
+ CPL_INTERNAL void Detach_unlocked(void);
1178
+ CPL_INTERNAL void Touch_unlocked(void);
1179
+
1180
+ CPL_INTERNAL void RecycleFor(int nXOffIn, int nYOffIn);
1181
+
1182
+ public:
1183
+ GDALRasterBlock(GDALRasterBand *, int, int);
1184
+ GDALRasterBlock(int nXOffIn, int nYOffIn); /* only for lookup purpose */
1185
+ virtual ~GDALRasterBlock();
1186
+
1187
+ CPLErr Internalize(void);
1188
+ void Touch(void);
1189
+ void MarkDirty(void);
1190
+ void MarkClean(void);
1191
+
1192
+ /** Increment the lock count */
1193
+ int AddLock(void)
1194
+ {
1195
+ return CPLAtomicInc(&nLockCount);
1196
+ }
1197
+
1198
+ /** Decrement the lock count */
1199
+ int DropLock(void)
1200
+ {
1201
+ return CPLAtomicDec(&nLockCount);
1202
+ }
1203
+
1204
+ void Detach();
1205
+
1206
+ CPLErr Write();
1207
+
1208
+ /** Return the data type
1209
+ * @return data type
1210
+ */
1211
+ GDALDataType GetDataType() const
1212
+ {
1213
+ return eType;
1214
+ }
1215
+
1216
+ /** Return the x offset of the top-left corner of the block
1217
+ * @return x offset
1218
+ */
1219
+ int GetXOff() const
1220
+ {
1221
+ return nXOff;
1222
+ }
1223
+
1224
+ /** Return the y offset of the top-left corner of the block
1225
+ * @return y offset
1226
+ */
1227
+ int GetYOff() const
1228
+ {
1229
+ return nYOff;
1230
+ }
1231
+
1232
+ /** Return the width of the block
1233
+ * @return width
1234
+ */
1235
+ int GetXSize() const
1236
+ {
1237
+ return nXSize;
1238
+ }
1239
+
1240
+ /** Return the height of the block
1241
+ * @return height
1242
+ */
1243
+ int GetYSize() const
1244
+ {
1245
+ return nYSize;
1246
+ }
1247
+
1248
+ /** Return the dirty flag
1249
+ * @return dirty flag
1250
+ */
1251
+ int GetDirty() const
1252
+ {
1253
+ return bDirty;
1254
+ }
1255
+
1256
+ /** Return the data buffer
1257
+ * @return data buffer
1258
+ */
1259
+ void *GetDataRef(void)
1260
+ {
1261
+ return pData;
1262
+ }
1263
+
1264
+ /** Return the block size in bytes
1265
+ * @return block size.
1266
+ */
1267
+ GPtrDiff_t GetBlockSize() const
1268
+ {
1269
+ return static_cast<GPtrDiff_t>(nXSize) * nYSize *
1270
+ GDALGetDataTypeSizeBytes(eType);
1271
+ }
1272
+
1273
+ int TakeLock();
1274
+ int DropLockForRemovalFromStorage();
1275
+
1276
+ /// @brief Accessor to source GDALRasterBand object.
1277
+ /// @return source raster band of the raster block.
1278
+ GDALRasterBand *GetBand()
1279
+ {
1280
+ return poBand;
1281
+ }
1282
+
1283
+ static void FlushDirtyBlocks();
1284
+ static int FlushCacheBlock(int bDirtyBlocksOnly = FALSE);
1285
+ static void Verify();
1286
+
1287
+ static void EnterDisableDirtyBlockFlush();
1288
+ static void LeaveDisableDirtyBlockFlush();
1289
+
1290
+ #ifdef notdef
1291
+ static void CheckNonOrphanedBlocks(GDALRasterBand *poBand);
1292
+ void DumpBlock();
1293
+ static void DumpAll();
1294
+ #endif
1295
+
1296
+ /* Should only be called by GDALDestroyDriverManager() */
1297
+ //! @cond Doxygen_Suppress
1298
+ CPL_INTERNAL static void DestroyRBMutex();
1299
+ //! @endcond
1300
+
1301
+ private:
1302
+ CPL_DISALLOW_COPY_ASSIGN(GDALRasterBlock)
1303
+ };
1304
+
1305
+ /* ******************************************************************** */
1306
+ /* GDALColorTable */
1307
+ /* ******************************************************************** */
1308
+
1309
+ /** A color table / palette. */
1310
+
1311
+ class CPL_DLL GDALColorTable
1312
+ {
1313
+ GDALPaletteInterp eInterp;
1314
+
1315
+ std::vector<GDALColorEntry> aoEntries{};
1316
+
1317
+ public:
1318
+ explicit GDALColorTable(GDALPaletteInterp = GPI_RGB);
1319
+ ~GDALColorTable();
1320
+
1321
+ GDALColorTable *Clone() const;
1322
+ int IsSame(const GDALColorTable *poOtherCT) const;
1323
+
1324
+ GDALPaletteInterp GetPaletteInterpretation() const;
1325
+
1326
+ int GetColorEntryCount() const;
1327
+ const GDALColorEntry *GetColorEntry(int) const;
1328
+ int GetColorEntryAsRGB(int, GDALColorEntry *) const;
1329
+ void SetColorEntry(int, const GDALColorEntry *);
1330
+ int CreateColorRamp(int, const GDALColorEntry *, int,
1331
+ const GDALColorEntry *);
1332
+ bool IsIdentity() const;
1333
+
1334
+ /** Convert a GDALColorTable* to a GDALRasterBandH.
1335
+ * @since GDAL 2.3
1336
+ */
1337
+ static inline GDALColorTableH ToHandle(GDALColorTable *poCT)
1338
+ {
1339
+ return static_cast<GDALColorTableH>(poCT);
1340
+ }
1341
+
1342
+ /** Convert a GDALColorTableH to a GDALColorTable*.
1343
+ * @since GDAL 2.3
1344
+ */
1345
+ static inline GDALColorTable *FromHandle(GDALColorTableH hCT)
1346
+ {
1347
+ return static_cast<GDALColorTable *>(hCT);
1348
+ }
1349
+ };
1350
+
1351
+ /* ******************************************************************** */
1352
+ /* GDALAbstractBandBlockCache */
1353
+ /* ******************************************************************** */
1354
+
1355
+ //! @cond Doxygen_Suppress
1356
+
1357
+ //! This manages how a raster band store its cached block.
1358
+ // only used by GDALRasterBand implementation.
1359
+
1360
+ class GDALAbstractBandBlockCache
1361
+ {
1362
+ // List of blocks that can be freed or recycled, and its lock
1363
+ CPLLock *hSpinLock = nullptr;
1364
+ GDALRasterBlock *psListBlocksToFree = nullptr;
1365
+
1366
+ // Band keep alive counter, and its lock & condition
1367
+ CPLCond *hCond = nullptr;
1368
+ CPLMutex *hCondMutex = nullptr;
1369
+ volatile int nKeepAliveCounter = 0;
1370
+
1371
+ volatile int m_nDirtyBlocks = 0;
1372
+
1373
+ CPL_DISALLOW_COPY_ASSIGN(GDALAbstractBandBlockCache)
1374
+
1375
+ protected:
1376
+ GDALRasterBand *poBand;
1377
+
1378
+ int m_nInitialDirtyBlocksInFlushCache = 0;
1379
+ int m_nLastTick = -1;
1380
+ size_t m_nWriteDirtyBlocksDisabled = 0;
1381
+
1382
+ void FreeDanglingBlocks();
1383
+ void UnreferenceBlockBase();
1384
+
1385
+ void StartDirtyBlockFlushingLog();
1386
+ void UpdateDirtyBlockFlushingLog();
1387
+ void EndDirtyBlockFlushingLog();
1388
+
1389
+ public:
1390
+ explicit GDALAbstractBandBlockCache(GDALRasterBand *poBand);
1391
+ virtual ~GDALAbstractBandBlockCache();
1392
+
1393
+ GDALRasterBlock *CreateBlock(int nXBlockOff, int nYBlockOff);
1394
+ void AddBlockToFreeList(GDALRasterBlock *);
1395
+ void IncDirtyBlocks(int nInc);
1396
+ void WaitCompletionPendingTasks();
1397
+
1398
+ void EnableDirtyBlockWriting()
1399
+ {
1400
+ --m_nWriteDirtyBlocksDisabled;
1401
+ }
1402
+
1403
+ void DisableDirtyBlockWriting()
1404
+ {
1405
+ ++m_nWriteDirtyBlocksDisabled;
1406
+ }
1407
+
1408
+ bool HasDirtyBlocks() const
1409
+ {
1410
+ return m_nDirtyBlocks > 0;
1411
+ }
1412
+
1413
+ virtual bool Init() = 0;
1414
+ virtual bool IsInitOK() = 0;
1415
+ virtual CPLErr FlushCache() = 0;
1416
+ virtual CPLErr AdoptBlock(GDALRasterBlock *poBlock) = 0;
1417
+ virtual GDALRasterBlock *TryGetLockedBlockRef(int nXBlockOff,
1418
+ int nYBlockYOff) = 0;
1419
+ virtual CPLErr UnreferenceBlock(GDALRasterBlock *poBlock) = 0;
1420
+ virtual CPLErr FlushBlock(int nXBlockOff, int nYBlockOff,
1421
+ int bWriteDirtyBlock) = 0;
1422
+ };
1423
+
1424
+ GDALAbstractBandBlockCache *
1425
+ GDALArrayBandBlockCacheCreate(GDALRasterBand *poBand);
1426
+ GDALAbstractBandBlockCache *
1427
+ GDALHashSetBandBlockCacheCreate(GDALRasterBand *poBand);
1428
+
1429
+ //! @endcond
1430
+
1431
+ /* ******************************************************************** */
1432
+ /* GDALRasterBand */
1433
+ /* ******************************************************************** */
1434
+
1435
+ class GDALMDArray;
1436
+
1437
+ /** Range of values found in a mask band */
1438
+ typedef enum
1439
+ {
1440
+ GMVR_UNKNOWN, /*! Unknown (can also be used for any values between 0 and 255
1441
+ for a Byte band) */
1442
+ GMVR_0_AND_1_ONLY, /*! Only 0 and 1 */
1443
+ GMVR_0_AND_255_ONLY, /*! Only 0 and 255 */
1444
+ } GDALMaskValueRange;
1445
+
1446
+ /** Suggested/most efficient access pattern to blocks. */
1447
+ typedef int GDALSuggestedBlockAccessPattern;
1448
+
1449
+ /** Unknown, or no particular read order is suggested. */
1450
+ constexpr GDALSuggestedBlockAccessPattern GSBAP_UNKNOWN = 0;
1451
+
1452
+ /** Random access to blocks is efficient. */
1453
+ constexpr GDALSuggestedBlockAccessPattern GSBAP_RANDOM = 1;
1454
+
1455
+ /** Reading by strips from top to bottom is the most efficient. */
1456
+ constexpr GDALSuggestedBlockAccessPattern GSBAP_TOP_TO_BOTTOM = 2;
1457
+
1458
+ /** Reading by strips from bottom to top is the most efficient. */
1459
+ constexpr GDALSuggestedBlockAccessPattern GSBAP_BOTTOM_TO_TOP = 3;
1460
+
1461
+ /** Reading the largest chunk from the raster is the most efficient (can be
1462
+ * combined with above values). */
1463
+ constexpr GDALSuggestedBlockAccessPattern GSBAP_LARGEST_CHUNK_POSSIBLE = 0x100;
1464
+
1465
+ /** A single raster band (or channel). */
1466
+
1467
+ class CPL_DLL GDALRasterBand : public GDALMajorObject
1468
+ {
1469
+ private:
1470
+ friend class GDALArrayBandBlockCache;
1471
+ friend class GDALHashSetBandBlockCache;
1472
+ friend class GDALRasterBlock;
1473
+ friend class GDALDataset;
1474
+
1475
+ CPLErr eFlushBlockErr = CE_None;
1476
+ GDALAbstractBandBlockCache *poBandBlockCache = nullptr;
1477
+
1478
+ CPL_INTERNAL void SetFlushBlockErr(CPLErr eErr);
1479
+ CPL_INTERNAL CPLErr UnreferenceBlock(GDALRasterBlock *poBlock);
1480
+ CPL_INTERNAL void IncDirtyBlocks(int nInc);
1481
+
1482
+ protected:
1483
+ //! @cond Doxygen_Suppress
1484
+ GDALDataset *poDS = nullptr;
1485
+ int nBand = 0; /* 1 based */
1486
+
1487
+ int nRasterXSize = 0;
1488
+ int nRasterYSize = 0;
1489
+
1490
+ GDALDataType eDataType = GDT_Byte;
1491
+ GDALAccess eAccess = GA_ReadOnly;
1492
+
1493
+ /* stuff related to blocking, and raster cache */
1494
+ int nBlockXSize = -1;
1495
+ int nBlockYSize = -1;
1496
+ int nBlocksPerRow = 0;
1497
+ int nBlocksPerColumn = 0;
1498
+
1499
+ int nBlockReads = 0;
1500
+ int bForceCachedIO = 0;
1501
+
1502
+ class GDALRasterBandOwnedOrNot
1503
+ {
1504
+ public:
1505
+ GDALRasterBandOwnedOrNot()
1506
+ {
1507
+ }
1508
+
1509
+ GDALRasterBandOwnedOrNot(GDALRasterBand *poBand, bool bOwned)
1510
+ : m_poBandOwned(bOwned ? poBand : nullptr),
1511
+ m_poBandRef(bOwned ? nullptr : poBand)
1512
+ {
1513
+ }
1514
+
1515
+ void reset()
1516
+ {
1517
+ m_poBandOwned.reset();
1518
+ m_poBandRef = nullptr;
1519
+ }
1520
+
1521
+ void reset(GDALRasterBand *poBand, bool bOwned)
1522
+ {
1523
+ m_poBandOwned.reset(bOwned ? poBand : nullptr);
1524
+ m_poBandRef = bOwned ? nullptr : poBand;
1525
+ }
1526
+
1527
+ GDALRasterBand *get()
1528
+ {
1529
+ return static_cast<GDALRasterBand *>(*this);
1530
+ }
1531
+
1532
+ bool IsOwned() const
1533
+ {
1534
+ return m_poBandOwned != nullptr;
1535
+ }
1536
+
1537
+ operator GDALRasterBand *()
1538
+ {
1539
+ return m_poBandOwned ? m_poBandOwned.get() : m_poBandRef;
1540
+ }
1541
+
1542
+ private:
1543
+ CPL_DISALLOW_COPY_ASSIGN(GDALRasterBandOwnedOrNot)
1544
+ std::unique_ptr<GDALRasterBand> m_poBandOwned{};
1545
+ GDALRasterBand *m_poBandRef = nullptr;
1546
+ };
1547
+
1548
+ GDALRasterBandOwnedOrNot poMask{};
1549
+ bool m_bEnablePixelTypeSignedByteWarning =
1550
+ true; // Remove me in GDAL 4.0. See GetMetadataItem() implementation
1551
+ int nMaskFlags = 0;
1552
+
1553
+ void InvalidateMaskBand();
1554
+
1555
+ friend class GDALProxyRasterBand;
1556
+ friend class GDALDefaultOverviews;
1557
+
1558
+ CPLErr
1559
+ RasterIOResampled(GDALRWFlag, int, int, int, int, void *, int, int,
1560
+ GDALDataType, GSpacing, GSpacing,
1561
+ GDALRasterIOExtraArg *psExtraArg) CPL_WARN_UNUSED_RESULT;
1562
+
1563
+ int EnterReadWrite(GDALRWFlag eRWFlag);
1564
+ void LeaveReadWrite();
1565
+ void InitRWLock();
1566
+ void SetValidPercent(GUIntBig nSampleCount, GUIntBig nValidCount);
1567
+
1568
+ //! @endcond
1569
+
1570
+ protected:
1571
+ virtual CPLErr IReadBlock(int nBlockXOff, int nBlockYOff, void *pData) = 0;
1572
+ virtual CPLErr IWriteBlock(int nBlockXOff, int nBlockYOff, void *pData);
1573
+
1574
+ virtual CPLErr
1575
+ IRasterIO(GDALRWFlag, int, int, int, int, void *, int, int, GDALDataType,
1576
+ GSpacing, GSpacing,
1577
+ GDALRasterIOExtraArg *psExtraArg) CPL_WARN_UNUSED_RESULT;
1578
+
1579
+ virtual int IGetDataCoverageStatus(int nXOff, int nYOff, int nXSize,
1580
+ int nYSize, int nMaskFlagStop,
1581
+ double *pdfDataPct);
1582
+ //! @cond Doxygen_Suppress
1583
+ CPLErr
1584
+ OverviewRasterIO(GDALRWFlag, int, int, int, int, void *, int, int,
1585
+ GDALDataType, GSpacing, GSpacing,
1586
+ GDALRasterIOExtraArg *psExtraArg) CPL_WARN_UNUSED_RESULT;
1587
+
1588
+ CPLErr TryOverviewRasterIO(GDALRWFlag eRWFlag, int nXOff, int nYOff,
1589
+ int nXSize, int nYSize, void *pData,
1590
+ int nBufXSize, int nBufYSize,
1591
+ GDALDataType eBufType, GSpacing nPixelSpace,
1592
+ GSpacing nLineSpace,
1593
+ GDALRasterIOExtraArg *psExtraArg, int *pbTried);
1594
+
1595
+ int InitBlockInfo();
1596
+
1597
+ void AddBlockToFreeList(GDALRasterBlock *);
1598
+
1599
+ bool HasBlockCache() const
1600
+ {
1601
+ return poBandBlockCache != nullptr;
1602
+ }
1603
+
1604
+ bool HasDirtyBlocks() const
1605
+ {
1606
+ return poBandBlockCache && poBandBlockCache->HasDirtyBlocks();
1607
+ }
1608
+
1609
+ //! @endcond
1610
+
1611
+ public:
1612
+ GDALRasterBand();
1613
+ explicit GDALRasterBand(int bForceCachedIO);
1614
+
1615
+ ~GDALRasterBand() override;
1616
+
1617
+ int GetXSize();
1618
+ int GetYSize();
1619
+ int GetBand();
1620
+ GDALDataset *GetDataset();
1621
+
1622
+ GDALDataType GetRasterDataType(void);
1623
+ void GetBlockSize(int *, int *);
1624
+ CPLErr GetActualBlockSize(int, int, int *, int *);
1625
+
1626
+ virtual GDALSuggestedBlockAccessPattern
1627
+ GetSuggestedBlockAccessPattern() const;
1628
+
1629
+ GDALAccess GetAccess();
1630
+
1631
+ CPLErr RasterIO(GDALRWFlag, int, int, int, int, void *, int, int,
1632
+ GDALDataType, GSpacing, GSpacing,
1633
+ GDALRasterIOExtraArg *psExtraArg
1634
+ #ifndef DOXYGEN_SKIP
1635
+ OPTIONAL_OUTSIDE_GDAL(nullptr)
1636
+ #endif
1637
+ ) CPL_WARN_UNUSED_RESULT;
1638
+ CPLErr ReadBlock(int, int, void *) CPL_WARN_UNUSED_RESULT;
1639
+
1640
+ CPLErr WriteBlock(int, int, void *) CPL_WARN_UNUSED_RESULT;
1641
+
1642
+ GDALRasterBlock *
1643
+ GetLockedBlockRef(int nXBlockOff, int nYBlockOff,
1644
+ int bJustInitialize = FALSE) CPL_WARN_UNUSED_RESULT;
1645
+ GDALRasterBlock *TryGetLockedBlockRef(int nXBlockOff, int nYBlockYOff)
1646
+ CPL_WARN_UNUSED_RESULT;
1647
+ CPLErr FlushBlock(int, int, int bWriteDirtyBlock = TRUE);
1648
+
1649
+ unsigned char *
1650
+ GetIndexColorTranslationTo(/* const */ GDALRasterBand *poReferenceBand,
1651
+ unsigned char *pTranslationTable = nullptr,
1652
+ int *pApproximateMatching = nullptr);
1653
+
1654
+ // New OpengIS CV_SampleDimension stuff.
1655
+
1656
+ virtual CPLErr FlushCache(bool bAtClosing = false);
1657
+ virtual CPLErr DropCache();
1658
+ virtual char **GetCategoryNames();
1659
+ virtual double GetNoDataValue(int *pbSuccess = nullptr);
1660
+ virtual int64_t GetNoDataValueAsInt64(int *pbSuccess = nullptr);
1661
+ virtual uint64_t GetNoDataValueAsUInt64(int *pbSuccess = nullptr);
1662
+ virtual double GetMinimum(int *pbSuccess = nullptr);
1663
+ virtual double GetMaximum(int *pbSuccess = nullptr);
1664
+ virtual double GetOffset(int *pbSuccess = nullptr);
1665
+ virtual double GetScale(int *pbSuccess = nullptr);
1666
+ virtual const char *GetUnitType();
1667
+ virtual GDALColorInterp GetColorInterpretation();
1668
+ virtual GDALColorTable *GetColorTable();
1669
+ virtual CPLErr Fill(double dfRealValue, double dfImaginaryValue = 0);
1670
+
1671
+ virtual CPLErr SetCategoryNames(char **papszNames);
1672
+ virtual CPLErr SetNoDataValue(double dfNoData);
1673
+ virtual CPLErr SetNoDataValueAsInt64(int64_t nNoData);
1674
+ virtual CPLErr SetNoDataValueAsUInt64(uint64_t nNoData);
1675
+ virtual CPLErr DeleteNoDataValue();
1676
+ virtual CPLErr SetColorTable(GDALColorTable *poCT);
1677
+ virtual CPLErr SetColorInterpretation(GDALColorInterp eColorInterp);
1678
+ virtual CPLErr SetOffset(double dfNewOffset);
1679
+ virtual CPLErr SetScale(double dfNewScale);
1680
+ virtual CPLErr SetUnitType(const char *pszNewValue);
1681
+
1682
+ virtual CPLErr GetStatistics(int bApproxOK, int bForce, double *pdfMin,
1683
+ double *pdfMax, double *pdfMean,
1684
+ double *padfStdDev);
1685
+ virtual CPLErr ComputeStatistics(int bApproxOK, double *pdfMin,
1686
+ double *pdfMax, double *pdfMean,
1687
+ double *pdfStdDev, GDALProgressFunc,
1688
+ void *pProgressData);
1689
+ virtual CPLErr SetStatistics(double dfMin, double dfMax, double dfMean,
1690
+ double dfStdDev);
1691
+ virtual CPLErr ComputeRasterMinMax(int, double *);
1692
+
1693
+ // Only defined when Doxygen enabled
1694
+ #ifdef DOXYGEN_SKIP
1695
+ CPLErr SetMetadata(char **papszMetadata, const char *pszDomain) override;
1696
+ CPLErr SetMetadataItem(const char *pszName, const char *pszValue,
1697
+ const char *pszDomain) override;
1698
+ #endif
1699
+ virtual const char *GetMetadataItem(const char *pszName,
1700
+ const char *pszDomain = "") override;
1701
+
1702
+ virtual int HasArbitraryOverviews();
1703
+ virtual int GetOverviewCount();
1704
+ virtual GDALRasterBand *GetOverview(int);
1705
+ virtual GDALRasterBand *GetRasterSampleOverview(GUIntBig);
1706
+ virtual CPLErr BuildOverviews(const char *pszResampling, int nOverviews,
1707
+ const int *panOverviewList,
1708
+ GDALProgressFunc pfnProgress,
1709
+ void *pProgressData,
1710
+ CSLConstList papszOptions);
1711
+
1712
+ virtual CPLErr AdviseRead(int nXOff, int nYOff, int nXSize, int nYSize,
1713
+ int nBufXSize, int nBufYSize,
1714
+ GDALDataType eBufType, char **papszOptions);
1715
+
1716
+ virtual CPLErr GetHistogram(double dfMin, double dfMax, int nBuckets,
1717
+ GUIntBig *panHistogram, int bIncludeOutOfRange,
1718
+ int bApproxOK, GDALProgressFunc,
1719
+ void *pProgressData);
1720
+
1721
+ virtual CPLErr GetDefaultHistogram(double *pdfMin, double *pdfMax,
1722
+ int *pnBuckets, GUIntBig **ppanHistogram,
1723
+ int bForce, GDALProgressFunc,
1724
+ void *pProgressData);
1725
+ virtual CPLErr SetDefaultHistogram(double dfMin, double dfMax, int nBuckets,
1726
+ GUIntBig *panHistogram);
1727
+
1728
+ virtual GDALRasterAttributeTable *GetDefaultRAT();
1729
+ virtual CPLErr SetDefaultRAT(const GDALRasterAttributeTable *poRAT);
1730
+
1731
+ virtual GDALRasterBand *GetMaskBand();
1732
+ virtual int GetMaskFlags();
1733
+ virtual CPLErr CreateMaskBand(int nFlagsIn);
1734
+ virtual bool IsMaskBand() const;
1735
+ virtual GDALMaskValueRange GetMaskValueRange() const;
1736
+
1737
+ virtual CPLVirtualMem *
1738
+ GetVirtualMemAuto(GDALRWFlag eRWFlag, int *pnPixelSpace,
1739
+ GIntBig *pnLineSpace,
1740
+ char **papszOptions) CPL_WARN_UNUSED_RESULT;
1741
+
1742
+ int GetDataCoverageStatus(int nXOff, int nYOff, int nXSize, int nYSize,
1743
+ int nMaskFlagStop = 0,
1744
+ double *pdfDataPct = nullptr);
1745
+
1746
+ std::shared_ptr<GDALMDArray> AsMDArray() const;
1747
+
1748
+ #ifndef DOXYGEN_XML
1749
+ void ReportError(CPLErr eErrClass, CPLErrorNum err_no, const char *fmt, ...)
1750
+ CPL_PRINT_FUNC_FORMAT(4, 5);
1751
+ #endif
1752
+
1753
+ /** Convert a GDALRasterBand* to a GDALRasterBandH.
1754
+ * @since GDAL 2.3
1755
+ */
1756
+ static inline GDALRasterBandH ToHandle(GDALRasterBand *poBand)
1757
+ {
1758
+ return static_cast<GDALRasterBandH>(poBand);
1759
+ }
1760
+
1761
+ /** Convert a GDALRasterBandH to a GDALRasterBand*.
1762
+ * @since GDAL 2.3
1763
+ */
1764
+ static inline GDALRasterBand *FromHandle(GDALRasterBandH hBand)
1765
+ {
1766
+ return static_cast<GDALRasterBand *>(hBand);
1767
+ }
1768
+
1769
+ //! @cond Doxygen_Suppress
1770
+ // Remove me in GDAL 4.0. See GetMetadataItem() implementation
1771
+ // Internal use in GDAL only !
1772
+ void EnablePixelTypeSignedByteWarning(bool b)
1773
+ #ifndef GDAL_COMPILATION
1774
+ CPL_WARN_DEPRECATED("Do not use that method outside of GDAL!")
1775
+ #endif
1776
+ ;
1777
+
1778
+ //! @endcond
1779
+
1780
+ private:
1781
+ CPL_DISALLOW_COPY_ASSIGN(GDALRasterBand)
1782
+ };
1783
+
1784
+ //! @cond Doxygen_Suppress
1785
+ /* ******************************************************************** */
1786
+ /* GDALAllValidMaskBand */
1787
+ /* ******************************************************************** */
1788
+
1789
+ class CPL_DLL GDALAllValidMaskBand : public GDALRasterBand
1790
+ {
1791
+ protected:
1792
+ CPLErr IReadBlock(int, int, void *) override;
1793
+
1794
+ CPL_DISALLOW_COPY_ASSIGN(GDALAllValidMaskBand)
1795
+
1796
+ public:
1797
+ explicit GDALAllValidMaskBand(GDALRasterBand *);
1798
+ ~GDALAllValidMaskBand() override;
1799
+
1800
+ GDALRasterBand *GetMaskBand() override;
1801
+ int GetMaskFlags() override;
1802
+
1803
+ bool IsMaskBand() const override
1804
+ {
1805
+ return true;
1806
+ }
1807
+
1808
+ GDALMaskValueRange GetMaskValueRange() const override
1809
+ {
1810
+ return GMVR_0_AND_255_ONLY;
1811
+ }
1812
+
1813
+ CPLErr ComputeStatistics(int bApproxOK, double *pdfMin, double *pdfMax,
1814
+ double *pdfMean, double *pdfStdDev,
1815
+ GDALProgressFunc, void *pProgressData) override;
1816
+ };
1817
+
1818
+ /* ******************************************************************** */
1819
+ /* GDALNoDataMaskBand */
1820
+ /* ******************************************************************** */
1821
+
1822
+ class CPL_DLL GDALNoDataMaskBand : public GDALRasterBand
1823
+ {
1824
+ friend class GDALRasterBand;
1825
+ double m_dfNoDataValue = 0;
1826
+ int64_t m_nNoDataValueInt64 = 0;
1827
+ uint64_t m_nNoDataValueUInt64 = 0;
1828
+ GDALRasterBand *m_poParent = nullptr;
1829
+
1830
+ CPL_DISALLOW_COPY_ASSIGN(GDALNoDataMaskBand)
1831
+
1832
+ protected:
1833
+ CPLErr IReadBlock(int, int, void *) override;
1834
+ CPLErr IRasterIO(GDALRWFlag, int, int, int, int, void *, int, int,
1835
+ GDALDataType, GSpacing, GSpacing,
1836
+ GDALRasterIOExtraArg *psExtraArg) override;
1837
+
1838
+ public:
1839
+ explicit GDALNoDataMaskBand(GDALRasterBand *);
1840
+ explicit GDALNoDataMaskBand(GDALRasterBand *, double dfNoDataValue);
1841
+ ~GDALNoDataMaskBand() override;
1842
+
1843
+ bool IsMaskBand() const override
1844
+ {
1845
+ return true;
1846
+ }
1847
+
1848
+ GDALMaskValueRange GetMaskValueRange() const override
1849
+ {
1850
+ return GMVR_0_AND_255_ONLY;
1851
+ }
1852
+
1853
+ static bool IsNoDataInRange(double dfNoDataValue, GDALDataType eDataType);
1854
+ };
1855
+
1856
+ /* ******************************************************************** */
1857
+ /* GDALNoDataValuesMaskBand */
1858
+ /* ******************************************************************** */
1859
+
1860
+ class CPL_DLL GDALNoDataValuesMaskBand : public GDALRasterBand
1861
+ {
1862
+ double *padfNodataValues;
1863
+
1864
+ CPL_DISALLOW_COPY_ASSIGN(GDALNoDataValuesMaskBand)
1865
+
1866
+ protected:
1867
+ CPLErr IReadBlock(int, int, void *) override;
1868
+
1869
+ public:
1870
+ explicit GDALNoDataValuesMaskBand(GDALDataset *);
1871
+ ~GDALNoDataValuesMaskBand() override;
1872
+
1873
+ bool IsMaskBand() const override
1874
+ {
1875
+ return true;
1876
+ }
1877
+
1878
+ GDALMaskValueRange GetMaskValueRange() const override
1879
+ {
1880
+ return GMVR_0_AND_255_ONLY;
1881
+ }
1882
+ };
1883
+
1884
+ /* ******************************************************************** */
1885
+ /* GDALRescaledAlphaBand */
1886
+ /* ******************************************************************** */
1887
+
1888
+ class GDALRescaledAlphaBand : public GDALRasterBand
1889
+ {
1890
+ GDALRasterBand *poParent;
1891
+ void *pTemp;
1892
+
1893
+ CPL_DISALLOW_COPY_ASSIGN(GDALRescaledAlphaBand)
1894
+
1895
+ protected:
1896
+ CPLErr IReadBlock(int, int, void *) override;
1897
+ CPLErr IRasterIO(GDALRWFlag, int, int, int, int, void *, int, int,
1898
+ GDALDataType, GSpacing, GSpacing,
1899
+ GDALRasterIOExtraArg *psExtraArg) override;
1900
+
1901
+ public:
1902
+ explicit GDALRescaledAlphaBand(GDALRasterBand *);
1903
+ ~GDALRescaledAlphaBand() override;
1904
+
1905
+ bool IsMaskBand() const override
1906
+ {
1907
+ return true;
1908
+ }
1909
+ };
1910
+
1911
+ //! @endcond
1912
+
1913
+ /* ******************************************************************** */
1914
+ /* GDALIdentifyEnum */
1915
+ /* ******************************************************************** */
1916
+
1917
+ /**
1918
+ * Enumeration used by GDALDriver::pfnIdentify().
1919
+ *
1920
+ * @since GDAL 2.1
1921
+ */
1922
+ typedef enum
1923
+ {
1924
+ /** Identify could not determine if the file is recognized or not by the
1925
+ probed driver. */
1926
+ GDAL_IDENTIFY_UNKNOWN = -1,
1927
+ /** Identify determined the file is not recognized by the probed driver. */
1928
+ GDAL_IDENTIFY_FALSE = 0,
1929
+ /** Identify determined the file is recognized by the probed driver. */
1930
+ GDAL_IDENTIFY_TRUE = 1
1931
+ } GDALIdentifyEnum;
1932
+
1933
+ /* ******************************************************************** */
1934
+ /* GDALDriver */
1935
+ /* ******************************************************************** */
1936
+
1937
+ /**
1938
+ * \brief Format specific driver.
1939
+ *
1940
+ * An instance of this class is created for each supported format, and
1941
+ * manages information about the format.
1942
+ *
1943
+ * This roughly corresponds to a file format, though some
1944
+ * drivers may be gateways to many formats through a secondary
1945
+ * multi-library.
1946
+ */
1947
+
1948
+ class CPL_DLL GDALDriver : public GDALMajorObject
1949
+ {
1950
+ public:
1951
+ GDALDriver();
1952
+ ~GDALDriver() override;
1953
+
1954
+ CPLErr SetMetadataItem(const char *pszName, const char *pszValue,
1955
+ const char *pszDomain = "") override;
1956
+
1957
+ /* -------------------------------------------------------------------- */
1958
+ /* Public C++ methods. */
1959
+ /* -------------------------------------------------------------------- */
1960
+ GDALDataset *Create(const char *pszName, int nXSize, int nYSize, int nBands,
1961
+ GDALDataType eType,
1962
+ CSLConstList papszOptions) CPL_WARN_UNUSED_RESULT;
1963
+
1964
+ GDALDataset *
1965
+ CreateMultiDimensional(const char *pszName,
1966
+ CSLConstList papszRootGroupOptions,
1967
+ CSLConstList papszOptions) CPL_WARN_UNUSED_RESULT;
1968
+
1969
+ CPLErr Delete(const char *pszName);
1970
+ CPLErr Rename(const char *pszNewName, const char *pszOldName);
1971
+ CPLErr CopyFiles(const char *pszNewName, const char *pszOldName);
1972
+
1973
+ GDALDataset *CreateCopy(const char *, GDALDataset *, int,
1974
+ CSLConstList papszOptions,
1975
+ GDALProgressFunc pfnProgress,
1976
+ void *pProgressData) CPL_WARN_UNUSED_RESULT;
1977
+
1978
+ bool CanVectorTranslateFrom(const char *pszDestName,
1979
+ GDALDataset *poSourceDS,
1980
+ CSLConstList papszVectorTranslateArguments,
1981
+ char ***ppapszFailureReasons);
1982
+
1983
+ GDALDataset *
1984
+ VectorTranslateFrom(const char *pszDestName, GDALDataset *poSourceDS,
1985
+ CSLConstList papszVectorTranslateArguments,
1986
+ GDALProgressFunc pfnProgress,
1987
+ void *pProgressData) CPL_WARN_UNUSED_RESULT;
1988
+
1989
+ /* -------------------------------------------------------------------- */
1990
+ /* The following are semiprivate, not intended to be accessed */
1991
+ /* by anyone but the formats instantiating and populating the */
1992
+ /* drivers. */
1993
+ /* -------------------------------------------------------------------- */
1994
+ //! @cond Doxygen_Suppress
1995
+
1996
+ // Not aimed at being used outside of GDAL. Use GDALDataset::Open() instead
1997
+ GDALDataset *Open(GDALOpenInfo *poOpenInfo, bool bSetOpenOptions);
1998
+
1999
+ typedef GDALDataset *(*OpenCallback)(GDALOpenInfo *);
2000
+
2001
+ OpenCallback pfnOpen = nullptr;
2002
+
2003
+ virtual OpenCallback GetOpenCallback()
2004
+ {
2005
+ return pfnOpen;
2006
+ }
2007
+
2008
+ typedef GDALDataset *(*CreateCallback)(const char *pszName, int nXSize,
2009
+ int nYSize, int nBands,
2010
+ GDALDataType eType,
2011
+ char **papszOptions);
2012
+
2013
+ CreateCallback pfnCreate = nullptr;
2014
+
2015
+ virtual CreateCallback GetCreateCallback()
2016
+ {
2017
+ return pfnCreate;
2018
+ }
2019
+
2020
+ GDALDataset *(*pfnCreateEx)(GDALDriver *, const char *pszName, int nXSize,
2021
+ int nYSize, int nBands, GDALDataType eType,
2022
+ char **papszOptions) = nullptr;
2023
+
2024
+ typedef GDALDataset *(*CreateMultiDimensionalCallback)(
2025
+ const char *pszName, CSLConstList papszRootGroupOptions,
2026
+ CSLConstList papszOptions);
2027
+
2028
+ CreateMultiDimensionalCallback pfnCreateMultiDimensional = nullptr;
2029
+
2030
+ virtual CreateMultiDimensionalCallback GetCreateMultiDimensionalCallback()
2031
+ {
2032
+ return pfnCreateMultiDimensional;
2033
+ }
2034
+
2035
+ typedef CPLErr (*DeleteCallback)(const char *pszName);
2036
+ DeleteCallback pfnDelete = nullptr;
2037
+
2038
+ virtual DeleteCallback GetDeleteCallback()
2039
+ {
2040
+ return pfnDelete;
2041
+ }
2042
+
2043
+ typedef GDALDataset *(*CreateCopyCallback)(const char *, GDALDataset *, int,
2044
+ char **,
2045
+ GDALProgressFunc pfnProgress,
2046
+ void *pProgressData);
2047
+
2048
+ CreateCopyCallback pfnCreateCopy = nullptr;
2049
+
2050
+ virtual CreateCopyCallback GetCreateCopyCallback()
2051
+ {
2052
+ return pfnCreateCopy;
2053
+ }
2054
+
2055
+ void *pDriverData = nullptr;
2056
+
2057
+ void (*pfnUnloadDriver)(GDALDriver *) = nullptr;
2058
+
2059
+ /** Identify() if the file is recognized or not by the driver.
2060
+
2061
+ Return GDAL_IDENTIFY_TRUE (1) if the passed file is certainly recognized
2062
+ by the driver. Return GDAL_IDENTIFY_FALSE (0) if the passed file is
2063
+ certainly NOT recognized by the driver. Return GDAL_IDENTIFY_UNKNOWN (-1)
2064
+ if the passed file may be or may not be recognized by the driver, and
2065
+ that a potentially costly test must be done with pfnOpen.
2066
+ */
2067
+ int (*pfnIdentify)(GDALOpenInfo *) = nullptr;
2068
+ int (*pfnIdentifyEx)(GDALDriver *, GDALOpenInfo *) = nullptr;
2069
+
2070
+ typedef CPLErr (*RenameCallback)(const char *pszNewName,
2071
+ const char *pszOldName);
2072
+ RenameCallback pfnRename = nullptr;
2073
+
2074
+ virtual RenameCallback GetRenameCallback()
2075
+ {
2076
+ return pfnRename;
2077
+ }
2078
+
2079
+ typedef CPLErr (*CopyFilesCallback)(const char *pszNewName,
2080
+ const char *pszOldName);
2081
+ CopyFilesCallback pfnCopyFiles = nullptr;
2082
+
2083
+ virtual CopyFilesCallback GetCopyFilesCallback()
2084
+ {
2085
+ return pfnCopyFiles;
2086
+ }
2087
+
2088
+ // Used for legacy OGR drivers, and Python drivers
2089
+ GDALDataset *(*pfnOpenWithDriverArg)(GDALDriver *,
2090
+ GDALOpenInfo *) = nullptr;
2091
+
2092
+ /* For legacy OGR drivers */
2093
+ GDALDataset *(*pfnCreateVectorOnly)(GDALDriver *, const char *pszName,
2094
+ char **papszOptions) = nullptr;
2095
+ CPLErr (*pfnDeleteDataSource)(GDALDriver *, const char *pszName) = nullptr;
2096
+
2097
+ /** Whether pfnVectorTranslateFrom() can be run given the source dataset
2098
+ * and the non-positional arguments of GDALVectorTranslate() stored
2099
+ * in papszVectorTranslateArguments.
2100
+ */
2101
+ bool (*pfnCanVectorTranslateFrom)(
2102
+ const char *pszDestName, GDALDataset *poSourceDS,
2103
+ CSLConstList papszVectorTranslateArguments,
2104
+ char ***ppapszFailureReasons) = nullptr;
2105
+
2106
+ /** Creates a copy from the specified source dataset, using the
2107
+ * non-positional arguments of GDALVectorTranslate() stored
2108
+ * in papszVectorTranslateArguments.
2109
+ */
2110
+ GDALDataset *(*pfnVectorTranslateFrom)(
2111
+ const char *pszDestName, GDALDataset *poSourceDS,
2112
+ CSLConstList papszVectorTranslateArguments,
2113
+ GDALProgressFunc pfnProgress, void *pProgressData) = nullptr;
2114
+
2115
+ /**
2116
+ * Returns a (possibly null) pointer to the Subdataset informational function
2117
+ * from the subdataset file name.
2118
+ */
2119
+ GDALSubdatasetInfo *(*pfnGetSubdatasetInfoFunc)(const char *pszFileName) =
2120
+ nullptr;
2121
+
2122
+ //! @endcond
2123
+
2124
+ /* -------------------------------------------------------------------- */
2125
+ /* Helper methods. */
2126
+ /* -------------------------------------------------------------------- */
2127
+ //! @cond Doxygen_Suppress
2128
+ GDALDataset *DefaultCreateCopy(const char *, GDALDataset *, int,
2129
+ CSLConstList papszOptions,
2130
+ GDALProgressFunc pfnProgress,
2131
+ void *pProgressData) CPL_WARN_UNUSED_RESULT;
2132
+
2133
+ static CPLErr DefaultCreateCopyMultiDimensional(
2134
+ GDALDataset *poSrcDS, GDALDataset *poDstDS, bool bStrict,
2135
+ CSLConstList /*papszOptions*/, GDALProgressFunc pfnProgress,
2136
+ void *pProgressData);
2137
+
2138
+ static CPLErr DefaultCopyMasks(GDALDataset *poSrcDS, GDALDataset *poDstDS,
2139
+ int bStrict);
2140
+ static CPLErr DefaultCopyMasks(GDALDataset *poSrcDS, GDALDataset *poDstDS,
2141
+ int bStrict, CSLConstList papszOptions,
2142
+ GDALProgressFunc pfnProgress,
2143
+ void *pProgressData);
2144
+
2145
+ CPLErr QuietDeleteForCreateCopy(const char *pszFilename,
2146
+ GDALDataset *poSrcDS);
2147
+
2148
+ //! @endcond
2149
+ static CPLErr QuietDelete(const char *pszName,
2150
+ CSLConstList papszAllowedDrivers = nullptr);
2151
+
2152
+ //! @cond Doxygen_Suppress
2153
+ static CPLErr DefaultRename(const char *pszNewName, const char *pszOldName);
2154
+ static CPLErr DefaultCopyFiles(const char *pszNewName,
2155
+ const char *pszOldName);
2156
+ static void DefaultCopyMetadata(GDALDataset *poSrcDS, GDALDataset *poDstDS,
2157
+ CSLConstList papszOptions,
2158
+ CSLConstList papszExcludedDomains);
2159
+
2160
+ //! @endcond
2161
+
2162
+ /** Convert a GDALDriver* to a GDALDriverH.
2163
+ * @since GDAL 2.3
2164
+ */
2165
+ static inline GDALDriverH ToHandle(GDALDriver *poDriver)
2166
+ {
2167
+ return static_cast<GDALDriverH>(poDriver);
2168
+ }
2169
+
2170
+ /** Convert a GDALDriverH to a GDALDriver*.
2171
+ * @since GDAL 2.3
2172
+ */
2173
+ static inline GDALDriver *FromHandle(GDALDriverH hDriver)
2174
+ {
2175
+ return static_cast<GDALDriver *>(hDriver);
2176
+ }
2177
+
2178
+ private:
2179
+ CPL_DISALLOW_COPY_ASSIGN(GDALDriver)
2180
+ };
2181
+
2182
+ /************************************************************************/
2183
+ /* GDALPluginDriverProxy */
2184
+ /************************************************************************/
2185
+
2186
+ // clang-format off
2187
+ /** Proxy for a plugin driver.
2188
+ *
2189
+ * Such proxy must be registered with
2190
+ * GDALDriverManager::DeclareDeferredPluginDriver().
2191
+ *
2192
+ * If the real driver defines any of the following metadata items, the
2193
+ * proxy driver should also define them with the same value:
2194
+ * <ul>
2195
+ * <li>GDAL_DMD_LONGNAME</li>
2196
+ * <li>GDAL_DMD_EXTENSIONS</li>
2197
+ * <li>GDAL_DMD_EXTENSION</li>
2198
+ * <li>GDAL_DMD_OPENOPTIONLIST</li>
2199
+ * <li>GDAL_DMD_SUBDATASETS</li>
2200
+ * <li>GDAL_DMD_CONNECTION_PREFIX</li>
2201
+ * <li>GDAL_DCAP_RASTER</li>
2202
+ * <li>GDAL_DCAP_MULTIDIM_RASTER</li>
2203
+ * <li>GDAL_DCAP_VECTOR</li>
2204
+ * <li>GDAL_DCAP_GNM</li>
2205
+ * <li>GDAL_DCAP_MULTIPLE_VECTOR_LAYERS</li>
2206
+ * <li>GDAL_DCAP_NONSPATIAL</li>
2207
+ * <li>GDAL_DCAP_VECTOR_TRANSLATE_FROM</li>
2208
+ * </ul>
2209
+ *
2210
+ * The pfnIdentify and pfnGetSubdatasetInfoFunc callbacks, if they are
2211
+ * defined in the real driver, should also be set on the proxy driver.
2212
+ *
2213
+ * Furthermore, the following metadata items must be defined if the real
2214
+ * driver sets the corresponding callback:
2215
+ * <ul>
2216
+ * <li>GDAL_DCAP_OPEN: must be set to YES if the real driver defines pfnOpen</li>
2217
+ * <li>GDAL_DCAP_CREATE: must be set to YES if the real driver defines pfnCreate</li>
2218
+ * <li>GDAL_DCAP_CREATE_MULTIDIMENSIONAL: must be set to YES if the real driver defines pfnCreateMultiDimensional</li>
2219
+ * <li>GDAL_DCAP_CREATECOPY: must be set to YES if the real driver defines pfnCreateCopy</li>
2220
+ * </ul>
2221
+ *
2222
+ * @since 3.9
2223
+ */
2224
+ // clang-format on
2225
+ class GDALPluginDriverProxy : public GDALDriver
2226
+ {
2227
+ const std::string m_osPluginFileName;
2228
+ std::string m_osPluginFullPath{};
2229
+ std::unique_ptr<GDALDriver> m_poRealDriver{};
2230
+ std::set<std::string> m_oSetMetadataItems{};
2231
+
2232
+ GDALDriver *GetRealDriver();
2233
+
2234
+ CPL_DISALLOW_COPY_ASSIGN(GDALPluginDriverProxy)
2235
+
2236
+ protected:
2237
+ friend class GDALDriverManager;
2238
+
2239
+ //! @cond Doxygen_Suppress
2240
+ void SetPluginFullPath(const std::string &osFullPath)
2241
+ {
2242
+ m_osPluginFullPath = osFullPath;
2243
+ }
2244
+
2245
+ //! @endcond
2246
+
2247
+ public:
2248
+ explicit GDALPluginDriverProxy(const std::string &osPluginFileName);
2249
+
2250
+ /** Return the plugin file name (not a full path) */
2251
+ const std::string &GetPluginFileName() const
2252
+ {
2253
+ return m_osPluginFileName;
2254
+ }
2255
+
2256
+ //! @cond Doxygen_Suppress
2257
+ OpenCallback GetOpenCallback() override;
2258
+
2259
+ CreateCallback GetCreateCallback() override;
2260
+
2261
+ CreateMultiDimensionalCallback GetCreateMultiDimensionalCallback() override;
2262
+
2263
+ CreateCopyCallback GetCreateCopyCallback() override;
2264
+
2265
+ DeleteCallback GetDeleteCallback() override;
2266
+
2267
+ RenameCallback GetRenameCallback() override;
2268
+
2269
+ CopyFilesCallback GetCopyFilesCallback() override;
2270
+ //! @endcond
2271
+
2272
+ CPLErr SetMetadataItem(const char *pszName, const char *pszValue,
2273
+ const char *pszDomain = "") override;
2274
+
2275
+ char **GetMetadata(const char *pszDomain) override;
2276
+
2277
+ const char *GetMetadataItem(const char *pszName,
2278
+ const char *pszDomain = "") override;
2279
+ };
2280
+
2281
+ /* ******************************************************************** */
2282
+ /* GDALDriverManager */
2283
+ /* ******************************************************************** */
2284
+
2285
+ /**
2286
+ * Class for managing the registration of file format drivers.
2287
+ *
2288
+ * Use GetGDALDriverManager() to fetch the global singleton instance of
2289
+ * this class.
2290
+ */
2291
+
2292
+ class CPL_DLL GDALDriverManager : public GDALMajorObject
2293
+ {
2294
+ int nDrivers = 0;
2295
+ GDALDriver **papoDrivers = nullptr;
2296
+ std::map<CPLString, GDALDriver *> oMapNameToDrivers{};
2297
+ std::string m_osPluginPath{};
2298
+ std::string m_osDriversIniPath{};
2299
+ mutable std::string m_osLastTriedDirectory{};
2300
+ std::set<std::string> m_oSetPluginFileNames{};
2301
+ bool m_bInDeferredDriverLoading = false;
2302
+ std::map<std::string, std::unique_ptr<GDALDriver>> m_oMapRealDrivers{};
2303
+ std::vector<std::unique_ptr<GDALDriver>> m_aoHiddenDrivers{};
2304
+
2305
+ GDALDriver *GetDriver_unlocked(int iDriver)
2306
+ {
2307
+ return (iDriver >= 0 && iDriver < nDrivers) ? papoDrivers[iDriver]
2308
+ : nullptr;
2309
+ }
2310
+
2311
+ GDALDriver *GetDriverByName_unlocked(const char *pszName) const
2312
+ {
2313
+ auto oIter = oMapNameToDrivers.find(CPLString(pszName).toupper());
2314
+ return oIter == oMapNameToDrivers.end() ? nullptr : oIter->second;
2315
+ }
2316
+
2317
+ static void CleanupPythonDrivers();
2318
+
2319
+ std::string GetPluginFullPath(const char *pszFilename) const;
2320
+
2321
+ int RegisterDriver(GDALDriver *, bool bHidden);
2322
+
2323
+ CPL_DISALLOW_COPY_ASSIGN(GDALDriverManager)
2324
+
2325
+ protected:
2326
+ friend class GDALPluginDriverProxy;
2327
+ friend GDALDatasetH CPL_STDCALL
2328
+ GDALOpenEx(const char *pszFilename, unsigned int nOpenFlags,
2329
+ const char *const *papszAllowedDrivers,
2330
+ const char *const *papszOpenOptions,
2331
+ const char *const *papszSiblingFiles);
2332
+
2333
+ //! @cond Doxygen_Suppress
2334
+ static char **GetSearchPaths(const char *pszGDAL_DRIVER_PATH);
2335
+ int GetDriverCount(bool bIncludeHidden) const;
2336
+ GDALDriver *GetDriver(int iDriver, bool bIncludeHidden);
2337
+ //! @endcond
2338
+
2339
+ public:
2340
+ GDALDriverManager();
2341
+ ~GDALDriverManager();
2342
+
2343
+ int GetDriverCount(void) const;
2344
+ GDALDriver *GetDriver(int);
2345
+ GDALDriver *GetDriverByName(const char *);
2346
+
2347
+ int RegisterDriver(GDALDriver *);
2348
+ void DeregisterDriver(GDALDriver *);
2349
+
2350
+ // AutoLoadDrivers is a no-op if compiled with GDAL_NO_AUTOLOAD defined.
2351
+ void AutoLoadDrivers();
2352
+ void AutoSkipDrivers();
2353
+ void ReorderDrivers();
2354
+ static CPLErr LoadPlugin(const char *name);
2355
+
2356
+ static void AutoLoadPythonDrivers();
2357
+
2358
+ void DeclareDeferredPluginDriver(GDALPluginDriverProxy *poProxyDriver);
2359
+ };
2360
+
2361
+ CPL_C_START
2362
+ GDALDriverManager CPL_DLL *GetGDALDriverManager(void);
2363
+ CPL_C_END
2364
+
2365
+ /* ******************************************************************** */
2366
+ /* GDALAsyncReader */
2367
+ /* ******************************************************************** */
2368
+
2369
+ /**
2370
+ * Class used as a session object for asynchronous requests. They are
2371
+ * created with GDALDataset::BeginAsyncReader(), and destroyed with
2372
+ * GDALDataset::EndAsyncReader().
2373
+ */
2374
+ class CPL_DLL GDALAsyncReader
2375
+ {
2376
+
2377
+ CPL_DISALLOW_COPY_ASSIGN(GDALAsyncReader)
2378
+
2379
+ protected:
2380
+ //! @cond Doxygen_Suppress
2381
+ GDALDataset *poDS;
2382
+ int nXOff;
2383
+ int nYOff;
2384
+ int nXSize;
2385
+ int nYSize;
2386
+ void *pBuf;
2387
+ int nBufXSize;
2388
+ int nBufYSize;
2389
+ GDALDataType eBufType;
2390
+ int nBandCount;
2391
+ int *panBandMap;
2392
+ int nPixelSpace;
2393
+ int nLineSpace;
2394
+ int nBandSpace;
2395
+ //! @endcond
2396
+
2397
+ public:
2398
+ GDALAsyncReader();
2399
+ virtual ~GDALAsyncReader();
2400
+
2401
+ /** Return dataset.
2402
+ * @return dataset
2403
+ */
2404
+ GDALDataset *GetGDALDataset()
2405
+ {
2406
+ return poDS;
2407
+ }
2408
+
2409
+ /** Return x offset.
2410
+ * @return x offset.
2411
+ */
2412
+ int GetXOffset() const
2413
+ {
2414
+ return nXOff;
2415
+ }
2416
+
2417
+ /** Return y offset.
2418
+ * @return y offset.
2419
+ */
2420
+ int GetYOffset() const
2421
+ {
2422
+ return nYOff;
2423
+ }
2424
+
2425
+ /** Return width.
2426
+ * @return width
2427
+ */
2428
+ int GetXSize() const
2429
+ {
2430
+ return nXSize;
2431
+ }
2432
+
2433
+ /** Return height.
2434
+ * @return height
2435
+ */
2436
+ int GetYSize() const
2437
+ {
2438
+ return nYSize;
2439
+ }
2440
+
2441
+ /** Return buffer.
2442
+ * @return buffer
2443
+ */
2444
+ void *GetBuffer()
2445
+ {
2446
+ return pBuf;
2447
+ }
2448
+
2449
+ /** Return buffer width.
2450
+ * @return buffer width.
2451
+ */
2452
+ int GetBufferXSize() const
2453
+ {
2454
+ return nBufXSize;
2455
+ }
2456
+
2457
+ /** Return buffer height.
2458
+ * @return buffer height.
2459
+ */
2460
+ int GetBufferYSize() const
2461
+ {
2462
+ return nBufYSize;
2463
+ }
2464
+
2465
+ /** Return buffer data type.
2466
+ * @return buffer data type.
2467
+ */
2468
+ GDALDataType GetBufferType() const
2469
+ {
2470
+ return eBufType;
2471
+ }
2472
+
2473
+ /** Return band count.
2474
+ * @return band count
2475
+ */
2476
+ int GetBandCount() const
2477
+ {
2478
+ return nBandCount;
2479
+ }
2480
+
2481
+ /** Return band map.
2482
+ * @return band map.
2483
+ */
2484
+ int *GetBandMap()
2485
+ {
2486
+ return panBandMap;
2487
+ }
2488
+
2489
+ /** Return pixel spacing.
2490
+ * @return pixel spacing.
2491
+ */
2492
+ int GetPixelSpace() const
2493
+ {
2494
+ return nPixelSpace;
2495
+ }
2496
+
2497
+ /** Return line spacing.
2498
+ * @return line spacing.
2499
+ */
2500
+ int GetLineSpace() const
2501
+ {
2502
+ return nLineSpace;
2503
+ }
2504
+
2505
+ /** Return band spacing.
2506
+ * @return band spacing.
2507
+ */
2508
+ int GetBandSpace() const
2509
+ {
2510
+ return nBandSpace;
2511
+ }
2512
+
2513
+ virtual GDALAsyncStatusType
2514
+ GetNextUpdatedRegion(double dfTimeout, int *pnBufXOff, int *pnBufYOff,
2515
+ int *pnBufXSize, int *pnBufYSize) = 0;
2516
+ virtual int LockBuffer(double dfTimeout = -1.0);
2517
+ virtual void UnlockBuffer();
2518
+ };
2519
+
2520
+ /* ******************************************************************** */
2521
+ /* Multidimensional array API */
2522
+ /* ******************************************************************** */
2523
+
2524
+ class GDALMDArray;
2525
+ class GDALAttribute;
2526
+ class GDALDimension;
2527
+ class GDALEDTComponent;
2528
+
2529
+ /* ******************************************************************** */
2530
+ /* GDALExtendedDataType */
2531
+ /* ******************************************************************** */
2532
+
2533
+ /**
2534
+ * Class used to represent potentially complex data types.
2535
+ * Several classes of data types are supported: numeric (based on GDALDataType),
2536
+ * compound or string.
2537
+ *
2538
+ * @since GDAL 3.1
2539
+ */
2540
+ class CPL_DLL GDALExtendedDataType
2541
+ {
2542
+ public:
2543
+ ~GDALExtendedDataType();
2544
+
2545
+ GDALExtendedDataType(const GDALExtendedDataType &);
2546
+
2547
+ GDALExtendedDataType &operator=(const GDALExtendedDataType &);
2548
+ GDALExtendedDataType &operator=(GDALExtendedDataType &&);
2549
+
2550
+ static GDALExtendedDataType Create(GDALDataType eType);
2551
+ static GDALExtendedDataType
2552
+ Create(const std::string &osName, size_t nTotalSize,
2553
+ std::vector<std::unique_ptr<GDALEDTComponent>> &&components);
2554
+ static GDALExtendedDataType
2555
+ CreateString(size_t nMaxStringLength = 0,
2556
+ GDALExtendedDataTypeSubType eSubType = GEDTST_NONE);
2557
+
2558
+ bool operator==(const GDALExtendedDataType &) const;
2559
+
2560
+ /** Non-equality operator */
2561
+ bool operator!=(const GDALExtendedDataType &other) const
2562
+ {
2563
+ return !(operator==(other));
2564
+ }
2565
+
2566
+ /** Return type name.
2567
+ *
2568
+ * This is the same as the C function GDALExtendedDataTypeGetName()
2569
+ */
2570
+ const std::string &GetName() const
2571
+ {
2572
+ return m_osName;
2573
+ }
2574
+
2575
+ /** Return type class.
2576
+ *
2577
+ * This is the same as the C function GDALExtendedDataTypeGetClass()
2578
+ */
2579
+ GDALExtendedDataTypeClass GetClass() const
2580
+ {
2581
+ return m_eClass;
2582
+ }
2583
+
2584
+ /** Return numeric data type (only valid when GetClass() == GEDTC_NUMERIC)
2585
+ *
2586
+ * This is the same as the C function
2587
+ * GDALExtendedDataTypeGetNumericDataType()
2588
+ */
2589
+ GDALDataType GetNumericDataType() const
2590
+ {
2591
+ return m_eNumericDT;
2592
+ }
2593
+
2594
+ /** Return subtype.
2595
+ *
2596
+ * This is the same as the C function GDALExtendedDataTypeGetSubType()
2597
+ *
2598
+ * @since 3.4
2599
+ */
2600
+ GDALExtendedDataTypeSubType GetSubType() const
2601
+ {
2602
+ return m_eSubType;
2603
+ }
2604
+
2605
+ /** Return the components of the data type (only valid when GetClass() ==
2606
+ * GEDTC_COMPOUND)
2607
+ *
2608
+ * This is the same as the C function GDALExtendedDataTypeGetComponents()
2609
+ */
2610
+ const std::vector<std::unique_ptr<GDALEDTComponent>> &GetComponents() const
2611
+ {
2612
+ return m_aoComponents;
2613
+ }
2614
+
2615
+ /** Return data type size in bytes.
2616
+ *
2617
+ * For a string, this will be size of a char* pointer.
2618
+ *
2619
+ * This is the same as the C function GDALExtendedDataTypeGetSize()
2620
+ */
2621
+ size_t GetSize() const
2622
+ {
2623
+ return m_nSize;
2624
+ }
2625
+
2626
+ /** Return the maximum length of a string in bytes.
2627
+ *
2628
+ * 0 indicates unknown/unlimited string.
2629
+ */
2630
+ size_t GetMaxStringLength() const
2631
+ {
2632
+ return m_nMaxStringLength;
2633
+ }
2634
+
2635
+ bool CanConvertTo(const GDALExtendedDataType &other) const;
2636
+
2637
+ bool NeedsFreeDynamicMemory() const;
2638
+
2639
+ void FreeDynamicMemory(void *pBuffer) const;
2640
+
2641
+ static bool CopyValue(const void *pSrc, const GDALExtendedDataType &srcType,
2642
+ void *pDst, const GDALExtendedDataType &dstType);
2643
+
2644
+ static bool CopyValues(const void *pSrc,
2645
+ const GDALExtendedDataType &srcType,
2646
+ GPtrDiff_t nSrcStrideInElts, void *pDst,
2647
+ const GDALExtendedDataType &dstType,
2648
+ GPtrDiff_t nDstStrideInElts, size_t nValues);
2649
+
2650
+ private:
2651
+ GDALExtendedDataType(size_t nMaxStringLength,
2652
+ GDALExtendedDataTypeSubType eSubType);
2653
+ explicit GDALExtendedDataType(GDALDataType eType);
2654
+ GDALExtendedDataType(
2655
+ const std::string &osName, size_t nTotalSize,
2656
+ std::vector<std::unique_ptr<GDALEDTComponent>> &&components);
2657
+
2658
+ std::string m_osName{};
2659
+ GDALExtendedDataTypeClass m_eClass = GEDTC_NUMERIC;
2660
+ GDALExtendedDataTypeSubType m_eSubType = GEDTST_NONE;
2661
+ GDALDataType m_eNumericDT = GDT_Unknown;
2662
+ std::vector<std::unique_ptr<GDALEDTComponent>> m_aoComponents{};
2663
+ size_t m_nSize = 0;
2664
+ size_t m_nMaxStringLength = 0;
2665
+ };
2666
+
2667
+ /* ******************************************************************** */
2668
+ /* GDALEDTComponent */
2669
+ /* ******************************************************************** */
2670
+
2671
+ /**
2672
+ * Class for a component of a compound extended data type.
2673
+ *
2674
+ * @since GDAL 3.1
2675
+ */
2676
+ class CPL_DLL GDALEDTComponent
2677
+ {
2678
+ public:
2679
+ ~GDALEDTComponent();
2680
+ GDALEDTComponent(const std::string &name, size_t offset,
2681
+ const GDALExtendedDataType &type);
2682
+ GDALEDTComponent(const GDALEDTComponent &);
2683
+
2684
+ bool operator==(const GDALEDTComponent &) const;
2685
+
2686
+ /** Return the name.
2687
+ *
2688
+ * This is the same as the C function GDALEDTComponentGetName().
2689
+ */
2690
+ const std::string &GetName() const
2691
+ {
2692
+ return m_osName;
2693
+ }
2694
+
2695
+ /** Return the offset (in bytes) of the component in the compound data type.
2696
+ *
2697
+ * This is the same as the C function GDALEDTComponentGetOffset().
2698
+ */
2699
+ size_t GetOffset() const
2700
+ {
2701
+ return m_nOffset;
2702
+ }
2703
+
2704
+ /** Return the data type of the component.
2705
+ *
2706
+ * This is the same as the C function GDALEDTComponentGetType().
2707
+ */
2708
+ const GDALExtendedDataType &GetType() const
2709
+ {
2710
+ return m_oType;
2711
+ }
2712
+
2713
+ private:
2714
+ std::string m_osName;
2715
+ size_t m_nOffset;
2716
+ GDALExtendedDataType m_oType;
2717
+ };
2718
+
2719
+ /* ******************************************************************** */
2720
+ /* GDALIHasAttribute */
2721
+ /* ******************************************************************** */
2722
+
2723
+ /**
2724
+ * Interface used to get a single GDALAttribute or a set of GDALAttribute
2725
+ *
2726
+ * @since GDAL 3.1
2727
+ */
2728
+ class CPL_DLL GDALIHasAttribute
2729
+ {
2730
+ protected:
2731
+ std::shared_ptr<GDALAttribute>
2732
+ GetAttributeFromAttributes(const std::string &osName) const;
2733
+
2734
+ public:
2735
+ virtual ~GDALIHasAttribute();
2736
+
2737
+ virtual std::shared_ptr<GDALAttribute>
2738
+ GetAttribute(const std::string &osName) const;
2739
+
2740
+ virtual std::vector<std::shared_ptr<GDALAttribute>>
2741
+ GetAttributes(CSLConstList papszOptions = nullptr) const;
2742
+
2743
+ virtual std::shared_ptr<GDALAttribute>
2744
+ CreateAttribute(const std::string &osName,
2745
+ const std::vector<GUInt64> &anDimensions,
2746
+ const GDALExtendedDataType &oDataType,
2747
+ CSLConstList papszOptions = nullptr);
2748
+
2749
+ virtual bool DeleteAttribute(const std::string &osName,
2750
+ CSLConstList papszOptions = nullptr);
2751
+ };
2752
+
2753
+ /* ******************************************************************** */
2754
+ /* GDALGroup */
2755
+ /* ******************************************************************** */
2756
+
2757
+ /* clang-format off */
2758
+ /**
2759
+ * Class modeling a named container of GDALAttribute, GDALMDArray, OGRLayer or
2760
+ * other GDALGroup. Hence GDALGroup can describe a hierarchy of objects.
2761
+ *
2762
+ * This is based on the <a href="https://portal.opengeospatial.org/files/81716#_hdf5_group">HDF5 group
2763
+ * concept</a>
2764
+ *
2765
+ * @since GDAL 3.1
2766
+ */
2767
+ /* clang-format on */
2768
+
2769
+ class CPL_DLL GDALGroup : public GDALIHasAttribute
2770
+ {
2771
+ protected:
2772
+ //! @cond Doxygen_Suppress
2773
+ std::string m_osName{};
2774
+
2775
+ // This is actually a path of the form "/parent_path/{m_osName}"
2776
+ std::string m_osFullName{};
2777
+
2778
+ // Used for example by GDALSubsetGroup to distinguish a derived group
2779
+ //from its original, without altering its name
2780
+ const std::string m_osContext{};
2781
+
2782
+ std::weak_ptr<GDALGroup> m_pSelf{};
2783
+
2784
+ //! Can be set to false by the owing group, when deleting this object
2785
+ bool m_bValid = true;
2786
+
2787
+ GDALGroup(const std::string &osParentName, const std::string &osName,
2788
+ const std::string &osContext = std::string());
2789
+
2790
+ const GDALGroup *
2791
+ GetInnerMostGroup(const std::string &osPathOrArrayOrDim,
2792
+ std::shared_ptr<GDALGroup> &curGroupHolder,
2793
+ std::string &osLastPart) const;
2794
+
2795
+ void BaseRename(const std::string &osNewName);
2796
+
2797
+ bool CheckValidAndErrorOutIfNot() const;
2798
+
2799
+ void SetSelf(const std::shared_ptr<GDALGroup> &self)
2800
+ {
2801
+ m_pSelf = self;
2802
+ }
2803
+
2804
+ virtual void NotifyChildrenOfRenaming()
2805
+ {
2806
+ }
2807
+
2808
+ virtual void NotifyChildrenOfDeletion()
2809
+ {
2810
+ }
2811
+
2812
+ //! @endcond
2813
+
2814
+ public:
2815
+ virtual ~GDALGroup();
2816
+
2817
+ /** Return the name of the group.
2818
+ *
2819
+ * This is the same as the C function GDALGroupGetName().
2820
+ */
2821
+ const std::string &GetName() const
2822
+ {
2823
+ return m_osName;
2824
+ }
2825
+
2826
+ /** Return the full name of the group.
2827
+ *
2828
+ * This is the same as the C function GDALGroupGetFullName().
2829
+ */
2830
+ const std::string &GetFullName() const
2831
+ {
2832
+ return m_osFullName;
2833
+ }
2834
+
2835
+ virtual std::vector<std::string>
2836
+ GetMDArrayNames(CSLConstList papszOptions = nullptr) const;
2837
+ virtual std::shared_ptr<GDALMDArray>
2838
+ OpenMDArray(const std::string &osName,
2839
+ CSLConstList papszOptions = nullptr) const;
2840
+
2841
+ virtual std::vector<std::string>
2842
+ GetGroupNames(CSLConstList papszOptions = nullptr) const;
2843
+ virtual std::shared_ptr<GDALGroup>
2844
+ OpenGroup(const std::string &osName,
2845
+ CSLConstList papszOptions = nullptr) const;
2846
+
2847
+ virtual std::vector<std::string>
2848
+ GetVectorLayerNames(CSLConstList papszOptions = nullptr) const;
2849
+ virtual OGRLayer *
2850
+ OpenVectorLayer(const std::string &osName,
2851
+ CSLConstList papszOptions = nullptr) const;
2852
+
2853
+ virtual std::vector<std::shared_ptr<GDALDimension>>
2854
+ GetDimensions(CSLConstList papszOptions = nullptr) const;
2855
+
2856
+ virtual std::shared_ptr<GDALGroup>
2857
+ CreateGroup(const std::string &osName, CSLConstList papszOptions = nullptr);
2858
+
2859
+ virtual bool DeleteGroup(const std::string &osName,
2860
+ CSLConstList papszOptions = nullptr);
2861
+
2862
+ virtual std::shared_ptr<GDALDimension>
2863
+ CreateDimension(const std::string &osName, const std::string &osType,
2864
+ const std::string &osDirection, GUInt64 nSize,
2865
+ CSLConstList papszOptions = nullptr);
2866
+
2867
+ virtual std::shared_ptr<GDALMDArray> CreateMDArray(
2868
+ const std::string &osName,
2869
+ const std::vector<std::shared_ptr<GDALDimension>> &aoDimensions,
2870
+ const GDALExtendedDataType &oDataType,
2871
+ CSLConstList papszOptions = nullptr);
2872
+
2873
+ virtual bool DeleteMDArray(const std::string &osName,
2874
+ CSLConstList papszOptions = nullptr);
2875
+
2876
+ GUInt64 GetTotalCopyCost() const;
2877
+
2878
+ virtual bool CopyFrom(const std::shared_ptr<GDALGroup> &poDstRootGroup,
2879
+ GDALDataset *poSrcDS,
2880
+ const std::shared_ptr<GDALGroup> &poSrcGroup,
2881
+ bool bStrict, GUInt64 &nCurCost,
2882
+ const GUInt64 nTotalCost,
2883
+ GDALProgressFunc pfnProgress, void *pProgressData,
2884
+ CSLConstList papszOptions = nullptr);
2885
+
2886
+ virtual CSLConstList GetStructuralInfo() const;
2887
+
2888
+ std::shared_ptr<GDALMDArray>
2889
+ OpenMDArrayFromFullname(const std::string &osFullName,
2890
+ CSLConstList papszOptions = nullptr) const;
2891
+
2892
+ std::shared_ptr<GDALMDArray>
2893
+ ResolveMDArray(const std::string &osName, const std::string &osStartingPath,
2894
+ CSLConstList papszOptions = nullptr) const;
2895
+
2896
+ std::shared_ptr<GDALGroup>
2897
+ OpenGroupFromFullname(const std::string &osFullName,
2898
+ CSLConstList papszOptions = nullptr) const;
2899
+
2900
+ std::shared_ptr<GDALDimension>
2901
+ OpenDimensionFromFullname(const std::string &osFullName) const;
2902
+
2903
+ virtual void ClearStatistics();
2904
+
2905
+ virtual bool Rename(const std::string &osNewName);
2906
+
2907
+ std::shared_ptr<GDALGroup>
2908
+ SubsetDimensionFromSelection(const std::string &osSelection) const;
2909
+
2910
+ //! @cond Doxygen_Suppress
2911
+ virtual void ParentRenamed(const std::string &osNewParentFullName);
2912
+
2913
+ virtual void Deleted();
2914
+
2915
+ virtual void ParentDeleted();
2916
+
2917
+ const std::string &GetContext() const
2918
+ {
2919
+ return m_osContext;
2920
+ }
2921
+
2922
+ //! @endcond
2923
+
2924
+ //! @cond Doxygen_Suppress
2925
+ static constexpr GUInt64 COPY_COST = 1000;
2926
+ //! @endcond
2927
+ };
2928
+
2929
+ /* ******************************************************************** */
2930
+ /* GDALAbstractMDArray */
2931
+ /* ******************************************************************** */
2932
+
2933
+ /**
2934
+ * Abstract class, implemented by GDALAttribute and GDALMDArray.
2935
+ *
2936
+ * @since GDAL 3.1
2937
+ */
2938
+ class CPL_DLL GDALAbstractMDArray
2939
+ {
2940
+ protected:
2941
+ //! @cond Doxygen_Suppress
2942
+ std::string m_osName{};
2943
+
2944
+ // This is actually a path of the form "/parent_path/{m_osName}"
2945
+ std::string m_osFullName{};
2946
+ std::weak_ptr<GDALAbstractMDArray> m_pSelf{};
2947
+
2948
+ //! Can be set to false by the owing object, when deleting this object
2949
+ bool m_bValid = true;
2950
+
2951
+ GDALAbstractMDArray(const std::string &osParentName,
2952
+ const std::string &osName);
2953
+
2954
+ void SetSelf(const std::shared_ptr<GDALAbstractMDArray> &self)
2955
+ {
2956
+ m_pSelf = self;
2957
+ }
2958
+
2959
+ bool CheckValidAndErrorOutIfNot() const;
2960
+
2961
+ bool CheckReadWriteParams(const GUInt64 *arrayStartIdx, const size_t *count,
2962
+ const GInt64 *&arrayStep,
2963
+ const GPtrDiff_t *&bufferStride,
2964
+ const GDALExtendedDataType &bufferDataType,
2965
+ const void *buffer,
2966
+ const void *buffer_alloc_start,
2967
+ size_t buffer_alloc_size,
2968
+ std::vector<GInt64> &tmp_arrayStep,
2969
+ std::vector<GPtrDiff_t> &tmp_bufferStride) const;
2970
+
2971
+ virtual bool
2972
+ IRead(const GUInt64 *arrayStartIdx, // array of size GetDimensionCount()
2973
+ const size_t *count, // array of size GetDimensionCount()
2974
+ const GInt64 *arrayStep, // step in elements
2975
+ const GPtrDiff_t *bufferStride, // stride in elements
2976
+ const GDALExtendedDataType &bufferDataType,
2977
+ void *pDstBuffer) const = 0;
2978
+
2979
+ virtual bool
2980
+ IWrite(const GUInt64 *arrayStartIdx, // array of size GetDimensionCount()
2981
+ const size_t *count, // array of size GetDimensionCount()
2982
+ const GInt64 *arrayStep, // step in elements
2983
+ const GPtrDiff_t *bufferStride, // stride in elements
2984
+ const GDALExtendedDataType &bufferDataType, const void *pSrcBuffer);
2985
+
2986
+ void BaseRename(const std::string &osNewName);
2987
+
2988
+ virtual void NotifyChildrenOfRenaming()
2989
+ {
2990
+ }
2991
+
2992
+ virtual void NotifyChildrenOfDeletion()
2993
+ {
2994
+ }
2995
+
2996
+ //! @endcond
2997
+
2998
+ public:
2999
+ virtual ~GDALAbstractMDArray();
3000
+
3001
+ /** Return the name of an array or attribute.
3002
+ *
3003
+ * This is the same as the C function GDALMDArrayGetName() or
3004
+ * GDALAttributeGetName().
3005
+ */
3006
+ const std::string &GetName() const
3007
+ {
3008
+ return m_osName;
3009
+ }
3010
+
3011
+ /** Return the name of an array or attribute.
3012
+ *
3013
+ * This is the same as the C function GDALMDArrayGetFullName() or
3014
+ * GDALAttributeGetFullName().
3015
+ */
3016
+ const std::string &GetFullName() const
3017
+ {
3018
+ return m_osFullName;
3019
+ }
3020
+
3021
+ GUInt64 GetTotalElementsCount() const;
3022
+
3023
+ virtual size_t GetDimensionCount() const;
3024
+
3025
+ virtual const std::vector<std::shared_ptr<GDALDimension>> &
3026
+ GetDimensions() const = 0;
3027
+
3028
+ virtual const GDALExtendedDataType &GetDataType() const = 0;
3029
+
3030
+ virtual std::vector<GUInt64> GetBlockSize() const;
3031
+
3032
+ virtual std::vector<size_t>
3033
+ GetProcessingChunkSize(size_t nMaxChunkMemory) const;
3034
+
3035
+ /* clang-format off */
3036
+ /** Type of pfnFunc argument of ProcessPerChunk().
3037
+ * @param array Array on which ProcessPerChunk was called.
3038
+ * @param chunkArrayStartIdx Values representing the starting index to use
3039
+ * in each dimension (in [0, aoDims[i].GetSize()-1] range)
3040
+ * for the current chunk.
3041
+ * Will be nullptr for a zero-dimensional array.
3042
+ * @param chunkCount Values representing the number of values to use in
3043
+ * each dimension for the current chunk.
3044
+ * Will be nullptr for a zero-dimensional array.
3045
+ * @param iCurChunk Number of current chunk being processed.
3046
+ * In [1, nChunkCount] range.
3047
+ * @param nChunkCount Total number of chunks to process.
3048
+ * @param pUserData User data.
3049
+ * @return return true in case of success.
3050
+ */
3051
+ typedef bool (*FuncProcessPerChunkType)(
3052
+ GDALAbstractMDArray *array,
3053
+ const GUInt64 *chunkArrayStartIdx,
3054
+ const size_t *chunkCount,
3055
+ GUInt64 iCurChunk,
3056
+ GUInt64 nChunkCount,
3057
+ void *pUserData);
3058
+ /* clang-format on */
3059
+
3060
+ virtual bool ProcessPerChunk(const GUInt64 *arrayStartIdx,
3061
+ const GUInt64 *count, const size_t *chunkSize,
3062
+ FuncProcessPerChunkType pfnFunc,
3063
+ void *pUserData);
3064
+
3065
+ virtual bool
3066
+ Read(const GUInt64 *arrayStartIdx, // array of size GetDimensionCount()
3067
+ const size_t *count, // array of size GetDimensionCount()
3068
+ const GInt64 *arrayStep, // step in elements
3069
+ const GPtrDiff_t *bufferStride, // stride in elements
3070
+ const GDALExtendedDataType &bufferDataType, void *pDstBuffer,
3071
+ const void *pDstBufferAllocStart = nullptr,
3072
+ size_t nDstBufferAllocSize = 0) const;
3073
+
3074
+ bool
3075
+ Write(const GUInt64 *arrayStartIdx, // array of size GetDimensionCount()
3076
+ const size_t *count, // array of size GetDimensionCount()
3077
+ const GInt64 *arrayStep, // step in elements
3078
+ const GPtrDiff_t *bufferStride, // stride in elements
3079
+ const GDALExtendedDataType &bufferDataType, const void *pSrcBuffer,
3080
+ const void *pSrcBufferAllocStart = nullptr,
3081
+ size_t nSrcBufferAllocSize = 0);
3082
+
3083
+ virtual bool Rename(const std::string &osNewName);
3084
+
3085
+ //! @cond Doxygen_Suppress
3086
+ virtual void Deleted();
3087
+
3088
+ virtual void ParentDeleted();
3089
+
3090
+ virtual void ParentRenamed(const std::string &osNewParentFullName);
3091
+ //! @endcond
3092
+ };
3093
+
3094
+ /* ******************************************************************** */
3095
+ /* GDALRawResult */
3096
+ /* ******************************************************************** */
3097
+
3098
+ /**
3099
+ * Store the raw result of an attribute value, which might contain dynamically
3100
+ * allocated structures (like pointer to strings).
3101
+ *
3102
+ * @since GDAL 3.1
3103
+ */
3104
+ class CPL_DLL GDALRawResult
3105
+ {
3106
+ private:
3107
+ GDALExtendedDataType m_dt;
3108
+ size_t m_nEltCount;
3109
+ size_t m_nSize;
3110
+ GByte *m_raw;
3111
+
3112
+ void FreeMe();
3113
+
3114
+ GDALRawResult(const GDALRawResult &) = delete;
3115
+ GDALRawResult &operator=(const GDALRawResult &) = delete;
3116
+
3117
+ protected:
3118
+ friend class GDALAttribute;
3119
+ //! @cond Doxygen_Suppress
3120
+ GDALRawResult(GByte *raw, const GDALExtendedDataType &dt, size_t nEltCount);
3121
+ //! @endcond
3122
+
3123
+ public:
3124
+ ~GDALRawResult();
3125
+ GDALRawResult(GDALRawResult &&);
3126
+ GDALRawResult &operator=(GDALRawResult &&);
3127
+
3128
+ /** Return byte at specified index. */
3129
+ const GByte &operator[](size_t idx) const
3130
+ {
3131
+ return m_raw[idx];
3132
+ }
3133
+
3134
+ /** Return pointer to the start of data. */
3135
+ const GByte *data() const
3136
+ {
3137
+ return m_raw;
3138
+ }
3139
+
3140
+ /** Return the size in bytes of the raw result. */
3141
+ size_t size() const
3142
+ {
3143
+ return m_nSize;
3144
+ }
3145
+
3146
+ //! @cond Doxygen_Suppress
3147
+ GByte *StealData();
3148
+ //! @endcond
3149
+ };
3150
+
3151
+ /* ******************************************************************** */
3152
+ /* GDALAttribute */
3153
+ /* ******************************************************************** */
3154
+
3155
+ /* clang-format off */
3156
+ /**
3157
+ * Class modeling an attribute that has a name, a value and a type, and is
3158
+ * typically used to describe a metadata item. The value can be (for the
3159
+ * HDF5 format) in the general case a multidimensional array of "any" type
3160
+ * (in most cases, this will be a single value of string or numeric type)
3161
+ *
3162
+ * This is based on the <a href="https://portal.opengeospatial.org/files/81716#_hdf5_attribute">HDF5
3163
+ * attribute concept</a>
3164
+ *
3165
+ * @since GDAL 3.1
3166
+ */
3167
+ /* clang-format on */
3168
+
3169
+ class CPL_DLL GDALAttribute : virtual public GDALAbstractMDArray
3170
+ {
3171
+ mutable std::string m_osCachedVal{};
3172
+
3173
+ protected:
3174
+ //! @cond Doxygen_Suppress
3175
+ GDALAttribute(const std::string &osParentName, const std::string &osName);
3176
+ //! @endcond
3177
+
3178
+ public:
3179
+ std::vector<GUInt64> GetDimensionsSize() const;
3180
+
3181
+ GDALRawResult ReadAsRaw() const;
3182
+ const char *ReadAsString() const;
3183
+ int ReadAsInt() const;
3184
+ double ReadAsDouble() const;
3185
+ CPLStringList ReadAsStringArray() const;
3186
+ std::vector<int> ReadAsIntArray() const;
3187
+ std::vector<double> ReadAsDoubleArray() const;
3188
+
3189
+ using GDALAbstractMDArray::Write;
3190
+ bool Write(const void *pabyValue, size_t nLen);
3191
+ bool Write(const char *);
3192
+ bool WriteInt(int);
3193
+ bool Write(double);
3194
+ bool Write(CSLConstList);
3195
+ bool Write(const double *, size_t);
3196
+
3197
+ //! @cond Doxygen_Suppress
3198
+ static constexpr GUInt64 COPY_COST = 100;
3199
+ //! @endcond
3200
+ };
3201
+
3202
+ /************************************************************************/
3203
+ /* GDALAttributeString */
3204
+ /************************************************************************/
3205
+
3206
+ //! @cond Doxygen_Suppress
3207
+ class CPL_DLL GDALAttributeString final : public GDALAttribute
3208
+ {
3209
+ std::vector<std::shared_ptr<GDALDimension>> m_dims{};
3210
+ GDALExtendedDataType m_dt = GDALExtendedDataType::CreateString();
3211
+ std::string m_osValue;
3212
+
3213
+ protected:
3214
+ bool IRead(const GUInt64 *, const size_t *, const GInt64 *,
3215
+ const GPtrDiff_t *, const GDALExtendedDataType &bufferDataType,
3216
+ void *pDstBuffer) const override;
3217
+
3218
+ public:
3219
+ GDALAttributeString(const std::string &osParentName,
3220
+ const std::string &osName, const std::string &osValue,
3221
+ GDALExtendedDataTypeSubType eSubType = GEDTST_NONE);
3222
+
3223
+ const std::vector<std::shared_ptr<GDALDimension>> &
3224
+ GetDimensions() const override;
3225
+
3226
+ const GDALExtendedDataType &GetDataType() const override;
3227
+ };
3228
+
3229
+ //! @endcond
3230
+
3231
+ /************************************************************************/
3232
+ /* GDALAttributeNumeric */
3233
+ /************************************************************************/
3234
+
3235
+ //! @cond Doxygen_Suppress
3236
+ class CPL_DLL GDALAttributeNumeric final : public GDALAttribute
3237
+ {
3238
+ std::vector<std::shared_ptr<GDALDimension>> m_dims{};
3239
+ GDALExtendedDataType m_dt;
3240
+ int m_nValue = 0;
3241
+ double m_dfValue = 0;
3242
+ std::vector<GUInt32> m_anValuesUInt32{};
3243
+
3244
+ protected:
3245
+ bool IRead(const GUInt64 *, const size_t *, const GInt64 *,
3246
+ const GPtrDiff_t *, const GDALExtendedDataType &bufferDataType,
3247
+ void *pDstBuffer) const override;
3248
+
3249
+ public:
3250
+ GDALAttributeNumeric(const std::string &osParentName,
3251
+ const std::string &osName, double dfValue);
3252
+ GDALAttributeNumeric(const std::string &osParentName,
3253
+ const std::string &osName, int nValue);
3254
+ GDALAttributeNumeric(const std::string &osParentName,
3255
+ const std::string &osName,
3256
+ const std::vector<GUInt32> &anValues);
3257
+
3258
+ const std::vector<std::shared_ptr<GDALDimension>> &
3259
+ GetDimensions() const override;
3260
+
3261
+ const GDALExtendedDataType &GetDataType() const override;
3262
+ };
3263
+
3264
+ //! @endcond
3265
+
3266
+ /* ******************************************************************** */
3267
+ /* GDALMDArray */
3268
+ /* ******************************************************************** */
3269
+
3270
+ /* clang-format off */
3271
+ /**
3272
+ * Class modeling a multi-dimensional array. It has a name, values organized
3273
+ * as an array and a list of GDALAttribute.
3274
+ *
3275
+ * This is based on the <a href="https://portal.opengeospatial.org/files/81716#_hdf5_dataset">HDF5
3276
+ * dataset concept</a>
3277
+ *
3278
+ * @since GDAL 3.1
3279
+ */
3280
+ /* clang-format on */
3281
+
3282
+ class CPL_DLL GDALMDArray : virtual public GDALAbstractMDArray,
3283
+ public GDALIHasAttribute
3284
+ {
3285
+ friend class GDALMDArrayResampled;
3286
+ std::shared_ptr<GDALMDArray>
3287
+ GetView(const std::vector<GUInt64> &indices) const;
3288
+
3289
+ inline std::shared_ptr<GDALMDArray>
3290
+ atInternal(const std::vector<GUInt64> &indices) const
3291
+ {
3292
+ return GetView(indices);
3293
+ }
3294
+
3295
+ template <typename... GUInt64VarArg>
3296
+ // cppcheck-suppress functionStatic
3297
+ inline std::shared_ptr<GDALMDArray>
3298
+ atInternal(std::vector<GUInt64> &indices, GUInt64 idx,
3299
+ GUInt64VarArg... tail) const
3300
+ {
3301
+ indices.push_back(idx);
3302
+ return atInternal(indices, tail...);
3303
+ }
3304
+
3305
+ // Used for example by GDALSubsetGroup to distinguish a derived group
3306
+ //from its original, without altering its name
3307
+ const std::string m_osContext{};
3308
+
3309
+ mutable bool m_bHasTriedCachedArray = false;
3310
+ mutable std::shared_ptr<GDALMDArray> m_poCachedArray{};
3311
+
3312
+ protected:
3313
+ //! @cond Doxygen_Suppress
3314
+ GDALMDArray(const std::string &osParentName, const std::string &osName,
3315
+ const std::string &osContext = std::string());
3316
+
3317
+ virtual bool IAdviseRead(const GUInt64 *arrayStartIdx, const size_t *count,
3318
+ CSLConstList papszOptions) const;
3319
+
3320
+ virtual bool IsCacheable() const
3321
+ {
3322
+ return true;
3323
+ }
3324
+
3325
+ virtual bool SetStatistics(bool bApproxStats, double dfMin, double dfMax,
3326
+ double dfMean, double dfStdDev,
3327
+ GUInt64 nValidCount, CSLConstList papszOptions);
3328
+
3329
+ static std::string MassageName(const std::string &inputName);
3330
+
3331
+ std::shared_ptr<GDALGroup>
3332
+ GetCacheRootGroup(bool bCanCreate, std::string &osCacheFilenameOut) const;
3333
+
3334
+ // Returns if bufferStride values express a transposed view of the array
3335
+ bool IsTransposedRequest(const size_t *count,
3336
+ const GPtrDiff_t *bufferStride) const;
3337
+
3338
+ // Should only be called if IsTransposedRequest() returns true
3339
+ bool ReadForTransposedRequest(const GUInt64 *arrayStartIdx,
3340
+ const size_t *count, const GInt64 *arrayStep,
3341
+ const GPtrDiff_t *bufferStride,
3342
+ const GDALExtendedDataType &bufferDataType,
3343
+ void *pDstBuffer) const;
3344
+
3345
+ bool IsStepOneContiguousRowMajorOrderedSameDataType(
3346
+ const size_t *count, const GInt64 *arrayStep,
3347
+ const GPtrDiff_t *bufferStride,
3348
+ const GDALExtendedDataType &bufferDataType) const;
3349
+
3350
+ // Should only be called if IsStepOneContiguousRowMajorOrderedSameDataType()
3351
+ // returns false
3352
+ bool ReadUsingContiguousIRead(const GUInt64 *arrayStartIdx,
3353
+ const size_t *count, const GInt64 *arrayStep,
3354
+ const GPtrDiff_t *bufferStride,
3355
+ const GDALExtendedDataType &bufferDataType,
3356
+ void *pDstBuffer) const;
3357
+
3358
+ static std::shared_ptr<GDALMDArray>
3359
+ CreateGLTOrthorectified(const std::shared_ptr<GDALMDArray> &poParent,
3360
+ const std::shared_ptr<GDALMDArray> &poGLTX,
3361
+ const std::shared_ptr<GDALMDArray> &poGLTY,
3362
+ int nGLTIndexOffset,
3363
+ const std::vector<double> &adfGeoTransform);
3364
+
3365
+ //! @endcond
3366
+
3367
+ public:
3368
+ GUInt64 GetTotalCopyCost() const;
3369
+
3370
+ virtual bool CopyFrom(GDALDataset *poSrcDS, const GDALMDArray *poSrcArray,
3371
+ bool bStrict, GUInt64 &nCurCost,
3372
+ const GUInt64 nTotalCost,
3373
+ GDALProgressFunc pfnProgress, void *pProgressData);
3374
+
3375
+ /** Return whether an array is writable. */
3376
+ virtual bool IsWritable() const = 0;
3377
+
3378
+ /** Return the filename that contains that array.
3379
+ *
3380
+ * This is used in particular for caching.
3381
+ *
3382
+ * Might be empty if the array is not linked to a file.
3383
+ *
3384
+ * @since GDAL 3.4
3385
+ */
3386
+ virtual const std::string &GetFilename() const = 0;
3387
+
3388
+ virtual CSLConstList GetStructuralInfo() const;
3389
+
3390
+ virtual const std::string &GetUnit() const;
3391
+
3392
+ virtual bool SetUnit(const std::string &osUnit);
3393
+
3394
+ virtual bool SetSpatialRef(const OGRSpatialReference *poSRS);
3395
+
3396
+ virtual std::shared_ptr<OGRSpatialReference> GetSpatialRef() const;
3397
+
3398
+ virtual const void *GetRawNoDataValue() const;
3399
+
3400
+ double GetNoDataValueAsDouble(bool *pbHasNoData = nullptr) const;
3401
+
3402
+ int64_t GetNoDataValueAsInt64(bool *pbHasNoData = nullptr) const;
3403
+
3404
+ uint64_t GetNoDataValueAsUInt64(bool *pbHasNoData = nullptr) const;
3405
+
3406
+ virtual bool SetRawNoDataValue(const void *pRawNoData);
3407
+
3408
+ //! @cond Doxygen_Suppress
3409
+ bool SetNoDataValue(int nNoData)
3410
+ {
3411
+ return SetNoDataValue(static_cast<int64_t>(nNoData));
3412
+ }
3413
+
3414
+ //! @endcond
3415
+
3416
+ bool SetNoDataValue(double dfNoData);
3417
+
3418
+ bool SetNoDataValue(int64_t nNoData);
3419
+
3420
+ bool SetNoDataValue(uint64_t nNoData);
3421
+
3422
+ virtual bool Resize(const std::vector<GUInt64> &anNewDimSizes,
3423
+ CSLConstList papszOptions);
3424
+
3425
+ virtual double GetOffset(bool *pbHasOffset = nullptr,
3426
+ GDALDataType *peStorageType = nullptr) const;
3427
+
3428
+ virtual double GetScale(bool *pbHasScale = nullptr,
3429
+ GDALDataType *peStorageType = nullptr) const;
3430
+
3431
+ virtual bool SetOffset(double dfOffset,
3432
+ GDALDataType eStorageType = GDT_Unknown);
3433
+
3434
+ virtual bool SetScale(double dfScale,
3435
+ GDALDataType eStorageType = GDT_Unknown);
3436
+
3437
+ std::shared_ptr<GDALMDArray> GetView(const std::string &viewExpr) const;
3438
+
3439
+ std::shared_ptr<GDALMDArray> operator[](const std::string &fieldName) const;
3440
+
3441
+ /** Return a view of the array using integer indexing.
3442
+ *
3443
+ * Equivalent of GetView("[indices_0,indices_1,.....,indices_last]")
3444
+ *
3445
+ * Example:
3446
+ * \code
3447
+ * ar->at(0,3,2)
3448
+ * \endcode
3449
+ */
3450
+ // sphinx 4.1.0 / breathe 4.30.0 don't like typename...
3451
+ //! @cond Doxygen_Suppress
3452
+ template <typename... GUInt64VarArg>
3453
+ //! @endcond
3454
+ // cppcheck-suppress functionStatic
3455
+ std::shared_ptr<GDALMDArray> at(GUInt64 idx, GUInt64VarArg... tail) const
3456
+ {
3457
+ std::vector<GUInt64> indices;
3458
+ indices.push_back(idx);
3459
+ return atInternal(indices, tail...);
3460
+ }
3461
+
3462
+ virtual std::shared_ptr<GDALMDArray>
3463
+ Transpose(const std::vector<int> &anMapNewAxisToOldAxis) const;
3464
+
3465
+ std::shared_ptr<GDALMDArray> GetUnscaled(
3466
+ double dfOverriddenScale = std::numeric_limits<double>::quiet_NaN(),
3467
+ double dfOverriddenOffset = std::numeric_limits<double>::quiet_NaN(),
3468
+ double dfOverriddenDstNodata =
3469
+ std::numeric_limits<double>::quiet_NaN()) const;
3470
+
3471
+ virtual std::shared_ptr<GDALMDArray>
3472
+ GetMask(CSLConstList papszOptions) const;
3473
+
3474
+ virtual std::shared_ptr<GDALMDArray>
3475
+ GetResampled(const std::vector<std::shared_ptr<GDALDimension>> &apoNewDims,
3476
+ GDALRIOResampleAlg resampleAlg,
3477
+ const OGRSpatialReference *poTargetSRS,
3478
+ CSLConstList papszOptions) const;
3479
+
3480
+ std::shared_ptr<GDALMDArray>
3481
+ GetGridded(const std::string &osGridOptions,
3482
+ const std::shared_ptr<GDALMDArray> &poXArray = nullptr,
3483
+ const std::shared_ptr<GDALMDArray> &poYArray = nullptr,
3484
+ CSLConstList papszOptions = nullptr) const;
3485
+
3486
+ virtual GDALDataset *
3487
+ AsClassicDataset(size_t iXDim, size_t iYDim,
3488
+ const std::shared_ptr<GDALGroup> &poRootGroup = nullptr,
3489
+ CSLConstList papszOptions = nullptr) const;
3490
+
3491
+ virtual CPLErr GetStatistics(bool bApproxOK, bool bForce, double *pdfMin,
3492
+ double *pdfMax, double *pdfMean,
3493
+ double *padfStdDev, GUInt64 *pnValidCount,
3494
+ GDALProgressFunc pfnProgress,
3495
+ void *pProgressData);
3496
+
3497
+ virtual bool ComputeStatistics(bool bApproxOK, double *pdfMin,
3498
+ double *pdfMax, double *pdfMean,
3499
+ double *pdfStdDev, GUInt64 *pnValidCount,
3500
+ GDALProgressFunc, void *pProgressData,
3501
+ CSLConstList papszOptions);
3502
+
3503
+ virtual void ClearStatistics();
3504
+
3505
+ virtual std::vector<std::shared_ptr<GDALMDArray>>
3506
+ GetCoordinateVariables() const;
3507
+
3508
+ bool AdviseRead(const GUInt64 *arrayStartIdx, const size_t *count,
3509
+ CSLConstList papszOptions = nullptr) const;
3510
+
3511
+ bool IsRegularlySpaced(double &dfStart, double &dfIncrement) const;
3512
+
3513
+ bool GuessGeoTransform(size_t nDimX, size_t nDimY, bool bPixelIsPoint,
3514
+ double adfGeoTransform[6]) const;
3515
+
3516
+ bool Cache(CSLConstList papszOptions = nullptr) const;
3517
+
3518
+ bool
3519
+ Read(const GUInt64 *arrayStartIdx, // array of size GetDimensionCount()
3520
+ const size_t *count, // array of size GetDimensionCount()
3521
+ const GInt64 *arrayStep, // step in elements
3522
+ const GPtrDiff_t *bufferStride, // stride in elements
3523
+ const GDALExtendedDataType &bufferDataType, void *pDstBuffer,
3524
+ const void *pDstBufferAllocStart = nullptr,
3525
+ size_t nDstBufferAllocSize = 0) const override final;
3526
+
3527
+ virtual std::shared_ptr<GDALGroup> GetRootGroup() const;
3528
+
3529
+ //! @cond Doxygen_Suppress
3530
+ static constexpr GUInt64 COPY_COST = 1000;
3531
+
3532
+ bool CopyFromAllExceptValues(const GDALMDArray *poSrcArray, bool bStrict,
3533
+ GUInt64 &nCurCost, const GUInt64 nTotalCost,
3534
+ GDALProgressFunc pfnProgress,
3535
+ void *pProgressData);
3536
+
3537
+ struct Range
3538
+ {
3539
+ GUInt64 m_nStartIdx;
3540
+ GInt64 m_nIncr;
3541
+
3542
+ explicit Range(GUInt64 nStartIdx = 0, GInt64 nIncr = 0)
3543
+ : m_nStartIdx(nStartIdx), m_nIncr(nIncr)
3544
+ {
3545
+ }
3546
+ };
3547
+
3548
+ struct ViewSpec
3549
+ {
3550
+ std::string m_osFieldName{};
3551
+
3552
+ // or
3553
+
3554
+ std::vector<size_t>
3555
+ m_mapDimIdxToParentDimIdx{}; // of size m_dims.size()
3556
+ std::vector<Range>
3557
+ m_parentRanges{}; // of size m_poParent->GetDimensionCount()
3558
+ };
3559
+
3560
+ virtual std::shared_ptr<GDALMDArray>
3561
+ GetView(const std::string &viewExpr, bool bRenameDimensions,
3562
+ std::vector<ViewSpec> &viewSpecs) const;
3563
+
3564
+ const std::string &GetContext() const
3565
+ {
3566
+ return m_osContext;
3567
+ }
3568
+
3569
+ //! @endcond
3570
+ };
3571
+
3572
+ //! @cond Doxygen_Suppress
3573
+ bool GDALMDRasterIOFromBand(GDALRasterBand *poBand, GDALRWFlag eRWFlag,
3574
+ size_t iDimX, size_t iDimY,
3575
+ const GUInt64 *arrayStartIdx, const size_t *count,
3576
+ const GInt64 *arrayStep,
3577
+ const GPtrDiff_t *bufferStride,
3578
+ const GDALExtendedDataType &bufferDataType,
3579
+ void *pBuffer);
3580
+
3581
+ //! @endcond
3582
+
3583
+ /************************************************************************/
3584
+ /* GDALMDArrayRegularlySpaced */
3585
+ /************************************************************************/
3586
+
3587
+ //! @cond Doxygen_Suppress
3588
+ class CPL_DLL GDALMDArrayRegularlySpaced : public GDALMDArray
3589
+ {
3590
+ double m_dfStart;
3591
+ double m_dfIncrement;
3592
+ double m_dfOffsetInIncrement;
3593
+ GDALExtendedDataType m_dt = GDALExtendedDataType::Create(GDT_Float64);
3594
+ std::vector<std::shared_ptr<GDALDimension>> m_dims;
3595
+ std::vector<std::shared_ptr<GDALAttribute>> m_attributes{};
3596
+ std::string m_osEmptyFilename{};
3597
+
3598
+ protected:
3599
+ bool IRead(const GUInt64 *, const size_t *, const GInt64 *,
3600
+ const GPtrDiff_t *, const GDALExtendedDataType &bufferDataType,
3601
+ void *pDstBuffer) const override;
3602
+
3603
+ public:
3604
+ GDALMDArrayRegularlySpaced(const std::string &osParentName,
3605
+ const std::string &osName,
3606
+ const std::shared_ptr<GDALDimension> &poDim,
3607
+ double dfStart, double dfIncrement,
3608
+ double dfOffsetInIncrement);
3609
+
3610
+ static std::shared_ptr<GDALMDArrayRegularlySpaced>
3611
+ Create(const std::string &osParentName, const std::string &osName,
3612
+ const std::shared_ptr<GDALDimension> &poDim, double dfStart,
3613
+ double dfIncrement, double dfOffsetInIncrement);
3614
+
3615
+ bool IsWritable() const override
3616
+ {
3617
+ return false;
3618
+ }
3619
+
3620
+ const std::string &GetFilename() const override
3621
+ {
3622
+ return m_osEmptyFilename;
3623
+ }
3624
+
3625
+ const std::vector<std::shared_ptr<GDALDimension>> &
3626
+ GetDimensions() const override;
3627
+
3628
+ const GDALExtendedDataType &GetDataType() const override;
3629
+
3630
+ std::vector<std::shared_ptr<GDALAttribute>>
3631
+ GetAttributes(CSLConstList) const override;
3632
+
3633
+ void AddAttribute(const std::shared_ptr<GDALAttribute> &poAttr);
3634
+ };
3635
+
3636
+ //! @endcond
3637
+
3638
+ /* ******************************************************************** */
3639
+ /* GDALDimension */
3640
+ /* ******************************************************************** */
3641
+
3642
+ /**
3643
+ * Class modeling a a dimension / axis used to index multidimensional arrays.
3644
+ * It has a name, a size (that is the number of values that can be indexed along
3645
+ * the dimension), a type (see GDALDimension::GetType()), a direction
3646
+ * (see GDALDimension::GetDirection()), a unit and can optionally point to a
3647
+ * GDALMDArray variable, typically one-dimensional, describing the values taken
3648
+ * by the dimension. For a georeferenced GDALMDArray and its X dimension, this
3649
+ * will be typically the values of the easting/longitude for each grid point.
3650
+ *
3651
+ * @since GDAL 3.1
3652
+ */
3653
+ class CPL_DLL GDALDimension
3654
+ {
3655
+ public:
3656
+ //! @cond Doxygen_Suppress
3657
+ GDALDimension(const std::string &osParentName, const std::string &osName,
3658
+ const std::string &osType, const std::string &osDirection,
3659
+ GUInt64 nSize);
3660
+ //! @endcond
3661
+
3662
+ virtual ~GDALDimension();
3663
+
3664
+ /** Return the name.
3665
+ *
3666
+ * This is the same as the C function GDALDimensionGetName()
3667
+ */
3668
+ const std::string &GetName() const
3669
+ {
3670
+ return m_osName;
3671
+ }
3672
+
3673
+ /** Return the full name.
3674
+ *
3675
+ * This is the same as the C function GDALDimensionGetFullName()
3676
+ */
3677
+ const std::string &GetFullName() const
3678
+ {
3679
+ return m_osFullName;
3680
+ }
3681
+
3682
+ /** Return the axis type.
3683
+ *
3684
+ * Predefined values are:
3685
+ * HORIZONTAL_X, HORIZONTAL_Y, VERTICAL, TEMPORAL, PARAMETRIC
3686
+ * Other values might be returned. Empty value means unknown.
3687
+ *
3688
+ * This is the same as the C function GDALDimensionGetType()
3689
+ */
3690
+ const std::string &GetType() const
3691
+ {
3692
+ return m_osType;
3693
+ }
3694
+
3695
+ /** Return the axis direction.
3696
+ *
3697
+ * Predefined values are:
3698
+ * EAST, WEST, SOUTH, NORTH, UP, DOWN, FUTURE, PAST
3699
+ * Other values might be returned. Empty value means unknown.
3700
+ *
3701
+ * This is the same as the C function GDALDimensionGetDirection()
3702
+ */
3703
+ const std::string &GetDirection() const
3704
+ {
3705
+ return m_osDirection;
3706
+ }
3707
+
3708
+ /** Return the size, that is the number of values along the dimension.
3709
+ *
3710
+ * This is the same as the C function GDALDimensionGetSize()
3711
+ */
3712
+ GUInt64 GetSize() const
3713
+ {
3714
+ return m_nSize;
3715
+ }
3716
+
3717
+ virtual std::shared_ptr<GDALMDArray> GetIndexingVariable() const;
3718
+
3719
+ virtual bool
3720
+ SetIndexingVariable(std::shared_ptr<GDALMDArray> poIndexingVariable);
3721
+
3722
+ virtual bool Rename(const std::string &osNewName);
3723
+
3724
+ //! @cond Doxygen_Suppress
3725
+ virtual void ParentRenamed(const std::string &osNewParentFullName);
3726
+
3727
+ virtual void ParentDeleted();
3728
+ //! @endcond
3729
+
3730
+ protected:
3731
+ //! @cond Doxygen_Suppress
3732
+ std::string m_osName;
3733
+ std::string m_osFullName;
3734
+ std::string m_osType;
3735
+ std::string m_osDirection;
3736
+ GUInt64 m_nSize;
3737
+
3738
+ void BaseRename(const std::string &osNewName);
3739
+
3740
+ //! @endcond
3741
+ };
3742
+
3743
+ /************************************************************************/
3744
+ /* GDALDimensionWeakIndexingVar() */
3745
+ /************************************************************************/
3746
+
3747
+ //! @cond Doxygen_Suppress
3748
+ class CPL_DLL GDALDimensionWeakIndexingVar : public GDALDimension
3749
+ {
3750
+ std::weak_ptr<GDALMDArray> m_poIndexingVariable{};
3751
+
3752
+ public:
3753
+ GDALDimensionWeakIndexingVar(const std::string &osParentName,
3754
+ const std::string &osName,
3755
+ const std::string &osType,
3756
+ const std::string &osDirection, GUInt64 nSize);
3757
+
3758
+ std::shared_ptr<GDALMDArray> GetIndexingVariable() const override;
3759
+
3760
+ bool SetIndexingVariable(
3761
+ std::shared_ptr<GDALMDArray> poIndexingVariable) override;
3762
+
3763
+ void SetSize(GUInt64 nNewSize);
3764
+ };
3765
+ //! @endcond
3766
+
3767
+ /************************************************************************/
3768
+ /* GDALAntiRecursionGuard */
3769
+ /************************************************************************/
3770
+
3771
+ //! @cond Doxygen_Suppress
3772
+ struct GDALAntiRecursionStruct;
3773
+
3774
+ class GDALAntiRecursionGuard
3775
+ {
3776
+ GDALAntiRecursionStruct *m_psAntiRecursionStruct;
3777
+ std::string m_osIdentifier;
3778
+ int m_nDepth;
3779
+
3780
+ GDALAntiRecursionGuard(const GDALAntiRecursionGuard &) = delete;
3781
+ GDALAntiRecursionGuard &operator=(const GDALAntiRecursionGuard &) = delete;
3782
+
3783
+ public:
3784
+ explicit GDALAntiRecursionGuard(const std::string &osIdentifier);
3785
+ GDALAntiRecursionGuard(const GDALAntiRecursionGuard &other,
3786
+ const std::string &osIdentifier);
3787
+ ~GDALAntiRecursionGuard();
3788
+
3789
+ int GetCallDepth() const
3790
+ {
3791
+ return m_nDepth;
3792
+ }
3793
+ };
3794
+
3795
+ //! @endcond
3796
+
3797
+ /************************************************************************/
3798
+ /* Relationships */
3799
+ /************************************************************************/
3800
+
3801
+ /**
3802
+ * Definition of a table relationship.
3803
+ *
3804
+ * GDALRelationship describes the relationship between two tables, including
3805
+ * properties such as the cardinality of the relationship and the participating
3806
+ * tables.
3807
+ *
3808
+ * Not all relationship properties are supported by all data formats.
3809
+ *
3810
+ * @since GDAL 3.6
3811
+ */
3812
+ class CPL_DLL GDALRelationship
3813
+ {
3814
+ protected:
3815
+ /*! @cond Doxygen_Suppress */
3816
+ std::string m_osName{};
3817
+ std::string m_osLeftTableName{};
3818
+ std::string m_osRightTableName{};
3819
+ GDALRelationshipCardinality m_eCardinality =
3820
+ GDALRelationshipCardinality::GRC_ONE_TO_MANY;
3821
+ std::string m_osMappingTableName{};
3822
+ std::vector<std::string> m_osListLeftTableFields{};
3823
+ std::vector<std::string> m_osListRightTableFields{};
3824
+ std::vector<std::string> m_osListLeftMappingTableFields{};
3825
+ std::vector<std::string> m_osListRightMappingTableFields{};
3826
+ GDALRelationshipType m_eType = GDALRelationshipType::GRT_ASSOCIATION;
3827
+ std::string m_osForwardPathLabel{};
3828
+ std::string m_osBackwardPathLabel{};
3829
+ std::string m_osRelatedTableType{};
3830
+
3831
+ /*! @endcond */
3832
+
3833
+ public:
3834
+ /**
3835
+ * Constructor for a relationship between two tables.
3836
+ * @param osName relationship name
3837
+ * @param osLeftTableName left table name
3838
+ * @param osRightTableName right table name
3839
+ * @param eCardinality cardinality of relationship
3840
+ */
3841
+ GDALRelationship(const std::string &osName,
3842
+ const std::string &osLeftTableName,
3843
+ const std::string &osRightTableName,
3844
+ GDALRelationshipCardinality eCardinality =
3845
+ GDALRelationshipCardinality::GRC_ONE_TO_MANY)
3846
+ : m_osName(osName), m_osLeftTableName(osLeftTableName),
3847
+ m_osRightTableName(osRightTableName), m_eCardinality(eCardinality)
3848
+ {
3849
+ }
3850
+
3851
+ /** Get the name of the relationship */
3852
+ const std::string &GetName() const
3853
+ {
3854
+ return m_osName;
3855
+ }
3856
+
3857
+ /** Get the cardinality of the relationship */
3858
+ GDALRelationshipCardinality GetCardinality() const
3859
+ {
3860
+ return m_eCardinality;
3861
+ }
3862
+
3863
+ /** Get the name of the left (or base/origin) table in the relationship.
3864
+ *
3865
+ * @see GetRightTableName()
3866
+ */
3867
+ const std::string &GetLeftTableName() const
3868
+ {
3869
+ return m_osLeftTableName;
3870
+ }
3871
+
3872
+ /** Get the name of the right (or related/destination) table in the
3873
+ * relationship */
3874
+ const std::string &GetRightTableName() const
3875
+ {
3876
+ return m_osRightTableName;
3877
+ }
3878
+
3879
+ /** Get the name of the mapping table for many-to-many relationships.
3880
+ *
3881
+ * @see SetMappingTableName()
3882
+ */
3883
+ const std::string &GetMappingTableName() const
3884
+ {
3885
+ return m_osMappingTableName;
3886
+ }
3887
+
3888
+ /** Sets the name of the mapping table for many-to-many relationships.
3889
+ *
3890
+ * @see GetMappingTableName()
3891
+ */
3892
+ void SetMappingTableName(const std::string &osName)
3893
+ {
3894
+ m_osMappingTableName = osName;
3895
+ }
3896
+
3897
+ /** Get the names of the participating fields from the left table in the
3898
+ * relationship.
3899
+ *
3900
+ * @see GetRightTableFields()
3901
+ * @see SetLeftTableFields()
3902
+ */
3903
+ const std::vector<std::string> &GetLeftTableFields() const
3904
+ {
3905
+ return m_osListLeftTableFields;
3906
+ }
3907
+
3908
+ /** Get the names of the participating fields from the right table in the
3909
+ * relationship.
3910
+ *
3911
+ * @see GetLeftTableFields()
3912
+ * @see SetRightTableFields()
3913
+ */
3914
+ const std::vector<std::string> &GetRightTableFields() const
3915
+ {
3916
+ return m_osListRightTableFields;
3917
+ }
3918
+
3919
+ /** Sets the names of the participating fields from the left table in the
3920
+ * relationship.
3921
+ *
3922
+ * @see GetLeftTableFields()
3923
+ * @see SetRightTableFields()
3924
+ */
3925
+ void SetLeftTableFields(const std::vector<std::string> &osListFields)
3926
+ {
3927
+ m_osListLeftTableFields = osListFields;
3928
+ }
3929
+
3930
+ /** Sets the names of the participating fields from the right table in the
3931
+ * relationship.
3932
+ *
3933
+ * @see GetRightTableFields()
3934
+ * @see SetLeftTableFields()
3935
+ */
3936
+ void SetRightTableFields(const std::vector<std::string> &osListFields)
3937
+ {
3938
+ m_osListRightTableFields = osListFields;
3939
+ }
3940
+
3941
+ /** Get the names of the mapping table fields which correspond to the
3942
+ * participating fields from the left table in the relationship.
3943
+ *
3944
+ * @see GetRightMappingTableFields()
3945
+ * @see SetLeftMappingTableFields()
3946
+ */
3947
+ const std::vector<std::string> &GetLeftMappingTableFields() const
3948
+ {
3949
+ return m_osListLeftMappingTableFields;
3950
+ }
3951
+
3952
+ /** Get the names of the mapping table fields which correspond to the
3953
+ * participating fields from the right table in the relationship.
3954
+ *
3955
+ * @see GetLeftMappingTableFields()
3956
+ * @see SetRightMappingTableFields()
3957
+ */
3958
+ const std::vector<std::string> &GetRightMappingTableFields() const
3959
+ {
3960
+ return m_osListRightMappingTableFields;
3961
+ }
3962
+
3963
+ /** Sets the names of the mapping table fields which correspond to the
3964
+ * participating fields from the left table in the relationship.
3965
+ *
3966
+ * @see GetLeftMappingTableFields()
3967
+ * @see SetRightMappingTableFields()
3968
+ */
3969
+ void SetLeftMappingTableFields(const std::vector<std::string> &osListFields)
3970
+ {
3971
+ m_osListLeftMappingTableFields = osListFields;
3972
+ }
3973
+
3974
+ /** Sets the names of the mapping table fields which correspond to the
3975
+ * participating fields from the right table in the relationship.
3976
+ *
3977
+ * @see GetRightMappingTableFields()
3978
+ * @see SetLeftMappingTableFields()
3979
+ */
3980
+ void
3981
+ SetRightMappingTableFields(const std::vector<std::string> &osListFields)
3982
+ {
3983
+ m_osListRightMappingTableFields = osListFields;
3984
+ }
3985
+
3986
+ /** Get the type of the relationship.
3987
+ *
3988
+ * @see SetType()
3989
+ */
3990
+ GDALRelationshipType GetType() const
3991
+ {
3992
+ return m_eType;
3993
+ }
3994
+
3995
+ /** Sets the type of the relationship.
3996
+ *
3997
+ * @see GetType()
3998
+ */
3999
+ void SetType(GDALRelationshipType eType)
4000
+ {
4001
+ m_eType = eType;
4002
+ }
4003
+
4004
+ /** Get the label of the forward path for the relationship.
4005
+ *
4006
+ * The forward and backward path labels are free-form, user-friendly strings
4007
+ * which can be used to generate descriptions of the relationship between
4008
+ * features from the right and left tables.
4009
+ *
4010
+ * E.g. when the left table contains buildings and the right table contains
4011
+ * furniture, the forward path label could be "contains" and the backward
4012
+ * path label could be "is located within". A client could then generate a
4013
+ * user friendly description string such as "fire hose 1234 is located
4014
+ * within building 15a".
4015
+ *
4016
+ * @see SetForwardPathLabel()
4017
+ * @see GetBackwardPathLabel()
4018
+ */
4019
+ const std::string &GetForwardPathLabel() const
4020
+ {
4021
+ return m_osForwardPathLabel;
4022
+ }
4023
+
4024
+ /** Sets the label of the forward path for the relationship.
4025
+ *
4026
+ * The forward and backward path labels are free-form, user-friendly strings
4027
+ * which can be used to generate descriptions of the relationship between
4028
+ * features from the right and left tables.
4029
+ *
4030
+ * E.g. when the left table contains buildings and the right table contains
4031
+ * furniture, the forward path label could be "contains" and the backward
4032
+ * path label could be "is located within". A client could then generate a
4033
+ * user friendly description string such as "fire hose 1234 is located
4034
+ * within building 15a".
4035
+ *
4036
+ * @see GetForwardPathLabel()
4037
+ * @see SetBackwardPathLabel()
4038
+ */
4039
+ void SetForwardPathLabel(const std::string &osLabel)
4040
+ {
4041
+ m_osForwardPathLabel = osLabel;
4042
+ }
4043
+
4044
+ /** Get the label of the backward path for the relationship.
4045
+ *
4046
+ * The forward and backward path labels are free-form, user-friendly strings
4047
+ * which can be used to generate descriptions of the relationship between
4048
+ * features from the right and left tables.
4049
+ *
4050
+ * E.g. when the left table contains buildings and the right table contains
4051
+ * furniture, the forward path label could be "contains" and the backward
4052
+ * path label could be "is located within". A client could then generate a
4053
+ * user friendly description string such as "fire hose 1234 is located
4054
+ * within building 15a".
4055
+ *
4056
+ * @see SetBackwardPathLabel()
4057
+ * @see GetForwardPathLabel()
4058
+ */
4059
+ const std::string &GetBackwardPathLabel() const
4060
+ {
4061
+ return m_osBackwardPathLabel;
4062
+ }
4063
+
4064
+ /** Sets the label of the backward path for the relationship.
4065
+ *
4066
+ * The forward and backward path labels are free-form, user-friendly strings
4067
+ * which can be used to generate descriptions of the relationship between
4068
+ * features from the right and left tables.
4069
+ *
4070
+ * E.g. when the left table contains buildings and the right table contains
4071
+ * furniture, the forward path label could be "contains" and the backward
4072
+ * path label could be "is located within". A client could then generate a
4073
+ * user friendly description string such as "fire hose 1234 is located
4074
+ * within building 15a".
4075
+ *
4076
+ * @see GetBackwardPathLabel()
4077
+ * @see SetForwardPathLabel()
4078
+ */
4079
+ void SetBackwardPathLabel(const std::string &osLabel)
4080
+ {
4081
+ m_osBackwardPathLabel = osLabel;
4082
+ }
4083
+
4084
+ /** Get the type string of the related table.
4085
+ *
4086
+ * This a free-form string representing the type of related features, where
4087
+ * the exact interpretation is format dependent. For instance, table types
4088
+ * from GeoPackage relationships will directly reflect the categories from
4089
+ * the GeoPackage related tables extension (i.e. "media", "simple
4090
+ * attributes", "features", "attributes" and "tiles").
4091
+ *
4092
+ * @see SetRelatedTableType()
4093
+ */
4094
+ const std::string &GetRelatedTableType() const
4095
+ {
4096
+ return m_osRelatedTableType;
4097
+ }
4098
+
4099
+ /** Sets the type string of the related table.
4100
+ *
4101
+ * This a free-form string representing the type of related features, where
4102
+ * the exact interpretation is format dependent. For instance, table types
4103
+ * from GeoPackage relationships will directly reflect the categories from
4104
+ * the GeoPackage related tables extension (i.e. "media", "simple
4105
+ * attributes", "features", "attributes" and "tiles").
4106
+ *
4107
+ * @see GetRelatedTableType()
4108
+ */
4109
+ void SetRelatedTableType(const std::string &osType)
4110
+ {
4111
+ m_osRelatedTableType = osType;
4112
+ }
4113
+
4114
+ /** Convert a GDALRelationship* to a GDALRelationshipH.
4115
+ */
4116
+ static inline GDALRelationshipH ToHandle(GDALRelationship *poRelationship)
4117
+ {
4118
+ return static_cast<GDALRelationshipH>(poRelationship);
4119
+ }
4120
+
4121
+ /** Convert a GDALRelationshipH to a GDALRelationship*.
4122
+ */
4123
+ static inline GDALRelationship *FromHandle(GDALRelationshipH hRelationship)
4124
+ {
4125
+ return static_cast<GDALRelationship *>(hRelationship);
4126
+ }
4127
+ };
4128
+
4129
+ /* ==================================================================== */
4130
+ /* An assortment of overview related stuff. */
4131
+ /* ==================================================================== */
4132
+
4133
+ //! @cond Doxygen_Suppress
4134
+ /* Only exported for drivers as plugin. Signature may change */
4135
+ CPLErr CPL_DLL GDALRegenerateOverviewsMultiBand(
4136
+ int nBands, GDALRasterBand *const *papoSrcBands, int nOverviews,
4137
+ GDALRasterBand *const *const *papapoOverviewBands,
4138
+ const char *pszResampling, GDALProgressFunc pfnProgress,
4139
+ void *pProgressData, CSLConstList papszOptions);
4140
+
4141
+ /************************************************************************/
4142
+ /* GDALOverviewResampleArgs */
4143
+ /************************************************************************/
4144
+
4145
+ /** Arguments for overview resampling function. */
4146
+ // Should not contain any dataset/rasterband object, as this might be
4147
+ // read in a worker thread.
4148
+ struct GDALOverviewResampleArgs
4149
+ {
4150
+ //! Datatype of the source band argument
4151
+ GDALDataType eSrcDataType = GDT_Unknown;
4152
+ //! Datatype of the destination/overview band
4153
+ GDALDataType eOvrDataType = GDT_Unknown;
4154
+ //! Width in pixel of the destination/overview band
4155
+ int nOvrXSize = 0;
4156
+ //! Height in pixel of the destination/overview band
4157
+ int nOvrYSize = 0;
4158
+ //! NBITS value of the destination/overview band (or 0 if not set)
4159
+ int nOvrNBITS = 0;
4160
+ //! Factor to convert from destination X to source X
4161
+ // (source width divided by destination width)
4162
+ double dfXRatioDstToSrc = 0;
4163
+ //! Factor to convert from destination Y to source Y
4164
+ // (source height divided by destination height)
4165
+ double dfYRatioDstToSrc = 0;
4166
+ //! Sub-pixel delta to add to get source X
4167
+ double dfSrcXDelta = 0;
4168
+ //! Sub-pixel delta to add to get source Y
4169
+ double dfSrcYDelta = 0;
4170
+ //! Working data type (data type of the pChunk argument)
4171
+ GDALDataType eWrkDataType = GDT_Unknown;
4172
+ //! Array of nChunkXSize * nChunkYSize values of mask, or nullptr
4173
+ const GByte *pabyChunkNodataMask = nullptr;
4174
+ //! X offset of the source chunk in the source band
4175
+ int nChunkXOff = 0;
4176
+ //! Width in pixel of the source chunk in the source band
4177
+ int nChunkXSize = 0;
4178
+ //! Y offset of the source chunk in the source band
4179
+ int nChunkYOff = 0;
4180
+ //! Height in pixel of the source chunk in the source band
4181
+ int nChunkYSize = 0;
4182
+ //! X Offset of the destination chunk in the destination band
4183
+ int nDstXOff = 0;
4184
+ //! X Offset of the end (not included) of the destination chunk in the destination band
4185
+ int nDstXOff2 = 0;
4186
+ //! Y Offset of the destination chunk in the destination band
4187
+ int nDstYOff = 0;
4188
+ //! Y Offset of the end (not included) of the destination chunk in the destination band
4189
+ int nDstYOff2 = 0;
4190
+ //! Resampling method
4191
+ const char *pszResampling = nullptr;
4192
+ //! Whether the source band has a nodata value
4193
+ bool bHasNoData = false;
4194
+ //! Source band nodata value
4195
+ double dfNoDataValue = 0;
4196
+ //! Source color table
4197
+ const GDALColorTable *poColorTable = nullptr;
4198
+ //! Whether a single contributing source pixel at nodata should result
4199
+ // in the target pixel to be at nodata too (only taken into account by
4200
+ // average resampling)
4201
+ bool bPropagateNoData = false;
4202
+ };
4203
+
4204
+ typedef CPLErr (*GDALResampleFunction)(const GDALOverviewResampleArgs &args,
4205
+ const void *pChunk, void **ppDstBuffer,
4206
+ GDALDataType *peDstBufferDataType);
4207
+
4208
+ GDALResampleFunction GDALGetResampleFunction(const char *pszResampling,
4209
+ int *pnRadius);
4210
+
4211
+ std::string GDALGetNormalizedOvrResampling(const char *pszResampling);
4212
+
4213
+ GDALDataType GDALGetOvrWorkDataType(const char *pszResampling,
4214
+ GDALDataType eSrcDataType);
4215
+
4216
+ CPL_C_START
4217
+
4218
+ CPLErr CPL_DLL
4219
+ HFAAuxBuildOverviews(const char *pszOvrFilename, GDALDataset *poParentDS,
4220
+ GDALDataset **ppoDS, int nBands, const int *panBandList,
4221
+ int nNewOverviews, const int *panNewOverviewList,
4222
+ const char *pszResampling, GDALProgressFunc pfnProgress,
4223
+ void *pProgressData, CSLConstList papszOptions);
4224
+
4225
+ CPLErr CPL_DLL GTIFFBuildOverviews(const char *pszFilename, int nBands,
4226
+ GDALRasterBand *const *papoBandList,
4227
+ int nOverviews, const int *panOverviewList,
4228
+ const char *pszResampling,
4229
+ GDALProgressFunc pfnProgress,
4230
+ void *pProgressData,
4231
+ CSLConstList papszOptions);
4232
+
4233
+ int CPL_DLL GDALBandGetBestOverviewLevel(GDALRasterBand *poBand, int &nXOff,
4234
+ int &nYOff, int &nXSize, int &nYSize,
4235
+ int nBufXSize, int nBufYSize)
4236
+ CPL_WARN_DEPRECATED("Use GDALBandGetBestOverviewLevel2 instead");
4237
+ int CPL_DLL GDALBandGetBestOverviewLevel2(GDALRasterBand *poBand, int &nXOff,
4238
+ int &nYOff, int &nXSize, int &nYSize,
4239
+ int nBufXSize, int nBufYSize,
4240
+ GDALRasterIOExtraArg *psExtraArg);
4241
+
4242
+ int CPL_DLL GDALOvLevelAdjust(int nOvLevel, int nXSize)
4243
+ CPL_WARN_DEPRECATED("Use GDALOvLevelAdjust2 instead");
4244
+ int CPL_DLL GDALOvLevelAdjust2(int nOvLevel, int nXSize, int nYSize);
4245
+ int CPL_DLL GDALComputeOvFactor(int nOvrXSize, int nRasterXSize, int nOvrYSize,
4246
+ int nRasterYSize);
4247
+
4248
+ GDALDataset CPL_DLL *GDALFindAssociatedAuxFile(const char *pszBasefile,
4249
+ GDALAccess eAccess,
4250
+ GDALDataset *poDependentDS);
4251
+
4252
+ /* ==================================================================== */
4253
+ /* Infrastructure to check that dataset characteristics are valid */
4254
+ /* ==================================================================== */
4255
+
4256
+ int CPL_DLL GDALCheckDatasetDimensions(int nXSize, int nYSize);
4257
+ int CPL_DLL GDALCheckBandCount(int nBands, int bIsZeroAllowed);
4258
+
4259
+ /* Internal use only */
4260
+
4261
+ /* CPL_DLL exported, but only for in-tree drivers that can be built as plugins
4262
+ */
4263
+ int CPL_DLL GDALReadWorldFile2(const char *pszBaseFilename,
4264
+ const char *pszExtension,
4265
+ double *padfGeoTransform,
4266
+ char **papszSiblingFiles,
4267
+ char **ppszWorldFileNameOut);
4268
+ int CPL_DLL GDALReadTabFile2(const char *pszBaseFilename,
4269
+ double *padfGeoTransform, char **ppszWKT,
4270
+ int *pnGCPCount, GDAL_GCP **ppasGCPs,
4271
+ char **papszSiblingFiles,
4272
+ char **ppszTabFileNameOut);
4273
+
4274
+ void CPL_DLL GDALCopyRasterIOExtraArg(GDALRasterIOExtraArg *psDestArg,
4275
+ GDALRasterIOExtraArg *psSrcArg);
4276
+
4277
+ CPL_C_END
4278
+
4279
+ void GDALNullifyOpenDatasetsList();
4280
+ CPLMutex **GDALGetphDMMutex();
4281
+ CPLMutex **GDALGetphDLMutex();
4282
+ void GDALNullifyProxyPoolSingleton();
4283
+ void GDALSetResponsiblePIDForCurrentThread(GIntBig responsiblePID);
4284
+ GIntBig GDALGetResponsiblePIDForCurrentThread();
4285
+
4286
+ CPLString GDALFindAssociatedFile(const char *pszBasename, const char *pszExt,
4287
+ CSLConstList papszSiblingFiles, int nFlags);
4288
+
4289
+ CPLErr CPL_DLL EXIFExtractMetadata(char **&papszMetadata, void *fpL,
4290
+ int nOffset, int bSwabflag, int nTIFFHEADER,
4291
+ int &nExifOffset, int &nInterOffset,
4292
+ int &nGPSOffset);
4293
+
4294
+ int GDALValidateOpenOptions(GDALDriverH hDriver,
4295
+ const char *const *papszOptionOptions);
4296
+ int GDALValidateOptions(const char *pszOptionList,
4297
+ const char *const *papszOptionsToValidate,
4298
+ const char *pszErrorMessageOptionType,
4299
+ const char *pszErrorMessageContainerName);
4300
+
4301
+ GDALRIOResampleAlg GDALRasterIOGetResampleAlg(const char *pszResampling);
4302
+ const char *GDALRasterIOGetResampleAlg(GDALRIOResampleAlg eResampleAlg);
4303
+
4304
+ void GDALRasterIOExtraArgSetResampleAlg(GDALRasterIOExtraArg *psExtraArg,
4305
+ int nXSize, int nYSize, int nBufXSize,
4306
+ int nBufYSize);
4307
+
4308
+ GDALDataset *GDALCreateOverviewDataset(GDALDataset *poDS, int nOvrLevel,
4309
+ bool bThisLevelOnly);
4310
+
4311
+ // Should cover particular cases of #3573, #4183, #4506, #6578
4312
+ // Behavior is undefined if fVal1 or fVal2 are NaN (should be tested before
4313
+ // calling this function)
4314
+ template <class T> inline bool ARE_REAL_EQUAL(T fVal1, T fVal2, int ulp = 2)
4315
+ {
4316
+ return fVal1 == fVal2 || /* Should cover infinity */
4317
+ std::abs(fVal1 - fVal2) < std::numeric_limits<float>::epsilon() *
4318
+ std::abs(fVal1 + fVal2) * ulp;
4319
+ }
4320
+
4321
+ double GDALAdjustNoDataCloseToFloatMax(double dfVal);
4322
+
4323
+ #define DIV_ROUND_UP(a, b) (((a) % (b)) == 0 ? ((a) / (b)) : (((a) / (b)) + 1))
4324
+
4325
+ // Number of data samples that will be used to compute approximate statistics
4326
+ // (minimum value, maximum value, etc.)
4327
+ #define GDALSTAT_APPROX_NUMSAMPLES 2500
4328
+
4329
+ void GDALSerializeGCPListToXML(CPLXMLNode *psParentNode,
4330
+ const std::vector<gdal::GCP> &asGCPs,
4331
+ const OGRSpatialReference *poGCP_SRS);
4332
+ void GDALDeserializeGCPListFromXML(const CPLXMLNode *psGCPList,
4333
+ std::vector<gdal::GCP> &asGCPs,
4334
+ OGRSpatialReference **ppoGCP_SRS);
4335
+
4336
+ void GDALSerializeOpenOptionsToXML(CPLXMLNode *psParentNode,
4337
+ char **papszOpenOptions);
4338
+ char **GDALDeserializeOpenOptionsFromXML(const CPLXMLNode *psParentNode);
4339
+
4340
+ int GDALCanFileAcceptSidecarFile(const char *pszFilename);
4341
+
4342
+ bool GDALCanReliablyUseSiblingFileList(const char *pszFilename);
4343
+
4344
+ typedef enum
4345
+ {
4346
+ GSF_UNSIGNED_INT,
4347
+ GSF_SIGNED_INT,
4348
+ GSF_FLOATING_POINT,
4349
+ } GDALBufferSampleFormat;
4350
+
4351
+ bool CPL_DLL GDALBufferHasOnlyNoData(const void *pBuffer, double dfNoDataValue,
4352
+ size_t nWidth, size_t nHeight,
4353
+ size_t nLineStride, size_t nComponents,
4354
+ int nBitsPerSample,
4355
+ GDALBufferSampleFormat nSampleFormat);
4356
+
4357
+ void CPL_DLL GDALCopyNoDataValue(GDALRasterBand *poDstBand,
4358
+ GDALRasterBand *poSrcBand);
4359
+
4360
+ double CPL_DLL GDALGetNoDataValueCastToDouble(int64_t nVal);
4361
+ double CPL_DLL GDALGetNoDataValueCastToDouble(uint64_t nVal);
4362
+
4363
+ // Remove me in GDAL 4.0. See GetMetadataItem() implementation
4364
+ // Internal use in GDAL only !
4365
+ // Declaration copied in swig/include/gdal.i
4366
+ void CPL_DLL GDALEnablePixelTypeSignedByteWarning(GDALRasterBandH hBand,
4367
+ bool b);
4368
+
4369
+ std::string CPL_DLL GDALGetCompressionFormatForJPEG(VSILFILE *fp);
4370
+ std::string CPL_DLL GDALGetCompressionFormatForJPEG(const void *pBuffer,
4371
+ size_t nBufferSize);
4372
+
4373
+ GDALRasterAttributeTable CPL_DLL *GDALCreateRasterAttributeTableFromMDArrays(
4374
+ GDALRATTableType eTableType,
4375
+ const std::vector<std::shared_ptr<GDALMDArray>> &apoArrays,
4376
+ const std::vector<GDALRATFieldUsage> &aeUsages);
4377
+
4378
+ // Macro used so that Identify and driver metadata methods in drivers built
4379
+ // as plugin can be duplicated in libgdal core and in the driver under different
4380
+ // names
4381
+ #ifdef PLUGIN_FILENAME
4382
+ #define PLUGIN_SYMBOL_NAME(x) GDAL_core_##x
4383
+ #else
4384
+ #define PLUGIN_SYMBOL_NAME(x) GDAL_driver_##x
4385
+ #endif
4386
+
4387
+ //! @endcond
4388
+
4389
+ #endif /* ndef GDAL_PRIV_H_INCLUDED */