@crossbind/port-gdal-wasm 2.0.0-beta.50

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 (667) hide show
  1. package/LICENSE +467 -0
  2. package/README.md +12 -0
  3. package/assets/gdal_empty_file.cpp +0 -0
  4. package/crossbind.build.js +23 -0
  5. package/crossbind.config.js +35 -0
  6. package/dist/prebuilt/CMakeLists.txt +57 -0
  7. package/dist/prebuilt/wasm-wasm32-mt-release/crossbind-emccflags.fingerprint +1 -0
  8. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_atomic_ops.h +89 -0
  9. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_auto_close.h +72 -0
  10. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_compressor.h +112 -0
  11. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_config.h +203 -0
  12. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_config_extras.h +33 -0
  13. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_conv.h +528 -0
  14. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_csv.h +70 -0
  15. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_error.h +505 -0
  16. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_float.h +730 -0
  17. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_hash_set.h +82 -0
  18. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_http.h +317 -0
  19. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_json.h +398 -0
  20. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_list.h +58 -0
  21. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_minixml.h +210 -0
  22. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_multiproc.h +241 -0
  23. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_port.h +1266 -0
  24. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_progress.h +48 -0
  25. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_quad_tree.h +104 -0
  26. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_spawn.h +59 -0
  27. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_string.h +985 -0
  28. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_time.h +28 -0
  29. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_virtualmem.h +347 -0
  30. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_vsi.h +885 -0
  31. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_vsi_error.h +91 -0
  32. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_vsi_virtual.h +838 -0
  33. package/dist/prebuilt/wasm-wasm32-mt-release/include/cplkeywordparser.h +60 -0
  34. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal.h +3013 -0
  35. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_adbc.h +46 -0
  36. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_alg.h +753 -0
  37. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_alg_priv.h +444 -0
  38. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_asyncreader.h +177 -0
  39. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_colortable.h +85 -0
  40. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_computedrasterband.h +334 -0
  41. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_cpp_functions.h +414 -0
  42. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_csv.h +24 -0
  43. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_dataset.h +959 -0
  44. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_defaultoverviews.h +133 -0
  45. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_driver.h +348 -0
  46. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_drivermanager.h +115 -0
  47. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_frmts.h +230 -0
  48. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_fwd.h +219 -0
  49. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_gcp.h +140 -0
  50. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_geotransform.h +251 -0
  51. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_majorobject.h +102 -0
  52. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_maskbands.h +170 -0
  53. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_mdreader.h +240 -0
  54. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_mem.h +32 -0
  55. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_minmax_element.hpp +1489 -0
  56. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_multidim.h +1356 -0
  57. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_multidim_cpp.h +33 -0
  58. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_multidomainmetadata.h +91 -0
  59. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_openinfo.h +94 -0
  60. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_pam.h +400 -0
  61. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_pam_multidim.h +114 -0
  62. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_priv.h +69 -0
  63. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_priv_templates.hpp +1516 -0
  64. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_proxy.h +475 -0
  65. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_raster_cpp.h +46 -0
  66. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_rasterband.h +779 -0
  67. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_rasterblock.h +184 -0
  68. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_rat.h +589 -0
  69. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_relationship.h +380 -0
  70. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_simplesurf.h +579 -0
  71. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_thread_pool.h +42 -0
  72. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_typetraits.h +517 -0
  73. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_utils.h +350 -0
  74. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_vector_cpp.h +31 -0
  75. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_version.h +37 -0
  76. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_vrt.h +88 -0
  77. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdalalgorithm.h +19 -0
  78. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdalalgorithm_c.h +292 -0
  79. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdalalgorithm_cpp.h +3398 -0
  80. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdalcachedpixelaccessor.h +446 -0
  81. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdalgeorefpamdataset.h +72 -0
  82. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdalgrid.h +102 -0
  83. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdalgrid_priv.h +67 -0
  84. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdaljp2abstractdataset.h +60 -0
  85. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdaljp2metadata.h +236 -0
  86. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdalpansharpen.h +260 -0
  87. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdalsubdatasetinfo.h +104 -0
  88. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdalwarper.h +644 -0
  89. package/dist/prebuilt/wasm-wasm32-mt-release/include/geoheif.h +58 -0
  90. package/dist/prebuilt/wasm-wasm32-mt-release/include/gnm.h +781 -0
  91. package/dist/prebuilt/wasm-wasm32-mt-release/include/gnm_api.h +99 -0
  92. package/dist/prebuilt/wasm-wasm32-mt-release/include/gnmgraph.h +257 -0
  93. package/dist/prebuilt/wasm-wasm32-mt-release/include/memdataset.h +385 -0
  94. package/dist/prebuilt/wasm-wasm32-mt-release/include/ogr_api.h +948 -0
  95. package/dist/prebuilt/wasm-wasm32-mt-release/include/ogr_core.h +1319 -0
  96. package/dist/prebuilt/wasm-wasm32-mt-release/include/ogr_feature.h +2136 -0
  97. package/dist/prebuilt/wasm-wasm32-mt-release/include/ogr_featurestyle.h +869 -0
  98. package/dist/prebuilt/wasm-wasm32-mt-release/include/ogr_geocoding.h +45 -0
  99. package/dist/prebuilt/wasm-wasm32-mt-release/include/ogr_geomcoordinateprecision.h +85 -0
  100. package/dist/prebuilt/wasm-wasm32-mt-release/include/ogr_geometry.h +4382 -0
  101. package/dist/prebuilt/wasm-wasm32-mt-release/include/ogr_p.h +330 -0
  102. package/dist/prebuilt/wasm-wasm32-mt-release/include/ogr_recordbatch.h +128 -0
  103. package/dist/prebuilt/wasm-wasm32-mt-release/include/ogr_refcountedptr.h +198 -0
  104. package/dist/prebuilt/wasm-wasm32-mt-release/include/ogr_spatialref.h +1122 -0
  105. package/dist/prebuilt/wasm-wasm32-mt-release/include/ogr_srs_api.h +1073 -0
  106. package/dist/prebuilt/wasm-wasm32-mt-release/include/ogr_swq.h +534 -0
  107. package/dist/prebuilt/wasm-wasm32-mt-release/include/ogrsf_frmts.h +803 -0
  108. package/dist/prebuilt/wasm-wasm32-mt-release/include/rawdataset.h +268 -0
  109. package/dist/prebuilt/wasm-wasm32-mt-release/include/vrtdataset.h +2595 -0
  110. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/3.20/FindLibLZMA.cmake +126 -0
  111. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/3.20/FindPostgreSQL.cmake +312 -0
  112. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/DefineFindPackage2.cmake +164 -0
  113. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/GDAL-targets-release.cmake +19 -0
  114. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/GDAL-targets.cmake +108 -0
  115. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/GDALConfig.cmake +35 -0
  116. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/GDALConfigVersion.cmake +65 -0
  117. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/GdalFindModulePath.cmake +13 -0
  118. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindBRUNSLI.cmake +74 -0
  119. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindBlosc.cmake +74 -0
  120. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindCURL.cmake +235 -0
  121. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindCryptoPP.cmake +91 -0
  122. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindDeflate.cmake +113 -0
  123. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindECW.cmake +172 -0
  124. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindEXPAT.cmake +156 -0
  125. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindExprTk.cmake +93 -0
  126. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindFYBA.cmake +38 -0
  127. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindFileGDB.cmake +93 -0
  128. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindFreeXL.cmake +67 -0
  129. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindGEOS.cmake +49 -0
  130. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindGIF.cmake +97 -0
  131. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindGeoTIFF.cmake +104 -0
  132. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindHDF4.cmake +133 -0
  133. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindHDFS.cmake +54 -0
  134. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindIDB.cmake +45 -0
  135. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindIconv.cmake +145 -0
  136. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindJSONC.cmake +48 -0
  137. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindKDU.cmake +105 -0
  138. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindLERC.cmake +46 -0
  139. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindLZ4.cmake +130 -0
  140. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindLibKML.cmake +134 -0
  141. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindMONGOCXX.cmake +56 -0
  142. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindMRSID.cmake +66 -0
  143. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindMSSQL_NCLI.cmake +86 -0
  144. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindMSSQL_ODBC.cmake +113 -0
  145. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindMySQL.cmake +83 -0
  146. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindNetCDF.cmake +209 -0
  147. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindODBC.cmake +259 -0
  148. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindODBCCPP.cmake +72 -0
  149. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindOpenCAD.cmake +97 -0
  150. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindOpenEXR.cmake +125 -0
  151. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindOpenJPEG.cmake +124 -0
  152. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindOracle.cmake +230 -0
  153. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindPCRE.cmake +28 -0
  154. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindPCRE2.cmake +27 -0
  155. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindPROJ.cmake +91 -0
  156. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindPodofo.cmake +94 -0
  157. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindPoppler.cmake +182 -0
  158. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindQHULL.cmake +44 -0
  159. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindRASTERLITE2.cmake +85 -0
  160. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindSFCGAL.cmake +87 -0
  161. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindSPATIALITE.cmake +74 -0
  162. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindSQLite3.cmake +208 -0
  163. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindShapelib.cmake +69 -0
  164. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindSpatialindex.cmake +18 -0
  165. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindTEIGHA.cmake +242 -0
  166. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindWebP.cmake +38 -0
  167. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindZSTD.cmake +95 -0
  168. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/Findmuparser.cmake +53 -0
  169. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/thirdparty/DotnetImports.props.in +7 -0
  170. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/thirdparty/FindCSharp.cmake +72 -0
  171. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/thirdparty/FindDotnet.cmake +496 -0
  172. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/thirdparty/FindInt128.cmake +65 -0
  173. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/thirdparty/FindMono.cmake +163 -0
  174. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/thirdparty/GetGitHeadDate.cmake +33 -0
  175. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/thirdparty/GetGitRevisionDescription.cmake +181 -0
  176. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/thirdparty/GetGitRevisionDescription.cmake.in +50 -0
  177. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/thirdparty/OSXInstallDirs.cmake +214 -0
  178. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/thirdparty/SystemSummary.cmake +89 -0
  179. package/dist/prebuilt/wasm-wasm32-mt-release/lib/gdalplugins/drivers.ini +285 -0
  180. package/dist/prebuilt/wasm-wasm32-mt-release/lib/libgdal.a +0 -0
  181. package/dist/prebuilt/wasm-wasm32-mt-release/lib/pkgconfig/gdal.pc +17 -0
  182. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/GDALLogoBW.svg +138 -0
  183. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/GDALLogoColor.svg +126 -0
  184. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/GDALLogoGS.svg +126 -0
  185. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/LICENSE.TXT +467 -0
  186. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/MM_m_idofic.csv +320 -0
  187. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/cubewerx_extra.wkt +48 -0
  188. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/default.rsc +0 -0
  189. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/ecw_cs.wkt +1453 -0
  190. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/eedaconf.json +23 -0
  191. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/epsg.wkt +1 -0
  192. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/esri_StatePlane_extra.wkt +631 -0
  193. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/gdal_algorithm.schema.json +240 -0
  194. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/gdalg.schema.json +36 -0
  195. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/gdalicon.png +0 -0
  196. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/gdalinfo_output.schema.json +390 -0
  197. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/gdalmdiminfo_output.schema.json +393 -0
  198. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/gdaltileindex.xsd +264 -0
  199. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/gdalvrt.xsd +948 -0
  200. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/gfs.xsd +246 -0
  201. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/gml_registry.xml +117 -0
  202. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/gml_registry.xsd +66 -0
  203. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_center.csv +251 -0
  204. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_process.csv +102 -0
  205. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_subcenter.csv +63 -0
  206. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_0.csv +261 -0
  207. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_1.csv +261 -0
  208. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_13.csv +261 -0
  209. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_14.csv +261 -0
  210. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_15.csv +261 -0
  211. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_16.csv +261 -0
  212. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_17.csv +261 -0
  213. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_18.csv +261 -0
  214. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_19.csv +261 -0
  215. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_190.csv +261 -0
  216. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_191.csv +261 -0
  217. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_2.csv +261 -0
  218. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_20.csv +261 -0
  219. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_21.csv +261 -0
  220. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_22.csv +261 -0
  221. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_3.csv +261 -0
  222. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_4.csv +261 -0
  223. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_5.csv +261 -0
  224. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_6.csv +261 -0
  225. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_7.csv +261 -0
  226. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_10_0.csv +261 -0
  227. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_10_1.csv +261 -0
  228. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_10_191.csv +261 -0
  229. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_10_2.csv +261 -0
  230. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_10_3.csv +261 -0
  231. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_10_4.csv +261 -0
  232. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_1_0.csv +261 -0
  233. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_1_1.csv +261 -0
  234. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_1_2.csv +261 -0
  235. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_20_0.csv +261 -0
  236. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_20_1.csv +261 -0
  237. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_20_2.csv +261 -0
  238. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_20_3.csv +261 -0
  239. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_2_0.csv +261 -0
  240. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_2_3.csv +261 -0
  241. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_2_4.csv +261 -0
  242. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_2_5.csv +261 -0
  243. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_2_6.csv +261 -0
  244. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_2_7.csv +261 -0
  245. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_3_0.csv +261 -0
  246. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_3_1.csv +261 -0
  247. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_3_2.csv +243 -0
  248. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_3_3.csv +261 -0
  249. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_3_4.csv +261 -0
  250. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_3_5.csv +261 -0
  251. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_3_6.csv +261 -0
  252. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_4_0.csv +261 -0
  253. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_4_1.csv +261 -0
  254. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_4_10.csv +261 -0
  255. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_4_2.csv +261 -0
  256. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_4_3.csv +261 -0
  257. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_4_4.csv +261 -0
  258. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_4_5.csv +261 -0
  259. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_4_6.csv +261 -0
  260. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_4_7.csv +261 -0
  261. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_4_8.csv +261 -0
  262. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_4_9.csv +261 -0
  263. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_local_Canada.csv +5 -0
  264. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_local_HPC.csv +2 -0
  265. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_local_MRMS.csv +175 -0
  266. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_local_NCEP.csv +401 -0
  267. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_local_NDFD.csv +38 -0
  268. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_local_index.csv +7 -0
  269. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_5.csv +261 -0
  270. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_versions.csv +3 -0
  271. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/gt_datum.csv +229 -0
  272. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/gt_ellips.csv +24 -0
  273. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/header.dxf +1138 -0
  274. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/inspire_cp_BasicPropertyUnit.gfs +57 -0
  275. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/inspire_cp_CadastralBoundary.gfs +60 -0
  276. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/inspire_cp_CadastralParcel.gfs +81 -0
  277. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/inspire_cp_CadastralZoning.gfs +161 -0
  278. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_AdmArea.gfs +59 -0
  279. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_AdmBdry.gfs +49 -0
  280. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_AdmPt.gfs +59 -0
  281. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_BldA.gfs +54 -0
  282. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_BldL.gfs +54 -0
  283. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_Cntr.gfs +54 -0
  284. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_CommBdry.gfs +49 -0
  285. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_CommPt.gfs +59 -0
  286. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_Cstline.gfs +54 -0
  287. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_ElevPt.gfs +54 -0
  288. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_GCP.gfs +94 -0
  289. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_LeveeEdge.gfs +49 -0
  290. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_RailCL.gfs +54 -0
  291. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_RdASL.gfs +44 -0
  292. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_RdArea.gfs +54 -0
  293. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_RdCompt.gfs +59 -0
  294. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_RdEdg.gfs +59 -0
  295. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_RdMgtBdry.gfs +49 -0
  296. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_RdSgmtA.gfs +59 -0
  297. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_RvrMgtBdry.gfs +49 -0
  298. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_SBAPt.gfs +49 -0
  299. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_SBArea.gfs +54 -0
  300. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_SBBdry.gfs +44 -0
  301. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_WA.gfs +54 -0
  302. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_WL.gfs +54 -0
  303. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_WStrA.gfs +54 -0
  304. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_WStrL.gfs +54 -0
  305. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/leaflet_template.html +102 -0
  306. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/nitf_spec.xml +3508 -0
  307. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/nitf_spec.xsd +178 -0
  308. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/ogr_fields_override.schema.json +278 -0
  309. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/ogrinfo_output.schema.json +532 -0
  310. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/ogrvrt.xsd +526 -0
  311. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/osmconf.ini +134 -0
  312. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/ozi_datum.csv +131 -0
  313. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/ozi_ellips.csv +35 -0
  314. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/pci_datum.txt +530 -0
  315. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/pci_ellips.txt +129 -0
  316. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/pdfcomposition.xsd +703 -0
  317. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/plscenesconf.json +1985 -0
  318. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/ruian_vf_ob_v1.gfs +1455 -0
  319. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/ruian_vf_st_uvoh_v1.gfs +86 -0
  320. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/ruian_vf_st_v1.gfs +1489 -0
  321. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/ruian_vf_v1.gfs +2126 -0
  322. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/s57agencies.csv +249 -0
  323. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/s57attributes.csv +484 -0
  324. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/s57expectedinput.csv +1008 -0
  325. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/s57objectclasses.csv +287 -0
  326. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/seed_2d.dgn +0 -0
  327. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/seed_3d.dgn +0 -0
  328. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/stateplane.csv +259 -0
  329. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/template_tiles.mapml +26 -0
  330. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/tms_LINZAntarticaMapTileGrid.json +190 -0
  331. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/tms_MapML_APSTILE.json +268 -0
  332. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/tms_MapML_CBMTILE.json +346 -0
  333. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/tms_NZTM2000.json +243 -0
  334. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/trailer.dxf +434 -0
  335. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/vdv452.xml +349 -0
  336. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/vdv452.xsd +45 -0
  337. package/dist/prebuilt/wasm-wasm32-st-release/crossbind-emccflags.fingerprint +1 -0
  338. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_atomic_ops.h +89 -0
  339. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_auto_close.h +72 -0
  340. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_compressor.h +112 -0
  341. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_config.h +203 -0
  342. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_config_extras.h +33 -0
  343. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_conv.h +528 -0
  344. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_csv.h +70 -0
  345. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_error.h +505 -0
  346. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_float.h +730 -0
  347. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_hash_set.h +82 -0
  348. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_http.h +317 -0
  349. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_json.h +398 -0
  350. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_list.h +58 -0
  351. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_minixml.h +210 -0
  352. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_multiproc.h +241 -0
  353. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_port.h +1266 -0
  354. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_progress.h +48 -0
  355. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_quad_tree.h +104 -0
  356. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_spawn.h +59 -0
  357. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_string.h +985 -0
  358. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_time.h +28 -0
  359. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_virtualmem.h +347 -0
  360. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_vsi.h +885 -0
  361. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_vsi_error.h +91 -0
  362. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_vsi_virtual.h +838 -0
  363. package/dist/prebuilt/wasm-wasm32-st-release/include/cplkeywordparser.h +60 -0
  364. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal.h +3013 -0
  365. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_adbc.h +46 -0
  366. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_alg.h +753 -0
  367. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_alg_priv.h +444 -0
  368. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_asyncreader.h +177 -0
  369. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_colortable.h +85 -0
  370. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_computedrasterband.h +334 -0
  371. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_cpp_functions.h +414 -0
  372. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_csv.h +24 -0
  373. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_dataset.h +959 -0
  374. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_defaultoverviews.h +133 -0
  375. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_driver.h +348 -0
  376. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_drivermanager.h +115 -0
  377. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_frmts.h +230 -0
  378. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_fwd.h +219 -0
  379. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_gcp.h +140 -0
  380. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_geotransform.h +251 -0
  381. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_majorobject.h +102 -0
  382. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_maskbands.h +170 -0
  383. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_mdreader.h +240 -0
  384. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_mem.h +32 -0
  385. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_minmax_element.hpp +1489 -0
  386. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_multidim.h +1356 -0
  387. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_multidim_cpp.h +33 -0
  388. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_multidomainmetadata.h +91 -0
  389. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_openinfo.h +94 -0
  390. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_pam.h +400 -0
  391. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_pam_multidim.h +114 -0
  392. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_priv.h +69 -0
  393. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_priv_templates.hpp +1516 -0
  394. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_proxy.h +475 -0
  395. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_raster_cpp.h +46 -0
  396. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_rasterband.h +779 -0
  397. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_rasterblock.h +184 -0
  398. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_rat.h +589 -0
  399. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_relationship.h +380 -0
  400. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_simplesurf.h +579 -0
  401. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_thread_pool.h +42 -0
  402. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_typetraits.h +517 -0
  403. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_utils.h +350 -0
  404. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_vector_cpp.h +31 -0
  405. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_version.h +37 -0
  406. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_vrt.h +88 -0
  407. package/dist/prebuilt/wasm-wasm32-st-release/include/gdalalgorithm.h +19 -0
  408. package/dist/prebuilt/wasm-wasm32-st-release/include/gdalalgorithm_c.h +292 -0
  409. package/dist/prebuilt/wasm-wasm32-st-release/include/gdalalgorithm_cpp.h +3398 -0
  410. package/dist/prebuilt/wasm-wasm32-st-release/include/gdalcachedpixelaccessor.h +446 -0
  411. package/dist/prebuilt/wasm-wasm32-st-release/include/gdalgeorefpamdataset.h +72 -0
  412. package/dist/prebuilt/wasm-wasm32-st-release/include/gdalgrid.h +102 -0
  413. package/dist/prebuilt/wasm-wasm32-st-release/include/gdalgrid_priv.h +67 -0
  414. package/dist/prebuilt/wasm-wasm32-st-release/include/gdaljp2abstractdataset.h +60 -0
  415. package/dist/prebuilt/wasm-wasm32-st-release/include/gdaljp2metadata.h +236 -0
  416. package/dist/prebuilt/wasm-wasm32-st-release/include/gdalpansharpen.h +260 -0
  417. package/dist/prebuilt/wasm-wasm32-st-release/include/gdalsubdatasetinfo.h +104 -0
  418. package/dist/prebuilt/wasm-wasm32-st-release/include/gdalwarper.h +644 -0
  419. package/dist/prebuilt/wasm-wasm32-st-release/include/geoheif.h +58 -0
  420. package/dist/prebuilt/wasm-wasm32-st-release/include/gnm.h +781 -0
  421. package/dist/prebuilt/wasm-wasm32-st-release/include/gnm_api.h +99 -0
  422. package/dist/prebuilt/wasm-wasm32-st-release/include/gnmgraph.h +257 -0
  423. package/dist/prebuilt/wasm-wasm32-st-release/include/memdataset.h +385 -0
  424. package/dist/prebuilt/wasm-wasm32-st-release/include/ogr_api.h +948 -0
  425. package/dist/prebuilt/wasm-wasm32-st-release/include/ogr_core.h +1319 -0
  426. package/dist/prebuilt/wasm-wasm32-st-release/include/ogr_feature.h +2136 -0
  427. package/dist/prebuilt/wasm-wasm32-st-release/include/ogr_featurestyle.h +869 -0
  428. package/dist/prebuilt/wasm-wasm32-st-release/include/ogr_geocoding.h +45 -0
  429. package/dist/prebuilt/wasm-wasm32-st-release/include/ogr_geomcoordinateprecision.h +85 -0
  430. package/dist/prebuilt/wasm-wasm32-st-release/include/ogr_geometry.h +4382 -0
  431. package/dist/prebuilt/wasm-wasm32-st-release/include/ogr_p.h +330 -0
  432. package/dist/prebuilt/wasm-wasm32-st-release/include/ogr_recordbatch.h +128 -0
  433. package/dist/prebuilt/wasm-wasm32-st-release/include/ogr_refcountedptr.h +198 -0
  434. package/dist/prebuilt/wasm-wasm32-st-release/include/ogr_spatialref.h +1122 -0
  435. package/dist/prebuilt/wasm-wasm32-st-release/include/ogr_srs_api.h +1073 -0
  436. package/dist/prebuilt/wasm-wasm32-st-release/include/ogr_swq.h +534 -0
  437. package/dist/prebuilt/wasm-wasm32-st-release/include/ogrsf_frmts.h +803 -0
  438. package/dist/prebuilt/wasm-wasm32-st-release/include/rawdataset.h +268 -0
  439. package/dist/prebuilt/wasm-wasm32-st-release/include/vrtdataset.h +2595 -0
  440. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/3.20/FindLibLZMA.cmake +126 -0
  441. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/3.20/FindPostgreSQL.cmake +312 -0
  442. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/DefineFindPackage2.cmake +164 -0
  443. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/GDAL-targets-release.cmake +19 -0
  444. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/GDAL-targets.cmake +108 -0
  445. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/GDALConfig.cmake +35 -0
  446. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/GDALConfigVersion.cmake +65 -0
  447. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/GdalFindModulePath.cmake +13 -0
  448. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindBRUNSLI.cmake +74 -0
  449. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindBlosc.cmake +74 -0
  450. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindCURL.cmake +235 -0
  451. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindCryptoPP.cmake +91 -0
  452. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindDeflate.cmake +113 -0
  453. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindECW.cmake +172 -0
  454. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindEXPAT.cmake +156 -0
  455. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindExprTk.cmake +93 -0
  456. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindFYBA.cmake +38 -0
  457. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindFileGDB.cmake +93 -0
  458. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindFreeXL.cmake +67 -0
  459. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindGEOS.cmake +49 -0
  460. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindGIF.cmake +97 -0
  461. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindGeoTIFF.cmake +104 -0
  462. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindHDF4.cmake +133 -0
  463. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindHDFS.cmake +54 -0
  464. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindIDB.cmake +45 -0
  465. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindIconv.cmake +145 -0
  466. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindJSONC.cmake +48 -0
  467. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindKDU.cmake +105 -0
  468. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindLERC.cmake +46 -0
  469. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindLZ4.cmake +130 -0
  470. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindLibKML.cmake +134 -0
  471. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindMONGOCXX.cmake +56 -0
  472. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindMRSID.cmake +66 -0
  473. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindMSSQL_NCLI.cmake +86 -0
  474. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindMSSQL_ODBC.cmake +113 -0
  475. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindMySQL.cmake +83 -0
  476. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindNetCDF.cmake +209 -0
  477. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindODBC.cmake +259 -0
  478. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindODBCCPP.cmake +72 -0
  479. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindOpenCAD.cmake +97 -0
  480. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindOpenEXR.cmake +125 -0
  481. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindOpenJPEG.cmake +124 -0
  482. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindOracle.cmake +230 -0
  483. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindPCRE.cmake +28 -0
  484. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindPCRE2.cmake +27 -0
  485. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindPROJ.cmake +91 -0
  486. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindPodofo.cmake +94 -0
  487. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindPoppler.cmake +182 -0
  488. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindQHULL.cmake +44 -0
  489. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindRASTERLITE2.cmake +85 -0
  490. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindSFCGAL.cmake +87 -0
  491. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindSPATIALITE.cmake +74 -0
  492. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindSQLite3.cmake +208 -0
  493. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindShapelib.cmake +69 -0
  494. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindSpatialindex.cmake +18 -0
  495. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindTEIGHA.cmake +242 -0
  496. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindWebP.cmake +38 -0
  497. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindZSTD.cmake +95 -0
  498. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/Findmuparser.cmake +53 -0
  499. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/thirdparty/DotnetImports.props.in +7 -0
  500. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/thirdparty/FindCSharp.cmake +72 -0
  501. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/thirdparty/FindDotnet.cmake +496 -0
  502. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/thirdparty/FindInt128.cmake +65 -0
  503. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/thirdparty/FindMono.cmake +163 -0
  504. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/thirdparty/GetGitHeadDate.cmake +33 -0
  505. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/thirdparty/GetGitRevisionDescription.cmake +181 -0
  506. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/thirdparty/GetGitRevisionDescription.cmake.in +50 -0
  507. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/thirdparty/OSXInstallDirs.cmake +214 -0
  508. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/thirdparty/SystemSummary.cmake +89 -0
  509. package/dist/prebuilt/wasm-wasm32-st-release/lib/gdalplugins/drivers.ini +285 -0
  510. package/dist/prebuilt/wasm-wasm32-st-release/lib/libgdal.a +0 -0
  511. package/dist/prebuilt/wasm-wasm32-st-release/lib/pkgconfig/gdal.pc +17 -0
  512. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/GDALLogoBW.svg +138 -0
  513. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/GDALLogoColor.svg +126 -0
  514. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/GDALLogoGS.svg +126 -0
  515. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/LICENSE.TXT +467 -0
  516. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/MM_m_idofic.csv +320 -0
  517. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/cubewerx_extra.wkt +48 -0
  518. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/default.rsc +0 -0
  519. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/ecw_cs.wkt +1453 -0
  520. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/eedaconf.json +23 -0
  521. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/epsg.wkt +1 -0
  522. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/esri_StatePlane_extra.wkt +631 -0
  523. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/gdal_algorithm.schema.json +240 -0
  524. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/gdalg.schema.json +36 -0
  525. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/gdalicon.png +0 -0
  526. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/gdalinfo_output.schema.json +390 -0
  527. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/gdalmdiminfo_output.schema.json +393 -0
  528. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/gdaltileindex.xsd +264 -0
  529. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/gdalvrt.xsd +948 -0
  530. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/gfs.xsd +246 -0
  531. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/gml_registry.xml +117 -0
  532. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/gml_registry.xsd +66 -0
  533. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_center.csv +251 -0
  534. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_process.csv +102 -0
  535. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_subcenter.csv +63 -0
  536. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_0.csv +261 -0
  537. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_1.csv +261 -0
  538. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_13.csv +261 -0
  539. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_14.csv +261 -0
  540. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_15.csv +261 -0
  541. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_16.csv +261 -0
  542. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_17.csv +261 -0
  543. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_18.csv +261 -0
  544. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_19.csv +261 -0
  545. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_190.csv +261 -0
  546. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_191.csv +261 -0
  547. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_2.csv +261 -0
  548. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_20.csv +261 -0
  549. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_21.csv +261 -0
  550. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_22.csv +261 -0
  551. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_3.csv +261 -0
  552. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_4.csv +261 -0
  553. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_5.csv +261 -0
  554. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_6.csv +261 -0
  555. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_7.csv +261 -0
  556. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_10_0.csv +261 -0
  557. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_10_1.csv +261 -0
  558. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_10_191.csv +261 -0
  559. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_10_2.csv +261 -0
  560. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_10_3.csv +261 -0
  561. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_10_4.csv +261 -0
  562. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_1_0.csv +261 -0
  563. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_1_1.csv +261 -0
  564. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_1_2.csv +261 -0
  565. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_20_0.csv +261 -0
  566. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_20_1.csv +261 -0
  567. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_20_2.csv +261 -0
  568. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_20_3.csv +261 -0
  569. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_2_0.csv +261 -0
  570. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_2_3.csv +261 -0
  571. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_2_4.csv +261 -0
  572. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_2_5.csv +261 -0
  573. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_2_6.csv +261 -0
  574. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_2_7.csv +261 -0
  575. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_3_0.csv +261 -0
  576. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_3_1.csv +261 -0
  577. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_3_2.csv +243 -0
  578. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_3_3.csv +261 -0
  579. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_3_4.csv +261 -0
  580. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_3_5.csv +261 -0
  581. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_3_6.csv +261 -0
  582. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_4_0.csv +261 -0
  583. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_4_1.csv +261 -0
  584. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_4_10.csv +261 -0
  585. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_4_2.csv +261 -0
  586. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_4_3.csv +261 -0
  587. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_4_4.csv +261 -0
  588. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_4_5.csv +261 -0
  589. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_4_6.csv +261 -0
  590. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_4_7.csv +261 -0
  591. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_4_8.csv +261 -0
  592. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_4_9.csv +261 -0
  593. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_local_Canada.csv +5 -0
  594. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_local_HPC.csv +2 -0
  595. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_local_MRMS.csv +175 -0
  596. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_local_NCEP.csv +401 -0
  597. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_local_NDFD.csv +38 -0
  598. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_local_index.csv +7 -0
  599. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_5.csv +261 -0
  600. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_versions.csv +3 -0
  601. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/gt_datum.csv +229 -0
  602. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/gt_ellips.csv +24 -0
  603. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/header.dxf +1138 -0
  604. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/inspire_cp_BasicPropertyUnit.gfs +57 -0
  605. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/inspire_cp_CadastralBoundary.gfs +60 -0
  606. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/inspire_cp_CadastralParcel.gfs +81 -0
  607. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/inspire_cp_CadastralZoning.gfs +161 -0
  608. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_AdmArea.gfs +59 -0
  609. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_AdmBdry.gfs +49 -0
  610. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_AdmPt.gfs +59 -0
  611. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_BldA.gfs +54 -0
  612. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_BldL.gfs +54 -0
  613. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_Cntr.gfs +54 -0
  614. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_CommBdry.gfs +49 -0
  615. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_CommPt.gfs +59 -0
  616. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_Cstline.gfs +54 -0
  617. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_ElevPt.gfs +54 -0
  618. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_GCP.gfs +94 -0
  619. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_LeveeEdge.gfs +49 -0
  620. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_RailCL.gfs +54 -0
  621. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_RdASL.gfs +44 -0
  622. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_RdArea.gfs +54 -0
  623. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_RdCompt.gfs +59 -0
  624. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_RdEdg.gfs +59 -0
  625. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_RdMgtBdry.gfs +49 -0
  626. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_RdSgmtA.gfs +59 -0
  627. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_RvrMgtBdry.gfs +49 -0
  628. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_SBAPt.gfs +49 -0
  629. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_SBArea.gfs +54 -0
  630. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_SBBdry.gfs +44 -0
  631. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_WA.gfs +54 -0
  632. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_WL.gfs +54 -0
  633. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_WStrA.gfs +54 -0
  634. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_WStrL.gfs +54 -0
  635. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/leaflet_template.html +102 -0
  636. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/nitf_spec.xml +3508 -0
  637. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/nitf_spec.xsd +178 -0
  638. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/ogr_fields_override.schema.json +278 -0
  639. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/ogrinfo_output.schema.json +532 -0
  640. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/ogrvrt.xsd +526 -0
  641. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/osmconf.ini +134 -0
  642. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/ozi_datum.csv +131 -0
  643. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/ozi_ellips.csv +35 -0
  644. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/pci_datum.txt +530 -0
  645. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/pci_ellips.txt +129 -0
  646. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/pdfcomposition.xsd +703 -0
  647. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/plscenesconf.json +1985 -0
  648. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/ruian_vf_ob_v1.gfs +1455 -0
  649. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/ruian_vf_st_uvoh_v1.gfs +86 -0
  650. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/ruian_vf_st_v1.gfs +1489 -0
  651. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/ruian_vf_v1.gfs +2126 -0
  652. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/s57agencies.csv +249 -0
  653. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/s57attributes.csv +484 -0
  654. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/s57expectedinput.csv +1008 -0
  655. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/s57objectclasses.csv +287 -0
  656. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/seed_2d.dgn +0 -0
  657. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/seed_3d.dgn +0 -0
  658. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/stateplane.csv +259 -0
  659. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/template_tiles.mapml +26 -0
  660. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/tms_LINZAntarticaMapTileGrid.json +190 -0
  661. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/tms_MapML_APSTILE.json +268 -0
  662. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/tms_MapML_CBMTILE.json +346 -0
  663. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/tms_NZTM2000.json +243 -0
  664. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/trailer.dxf +434 -0
  665. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/vdv452.xml +349 -0
  666. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/vdv452.xsd +45 -0
  667. package/package.json +49 -0
@@ -0,0 +1,2595 @@
1
+ /******************************************************************************
2
+ *
3
+ * Project: Virtual GDAL Datasets
4
+ * Purpose: Declaration of virtual gdal dataset classes.
5
+ * Author: Frank Warmerdam, warmerdam@pobox.com
6
+ *
7
+ ******************************************************************************
8
+ * Copyright (c) 2001, Frank Warmerdam <warmerdam@pobox.com>
9
+ * Copyright (c) 2007-2013, Even Rouault <even dot rouault at spatialys.com>
10
+ *
11
+ * SPDX-License-Identifier: MIT
12
+ ****************************************************************************/
13
+
14
+ #ifndef VIRTUALDATASET_H_INCLUDED
15
+ #define VIRTUALDATASET_H_INCLUDED
16
+
17
+ #ifndef DOXYGEN_SKIP
18
+
19
+ #include "cpl_hash_set.h"
20
+ #include "cpl_minixml.h"
21
+ #include "gdal_driver.h"
22
+ #include "gdal_multidim.h"
23
+ #include "gdal_pam.h"
24
+ #include "gdal_vrt.h"
25
+ #include "gdal_rat.h"
26
+
27
+ #include <atomic>
28
+ #include <deque>
29
+ #include <functional>
30
+ #include <map>
31
+ #include <memory>
32
+ #include <mutex>
33
+ #include <vector>
34
+
35
+ CPLErr GDALRegisterDefaultPixelFunc();
36
+ void GDALVRTRegisterDefaultProcessedDatasetFuncs();
37
+ CPLString CPL_DLL VRTSerializeNoData(double dfVal, GDALDataType eDataType,
38
+ int nPrecision);
39
+
40
+ #if 0
41
+ int VRTWarpedOverviewTransform( void *pTransformArg, int bDstToSrc,
42
+ int nPointCount,
43
+ double *padfX, double *padfY, double *padfZ,
44
+ int *panSuccess );
45
+ void* VRTDeserializeWarpedOverviewTransformer( CPLXMLNode *psTree );
46
+ #endif
47
+
48
+ /************************************************************************/
49
+ /* VRTOverviewInfo() */
50
+ /************************************************************************/
51
+ class VRTOverviewInfo
52
+ {
53
+ CPL_DISALLOW_COPY_ASSIGN(VRTOverviewInfo)
54
+
55
+ public:
56
+ CPLString osFilename{};
57
+ int nBand = 0;
58
+ GDALRasterBand *poBand = nullptr;
59
+ int bTriedToOpen = FALSE;
60
+
61
+ VRTOverviewInfo() = default;
62
+
63
+ VRTOverviewInfo(VRTOverviewInfo &&oOther) noexcept
64
+ : osFilename(std::move(oOther.osFilename)), nBand(oOther.nBand),
65
+ poBand(oOther.poBand), bTriedToOpen(oOther.bTriedToOpen)
66
+ {
67
+ oOther.poBand = nullptr;
68
+ }
69
+
70
+ ~VRTOverviewInfo()
71
+ {
72
+ CloseDataset();
73
+ }
74
+
75
+ bool CloseDataset()
76
+ {
77
+ if (poBand == nullptr)
78
+ return false;
79
+
80
+ GDALDataset *poDS = poBand->GetDataset();
81
+ // Nullify now, to prevent recursion in some cases !
82
+ poBand = nullptr;
83
+ if (poDS->GetShared())
84
+ GDALClose(/* (GDALDatasetH) */ poDS);
85
+ else
86
+ poDS->Dereference();
87
+
88
+ return true;
89
+ }
90
+ };
91
+
92
+ /************************************************************************/
93
+ /* VRTMapSharedResources */
94
+ /************************************************************************/
95
+
96
+ /** Map of shared datasets */
97
+ class CPL_DLL VRTMapSharedResources
98
+ {
99
+ public:
100
+ VRTMapSharedResources() = default;
101
+
102
+ /** Return a dataset from its key */
103
+ GDALDataset *Get(const std::string &osKey) const;
104
+
105
+ /** Inserts a dataset. It must be kept alive while this
106
+ * VRTMapSharedResources is alive.
107
+ */
108
+ void Insert(const std::string &osKey, GDALDataset *poDS);
109
+
110
+ /** To be called before any attempt at using this instance in a
111
+ * multi-threaded context.
112
+ */
113
+ void InitMutex();
114
+
115
+ private:
116
+ mutable std::mutex m_oMutex{};
117
+ bool m_bUseMutex = false;
118
+ std::map<std::string, GDALDataset *> m_oMap{};
119
+
120
+ std::unique_ptr<std::lock_guard<std::mutex>> LockGuard() const;
121
+
122
+ CPL_DISALLOW_COPY_ASSIGN(VRTMapSharedResources)
123
+ };
124
+
125
+ /************************************************************************/
126
+ /* VRTSource */
127
+ /************************************************************************/
128
+
129
+ class CPL_DLL VRTSource
130
+ {
131
+ public:
132
+ struct CPL_DLL WorkingState
133
+ {
134
+ // GByte whose initialization constructor does nothing
135
+ #ifdef __GNUC__
136
+ #pragma GCC diagnostic push
137
+ #pragma GCC diagnostic ignored "-Weffc++"
138
+ #endif
139
+ struct NoInitByte
140
+ {
141
+ #ifdef __COVERITY__
142
+ GByte value = 0;
143
+ #else
144
+ GByte value;
145
+ #endif
146
+
147
+ // cppcheck-suppress uninitMemberVar
148
+ NoInitByte()
149
+ {
150
+ // do nothing
151
+ }
152
+
153
+ inline operator GByte() const
154
+ {
155
+ return value;
156
+ }
157
+ };
158
+ #ifdef __GNUC__
159
+ #pragma GCC diagnostic pop
160
+ #endif
161
+
162
+ std::vector<NoInitByte> m_abyWrkBuffer{};
163
+ std::vector<NoInitByte> m_abyWrkBufferMask{};
164
+ };
165
+
166
+ virtual ~VRTSource();
167
+
168
+ virtual CPLErr RasterIO(GDALDataType eVRTBandDataType, int nXOff, int nYOff,
169
+ int nXSize, int nYSize, void *pData, int nBufXSize,
170
+ int nBufYSize, GDALDataType eBufType,
171
+ GSpacing nPixelSpace, GSpacing nLineSpace,
172
+ GDALRasterIOExtraArg *psExtraArg,
173
+ WorkingState &oWorkingState) = 0;
174
+
175
+ virtual double GetMinimum(int nXSize, int nYSize, int *pbSuccess) = 0;
176
+ virtual double GetMaximum(int nXSize, int nYSize, int *pbSuccess) = 0;
177
+ virtual CPLErr GetHistogram(int nXSize, int nYSize, double dfMin,
178
+ double dfMax, int nBuckets,
179
+ GUIntBig *panHistogram, int bIncludeOutOfRange,
180
+ int bApproxOK, GDALProgressFunc pfnProgress,
181
+ void *pProgressData) = 0;
182
+
183
+ virtual CPLErr XMLInit(const CPLXMLNode *psTree, const char *,
184
+ VRTMapSharedResources &) = 0;
185
+ virtual CPLXMLNode *SerializeToXML(const char *pszVRTPath) = 0;
186
+
187
+ virtual void GetFileList(char ***ppapszFileList, int *pnSize,
188
+ int *pnMaxSize, CPLHashSet *hSetFiles);
189
+
190
+ /** Returns whether this instance can be cast to a VRTSimpleSource
191
+ * (and its subclasses).
192
+ */
193
+ virtual bool IsSimpleSource() const
194
+ {
195
+ return false;
196
+ }
197
+
198
+ const std::string &GetName() const
199
+ {
200
+ return m_osName;
201
+ }
202
+
203
+ void SetName(const std::string &s)
204
+ {
205
+ m_osName = s;
206
+ }
207
+
208
+ /** Returns a string with the VRTSource class type.
209
+ * This method must be implemented in all subclasses
210
+ */
211
+ virtual const char *GetType() const = 0;
212
+
213
+ virtual CPLErr FlushCache(bool /*bAtClosing*/)
214
+ {
215
+ return CE_None;
216
+ }
217
+
218
+ protected:
219
+ VRTSource() = default;
220
+ VRTSource(const VRTSource &) = default;
221
+
222
+ std::string m_osName{};
223
+ };
224
+
225
+ typedef VRTSource *(*VRTSourceParser)(const CPLXMLNode *, const char *,
226
+ VRTMapSharedResources &oMapSharedSources);
227
+
228
+ VRTSource *VRTParseCoreSources(const CPLXMLNode *psTree, const char *,
229
+ VRTMapSharedResources &oMapSharedSources);
230
+ VRTSource *VRTParseFilterSources(const CPLXMLNode *psTree, const char *,
231
+ VRTMapSharedResources &oMapSharedSources);
232
+ VRTSource *VRTParseArraySource(const CPLXMLNode *psTree, const char *,
233
+ VRTMapSharedResources &oMapSharedSources);
234
+
235
+ /************************************************************************/
236
+ /* VRTDataset */
237
+ /************************************************************************/
238
+
239
+ class VRTRasterBand;
240
+
241
+ template <class T> struct VRTFlushCacheStruct
242
+ {
243
+ static CPLErr FlushCache(T &obj, bool bAtClosing);
244
+ };
245
+
246
+ class VRTWarpedDataset;
247
+ class VRTPansharpenedDataset;
248
+ class VRTProcessedDataset;
249
+ class VRTGroup;
250
+ class VRTSimpleSource;
251
+
252
+ class CPL_DLL VRTDataset CPL_NON_FINAL : public GDALDataset
253
+ {
254
+ friend class VRTRasterBand;
255
+ friend struct VRTFlushCacheStruct<VRTDataset>;
256
+ friend struct VRTFlushCacheStruct<VRTWarpedDataset>;
257
+ friend struct VRTFlushCacheStruct<VRTPansharpenedDataset>;
258
+ friend struct VRTFlushCacheStruct<VRTProcessedDataset>;
259
+ friend class VRTSourcedRasterBand;
260
+ friend class VRTDerivedRasterBand;
261
+ friend class VRTSimpleSource;
262
+ friend struct VRTSourcedRasterBandRasterIOJob;
263
+ friend VRTDatasetH CPL_STDCALL VRTCreate(int nXSize, int nYSize);
264
+
265
+ std::vector<gdal::GCP> m_asGCPs{};
266
+ OGRSpatialReferenceRefCountedPtr m_poGCP_SRS{};
267
+
268
+ bool m_bNeedsFlush = false;
269
+ bool m_bWritable = true;
270
+ bool m_bCanTakeRef = true;
271
+
272
+ char *m_pszVRTPath = nullptr;
273
+
274
+ std::unique_ptr<VRTRasterBand> m_poMaskBand{};
275
+
276
+ mutable int m_nCompatibleForDatasetIO = -1;
277
+ bool CheckCompatibleForDatasetIO() const;
278
+
279
+ // Virtual (ie not materialized) overviews, created either implicitly
280
+ // when it is cheap to do it, or explicitly.
281
+ std::vector<GDALDataset *> m_apoOverviews{};
282
+ std::vector<GDALDataset *> m_apoOverviewsBak{};
283
+ CPLStringList m_aosOverviewList{}; // only temporarily set during Open()
284
+ CPLString m_osOverviewResampling{};
285
+ std::vector<int> m_anOverviewFactors{};
286
+
287
+ char **m_papszXMLVRTMetadata = nullptr;
288
+
289
+ VRTMapSharedResources m_oMapSharedSources{};
290
+ std::shared_ptr<VRTGroup> m_poRootGroup{};
291
+
292
+ // Used by VRTSourcedRasterBand::IRasterIO() in single-threaded situations
293
+ VRTSource::WorkingState m_oWorkingState{};
294
+
295
+ // Used by VRTSourcedRasterBand::IRasterIO() when using multi-threading
296
+ struct QueueWorkingStates
297
+ {
298
+ std::mutex oMutex{};
299
+ std::vector<std::unique_ptr<VRTSource::WorkingState>> oStates{};
300
+ };
301
+
302
+ QueueWorkingStates m_oQueueWorkingStates{};
303
+
304
+ bool m_bMultiThreadedRasterIOLastUsed = false;
305
+
306
+ std::unique_ptr<VRTRasterBand> InitBand(const char *pszSubclass, int nBand,
307
+ bool bAllowPansharpenedOrProcessed);
308
+ static GDALDataset *OpenVRTProtocol(const char *pszSpec);
309
+ bool AddVirtualOverview(int nOvFactor, const char *pszResampling);
310
+
311
+ bool GetShiftedDataset(int nXOff, int nYOff, int nXSize, int nYSize,
312
+ GDALDataset *&poSrcDataset, int &nSrcXOff,
313
+ int &nSrcYOff);
314
+
315
+ static bool IsDefaultBlockSize(int nBlockSize, int nDimension);
316
+
317
+ CPL_DISALLOW_COPY_ASSIGN(VRTDataset)
318
+
319
+ protected:
320
+ bool m_bBlockSizeSpecified = false;
321
+ int m_nBlockXSize = 0;
322
+ int m_nBlockYSize = 0;
323
+
324
+ OGRSpatialReferenceRefCountedPtr m_poSRS{};
325
+
326
+ int m_bGeoTransformSet = false;
327
+ GDALGeoTransform m_gt{};
328
+
329
+ int CloseDependentDatasets() override;
330
+
331
+ public:
332
+ VRTDataset(int nXSize, int nYSize, int nBlockXSize = 0,
333
+ int nBlockYSize = 0);
334
+ ~VRTDataset() override;
335
+
336
+ void SetNeedsFlush()
337
+ {
338
+ m_bNeedsFlush = true;
339
+ }
340
+
341
+ CPLErr FlushCache(bool bAtClosing) override;
342
+
343
+ void SetWritable(int bWritableIn)
344
+ {
345
+ m_bWritable = CPL_TO_BOOL(bWritableIn);
346
+ }
347
+
348
+ CPLErr CreateMaskBand(int nFlags) override;
349
+ void SetMaskBand(std::unique_ptr<VRTRasterBand> poMaskBand);
350
+
351
+ const OGRSpatialReference *GetSpatialRef() const override
352
+ {
353
+ return m_poSRS.get();
354
+ }
355
+
356
+ CPLErr SetSpatialRef(const OGRSpatialReference *poSRS) override;
357
+
358
+ CPLErr GetGeoTransform(GDALGeoTransform &) const override;
359
+ CPLErr SetGeoTransform(const GDALGeoTransform &) override;
360
+
361
+ CPLErr SetMetadata(CSLConstList papszMetadata,
362
+ const char *pszDomain = "") override;
363
+ CPLErr SetMetadataItem(const char *pszName, const char *pszValue,
364
+ const char *pszDomain = "") override;
365
+
366
+ CSLConstList GetMetadata(const char *pszDomain = "") override;
367
+ virtual const char *GetMetadataItem(const char *pszName,
368
+ const char *pszDomain = "") override;
369
+
370
+ int GetGCPCount() override;
371
+
372
+ const OGRSpatialReference *GetGCPSpatialRef() const override
373
+ {
374
+ return m_poGCP_SRS.get();
375
+ }
376
+
377
+ const GDAL_GCP *GetGCPs() override;
378
+ using GDALDataset::SetGCPs;
379
+ CPLErr SetGCPs(int nGCPCount, const GDAL_GCP *pasGCPList,
380
+ const OGRSpatialReference *poSRS) override;
381
+
382
+ virtual CPLErr AddBand(GDALDataType eType,
383
+ CSLConstList papszOptions = nullptr) override;
384
+
385
+ char **GetFileList() override;
386
+
387
+ CPLErr IRasterIO(GDALRWFlag eRWFlag, int nXOff, int nYOff, int nXSize,
388
+ int nYSize, void *pData, int nBufXSize, int nBufYSize,
389
+ GDALDataType eBufType, int nBandCount,
390
+ BANDMAP_TYPE panBandMap, GSpacing nPixelSpace,
391
+ GSpacing nLineSpace, GSpacing nBandSpace,
392
+ GDALRasterIOExtraArg *psExtraArg) override;
393
+
394
+ virtual CPLStringList
395
+ GetCompressionFormats(int nXOff, int nYOff, int nXSize, int nYSize,
396
+ int nBandCount, const int *panBandList) override;
397
+ virtual CPLErr ReadCompressedData(const char *pszFormat, int nXOff,
398
+ int nYOff, int nXSize, int nYSize,
399
+ int nBandCount, const int *panBandList,
400
+ void **ppBuffer, size_t *pnBufferSize,
401
+ char **ppszDetailedFormat) override;
402
+
403
+ CPLErr AdviseRead(int nXOff, int nYOff, int nXSize, int nYSize,
404
+ int nBufXSize, int nBufYSize, GDALDataType eDT,
405
+ int nBandCount, int *panBandList,
406
+ CSLConstList papszOptions) override;
407
+
408
+ virtual CPLXMLNode *SerializeToXML(const char *pszVRTPath);
409
+ virtual CPLErr XMLInit(const CPLXMLNode *, const char *);
410
+
411
+ CPLErr IBuildOverviews(const char *, int, const int *, int, const int *,
412
+ GDALProgressFunc, void *,
413
+ CSLConstList papszOptions) override;
414
+
415
+ std::shared_ptr<GDALGroup> GetRootGroup() const override;
416
+
417
+ std::shared_ptr<VRTGroup> GetRootVRTGroup() const
418
+ {
419
+ return m_poRootGroup;
420
+ }
421
+
422
+ void ClearStatistics() override;
423
+
424
+ /** To be called when a new source is added, to invalidate cached states. */
425
+ void SourceAdded()
426
+ {
427
+ m_nCompatibleForDatasetIO = -1;
428
+ }
429
+
430
+ /* Used by PDF driver for example */
431
+ GDALDataset *GetSingleSimpleSource();
432
+ void BuildVirtualOverviews();
433
+
434
+ void UnsetPreservedRelativeFilenames();
435
+
436
+ bool IsBlockSizeSpecified() const
437
+ {
438
+ return m_bBlockSizeSpecified;
439
+ }
440
+
441
+ int GetBlockXSize() const
442
+ {
443
+ return m_nBlockXSize;
444
+ }
445
+
446
+ int GetBlockYSize() const
447
+ {
448
+ return m_nBlockYSize;
449
+ }
450
+
451
+ static int Identify(GDALOpenInfo *);
452
+ static GDALDataset *Open(GDALOpenInfo *);
453
+ static std::unique_ptr<VRTDataset>
454
+ OpenXML(const char *, const char * = nullptr,
455
+ GDALAccess eAccess = GA_ReadOnly);
456
+ static GDALDataset *Create(const char *pszName, int nXSize, int nYSize,
457
+ int nBands, GDALDataType eType,
458
+ CSLConstList papszOptions);
459
+ static std::unique_ptr<VRTDataset>
460
+ CreateVRTDataset(const char *pszName, int nXSize, int nYSize, int nBands,
461
+ GDALDataType eType, CSLConstList papszOptions);
462
+ static GDALDataset *
463
+ CreateMultiDimensional(const char *pszFilename,
464
+ CSLConstList papszRootGroupOptions,
465
+ CSLConstList papszOptions);
466
+ static std::unique_ptr<VRTDataset>
467
+ CreateVRTMultiDimensional(const char *pszFilename,
468
+ CSLConstList papszRootGroupOptions,
469
+ CSLConstList papszOptions);
470
+ static CPLErr Delete(const char *pszFilename);
471
+
472
+ static int GetNumThreads(GDALDataset *poDS);
473
+
474
+ static bool IsRawRasterBandEnabled();
475
+ };
476
+
477
+ /************************************************************************/
478
+ /* VRTWarpedDataset */
479
+ /************************************************************************/
480
+
481
+ class GDALWarpOperation;
482
+ class VRTWarpedRasterBand;
483
+
484
+ class CPL_DLL VRTWarpedDataset final : public VRTDataset
485
+ {
486
+ GDALWarpOperation *m_poWarper;
487
+
488
+ bool m_bIsOverview = false;
489
+ std::vector<VRTWarpedDataset *> m_apoOverviews{};
490
+ int m_nSrcOvrLevel;
491
+
492
+ bool GetOverviewSize(GDALDataset *poSrcDS, int iOvr, int iSrcOvr,
493
+ int &nOvrXSize, int &nOvrYSize, double &dfSrcRatioX,
494
+ double &dfSrcRatioY) const;
495
+ int GetOverviewCount() const;
496
+ int GetSrcOverviewLevel(int iOvr, bool &bThisLevelOnlyOut) const;
497
+ VRTWarpedDataset *CreateImplicitOverview(int iOvr) const;
498
+ void CreateImplicitOverviews();
499
+
500
+ friend class VRTWarpedRasterBand;
501
+
502
+ CPL_DISALLOW_COPY_ASSIGN(VRTWarpedDataset)
503
+
504
+ protected:
505
+ int CloseDependentDatasets() override;
506
+
507
+ public:
508
+ VRTWarpedDataset(int nXSize, int nYSize, int nBlockXSize = 0,
509
+ int nBlockYSize = 0);
510
+ ~VRTWarpedDataset() override;
511
+
512
+ CPLErr FlushCache(bool bAtClosing) override;
513
+
514
+ CPLErr Initialize(/* GDALWarpOptions */ void *);
515
+
516
+ CPLErr IBuildOverviews(const char *, int, const int *, int, const int *,
517
+ GDALProgressFunc, void *,
518
+ CSLConstList papszOptions) override;
519
+
520
+ CPLErr SetMetadataItem(const char *pszName, const char *pszValue,
521
+ const char *pszDomain = "") override;
522
+
523
+ CPLXMLNode *SerializeToXML(const char *pszVRTPath) override;
524
+ CPLErr XMLInit(const CPLXMLNode *, const char *) override;
525
+
526
+ virtual CPLErr AddBand(GDALDataType eType,
527
+ CSLConstList papszOptions = nullptr) override;
528
+
529
+ char **GetFileList() override;
530
+
531
+ CPLErr IRasterIO(GDALRWFlag eRWFlag, int nXOff, int nYOff, int nXSize,
532
+ int nYSize, void *pData, int nBufXSize, int nBufYSize,
533
+ GDALDataType eBufType, int nBandCount,
534
+ BANDMAP_TYPE panBandMap, GSpacing nPixelSpace,
535
+ GSpacing nLineSpace, GSpacing nBandSpace,
536
+ GDALRasterIOExtraArg *psExtraArg) override;
537
+
538
+ CPLErr ProcessBlock(int iBlockX, int iBlockY);
539
+
540
+ void GetBlockSize(int *, int *) const;
541
+ };
542
+
543
+ /************************************************************************/
544
+ /* VRTPansharpenedDataset */
545
+ /************************************************************************/
546
+
547
+ class GDALPansharpenOperation;
548
+
549
+ typedef enum
550
+ {
551
+ GTAdjust_Union,
552
+ GTAdjust_Intersection,
553
+ GTAdjust_None,
554
+ GTAdjust_NoneWithoutWarning
555
+ } GTAdjustment;
556
+
557
+ class VRTPansharpenedDataset final : public VRTDataset
558
+ {
559
+ friend class VRTPansharpenedRasterBand;
560
+
561
+ std::unique_ptr<GDALPansharpenOperation> m_poPansharpener{};
562
+ VRTPansharpenedDataset *m_poMainDataset;
563
+ std::vector<std::unique_ptr<VRTPansharpenedDataset>>
564
+ m_apoOverviewDatasets{};
565
+ // Map from absolute to relative.
566
+ std::map<CPLString, CPLString> m_oMapToRelativeFilenames{};
567
+
568
+ int m_bLoadingOtherBands;
569
+
570
+ GByte *m_pabyLastBufferBandRasterIO;
571
+ int m_nLastBandRasterIOXOff;
572
+ int m_nLastBandRasterIOYOff;
573
+ int m_nLastBandRasterIOXSize;
574
+ int m_nLastBandRasterIOYSize;
575
+ GDALDataType m_eLastBandRasterIODataType;
576
+
577
+ GTAdjustment m_eGTAdjustment;
578
+ int m_bNoDataDisabled;
579
+
580
+ std::vector<std::unique_ptr<GDALDataset, GDALDatasetUniquePtrReleaser>>
581
+ m_apoDatasetsToReleaseRef{};
582
+
583
+ CPL_DISALLOW_COPY_ASSIGN(VRTPansharpenedDataset)
584
+
585
+ protected:
586
+ int CloseDependentDatasets() override;
587
+
588
+ public:
589
+ VRTPansharpenedDataset(int nXSize, int nYSize, int nBlockXSize = 0,
590
+ int nBlockYSize = 0);
591
+ ~VRTPansharpenedDataset() override;
592
+
593
+ CPLErr FlushCache(bool bAtClosing) override;
594
+
595
+ CPLErr XMLInit(const CPLXMLNode *, const char *) override;
596
+ CPLXMLNode *SerializeToXML(const char *pszVRTPath) override;
597
+
598
+ CPLErr XMLInit(const CPLXMLNode *psTree, const char *pszVRTPath,
599
+ GDALRasterBandH hPanchroBandIn, int nInputSpectralBandsIn,
600
+ GDALRasterBandH *pahInputSpectralBandsIn);
601
+
602
+ virtual CPLErr AddBand(GDALDataType eType,
603
+ CSLConstList papszOptions = nullptr) override;
604
+
605
+ char **GetFileList() override;
606
+
607
+ CPLErr IRasterIO(GDALRWFlag eRWFlag, int nXOff, int nYOff, int nXSize,
608
+ int nYSize, void *pData, int nBufXSize, int nBufYSize,
609
+ GDALDataType eBufType, int nBandCount,
610
+ BANDMAP_TYPE panBandMap, GSpacing nPixelSpace,
611
+ GSpacing nLineSpace, GSpacing nBandSpace,
612
+ GDALRasterIOExtraArg *psExtraArg) override;
613
+
614
+ void GetBlockSize(int *, int *) const;
615
+
616
+ GDALPansharpenOperation *GetPansharpener()
617
+ {
618
+ return m_poPansharpener.get();
619
+ }
620
+ };
621
+
622
+ /************************************************************************/
623
+ /* VRTPansharpenedDataset */
624
+ /************************************************************************/
625
+
626
+ /** Specialized implementation of VRTDataset that chains several processing
627
+ * steps applied on all bands at a time.
628
+ *
629
+ * @since 3.9
630
+ */
631
+ class VRTProcessedDataset final : public VRTDataset
632
+ {
633
+ public:
634
+ VRTProcessedDataset(int nXSize, int nYSize);
635
+ ~VRTProcessedDataset() override;
636
+
637
+ CPLErr FlushCache(bool bAtClosing) override;
638
+
639
+ CPLErr XMLInit(const CPLXMLNode *, const char *) override;
640
+ CPLXMLNode *SerializeToXML(const char *pszVRTPath) override;
641
+
642
+ void GetBlockSize(int *, int *) const;
643
+
644
+ // GByte whose initialization constructor does nothing
645
+ #ifdef __GNUC__
646
+ #pragma GCC diagnostic push
647
+ #pragma GCC diagnostic ignored "-Weffc++"
648
+ #endif
649
+ struct NoInitByte
650
+ {
651
+ #ifdef __COVERITY__
652
+ GByte value = 0;
653
+ #else
654
+ GByte value;
655
+ #endif
656
+
657
+ // cppcheck-suppress uninitMemberVar
658
+ NoInitByte()
659
+ {
660
+ // do nothing
661
+ }
662
+
663
+ inline operator GByte() const
664
+ {
665
+ return value;
666
+ }
667
+ };
668
+ #ifdef __GNUC__
669
+ #pragma GCC diagnostic pop
670
+ #endif
671
+
672
+ protected:
673
+ CPLErr IRasterIO(GDALRWFlag eRWFlag, int nXOff, int nYOff, int nXSize,
674
+ int nYSize, void *pData, int nBufXSize, int nBufYSize,
675
+ GDALDataType eBufType, int nBandCount,
676
+ BANDMAP_TYPE panBandMap, GSpacing nPixelSpace,
677
+ GSpacing nLineSpace, GSpacing nBandSpace,
678
+ GDALRasterIOExtraArg *psExtraArg) override;
679
+
680
+ private:
681
+ friend class VRTProcessedRasterBand;
682
+
683
+ //! Data for a processing step.
684
+ struct Step
685
+ {
686
+ //! Algorithm name
687
+ std::string osAlgorithm{};
688
+
689
+ //! Arguments to pass to the processing function.
690
+ CPLStringList aosArguments{};
691
+
692
+ //! Data type of the input buffer.
693
+ GDALDataType eInDT = GDT_Unknown;
694
+
695
+ //! Data type of the output buffer.
696
+ GDALDataType eOutDT = GDT_Unknown;
697
+
698
+ //! Number of input bands.
699
+ int nInBands = 0;
700
+
701
+ //! Number of output bands.
702
+ int nOutBands = 0;
703
+
704
+ //! Nodata values (nInBands) of the input bands.
705
+ std::vector<double> adfInNoData{};
706
+
707
+ //! Nodata values (nOutBands) of the output bands.
708
+ std::vector<double> adfOutNoData{};
709
+
710
+ //! Working data structure (private data of the implementation of the function)
711
+ VRTPDWorkingDataPtr pWorkingData = nullptr;
712
+
713
+ // NOTE: if adding a new member, edit the move constructor and
714
+ // assignment operators!
715
+
716
+ Step() = default;
717
+ ~Step();
718
+ Step(Step &&);
719
+ Step &operator=(Step &&);
720
+
721
+ private:
722
+ Step(const Step &) = delete;
723
+ Step &operator=(const Step &) = delete;
724
+ void deinit();
725
+ };
726
+
727
+ //! Directory of the VRT
728
+ std::string m_osVRTPath{};
729
+
730
+ //! Source of source dataset generated with GDALTranslate
731
+ std::unique_ptr<GDALDataset> m_poVRTSrcDS{};
732
+
733
+ //! Source dataset
734
+ std::unique_ptr<GDALDataset> m_poSrcDS{};
735
+
736
+ //! Processing steps.
737
+ std::vector<Step> m_aoSteps{};
738
+
739
+ //! Backup XML tree passed to XMLInit()
740
+ CPLXMLTreeCloser m_oXMLTree{nullptr};
741
+
742
+ //! Overview datasets (dynamically generated from the ones of m_poSrcDS)
743
+ std::vector<std::unique_ptr<GDALDataset>> m_apoOverviewDatasets{};
744
+
745
+ //! Input buffer of a processing step
746
+ std::vector<NoInitByte> m_abyInput{};
747
+
748
+ //! Output buffer of a processing step
749
+ std::vector<NoInitByte> m_abyOutput{};
750
+
751
+ //! Provenance of OutputBands.count and OutputBands.dataType
752
+ enum class ValueProvenance
753
+ {
754
+ FROM_VRTRASTERBAND,
755
+ FROM_SOURCE,
756
+ FROM_LAST_STEP,
757
+ USER_PROVIDED,
758
+ };
759
+
760
+ //! Provenance of OutputBands.count attribute
761
+ ValueProvenance m_outputBandCountProvenance = ValueProvenance::FROM_SOURCE;
762
+
763
+ //! Value of OutputBands.count attribute if m_outputBandCountProvenance = USER_PROVIDED
764
+ int m_outputBandCountValue = 0;
765
+
766
+ //! Provenance of OutputBands.dataType attribute
767
+ ValueProvenance m_outputBandDataTypeProvenance =
768
+ ValueProvenance::FROM_SOURCE;
769
+
770
+ //! Value of OutputBands.dataType attribute if m_outputBandDataTypeProvenance = USER_PROVIDED
771
+ GDALDataType m_outputBandDataTypeValue = GDT_Unknown;
772
+
773
+ //! Number of temporary bytes we need per output pixel.
774
+ int m_nWorkingBytesPerPixel = 1;
775
+
776
+ //! Value of CPLGetUsablePhysicalRAM() / 10 * 4
777
+ GIntBig m_nAllowedRAMUsage = 0;
778
+
779
+ CPLErr Init(const CPLXMLNode *, const char *,
780
+ const VRTProcessedDataset *poParentDS,
781
+ GDALDataset *poParentSrcDS, int iOvrLevel);
782
+
783
+ bool ParseStep(const CPLXMLNode *psStep, bool bIsFinalStep,
784
+ GDALDataType &eCurrentDT, int &nCurrentBandCount,
785
+ std::vector<double> &adfInNoData,
786
+ std::vector<double> &adfOutNoData);
787
+ bool ProcessRegion(int nXOff, int nYOff, int nBufXSize, int nBufYSize,
788
+ GDALProgressFunc pfnProgress, void *pProgressData);
789
+ };
790
+
791
+ /************************************************************************/
792
+ /* VRTRasterBand */
793
+ /* */
794
+ /* Provides support for all the various kinds of metadata but */
795
+ /* no raster access. That is handled by derived classes. */
796
+ /************************************************************************/
797
+
798
+ constexpr double VRT_DEFAULT_NODATA_VALUE = -10000.0;
799
+
800
+ class CPL_DLL VRTRasterBand CPL_NON_FINAL : public GDALRasterBand
801
+ {
802
+ private:
803
+ void ResetNoDataValues();
804
+
805
+ protected:
806
+ friend class VRTDataset;
807
+
808
+ bool m_bIsMaskBand = false;
809
+
810
+ bool m_bNoDataValueSet = false;
811
+ // If set to true, will not report the existence of nodata.
812
+ int m_bHideNoDataValue = false;
813
+ double m_dfNoDataValue = VRT_DEFAULT_NODATA_VALUE;
814
+
815
+ bool m_bNoDataSetAsInt64 = false;
816
+ int64_t m_nNoDataValueInt64 = GDAL_PAM_DEFAULT_NODATA_VALUE_INT64;
817
+
818
+ bool m_bNoDataSetAsUInt64 = false;
819
+ uint64_t m_nNoDataValueUInt64 = GDAL_PAM_DEFAULT_NODATA_VALUE_UINT64;
820
+
821
+ std::unique_ptr<GDALColorTable> m_poColorTable{};
822
+
823
+ GDALColorInterp m_eColorInterp = GCI_Undefined;
824
+
825
+ std::string m_osUnitType{};
826
+ CPLStringList m_aosCategoryNames{};
827
+
828
+ double m_dfOffset = 0.0;
829
+ double m_dfScale = 1.0;
830
+
831
+ CPLXMLTreeCloser m_psSavedHistograms{nullptr};
832
+
833
+ void Initialize(int nXSize, int nYSize);
834
+
835
+ std::vector<VRTOverviewInfo> m_aoOverviewInfos{};
836
+
837
+ std::unique_ptr<VRTRasterBand> m_poMaskBand{};
838
+
839
+ std::unique_ptr<GDALRasterAttributeTable> m_poRAT{};
840
+
841
+ CPL_DISALLOW_COPY_ASSIGN(VRTRasterBand)
842
+
843
+ bool IsNoDataValueInDataTypeRange() const;
844
+
845
+ public:
846
+ VRTRasterBand();
847
+ ~VRTRasterBand() override;
848
+
849
+ virtual CPLErr XMLInit(const CPLXMLNode *, const char *,
850
+ VRTMapSharedResources &);
851
+ virtual CPLXMLNode *SerializeToXML(const char *pszVRTPath,
852
+ bool &bHasWarnedAboutRAMUsage,
853
+ size_t &nAccRAMUsage);
854
+
855
+ CPLErr SetNoDataValue(double) override;
856
+ CPLErr SetNoDataValueAsInt64(int64_t nNoData) override;
857
+ CPLErr SetNoDataValueAsUInt64(uint64_t nNoData) override;
858
+ double GetNoDataValue(int *pbSuccess = nullptr) override;
859
+ int64_t GetNoDataValueAsInt64(int *pbSuccess = nullptr) override;
860
+ uint64_t GetNoDataValueAsUInt64(int *pbSuccess = nullptr) override;
861
+ CPLErr DeleteNoDataValue() override;
862
+
863
+ CPLErr SetColorTable(GDALColorTable *) override;
864
+ GDALColorTable *GetColorTable() override;
865
+
866
+ GDALRasterAttributeTable *GetDefaultRAT() override;
867
+ virtual CPLErr
868
+ SetDefaultRAT(const GDALRasterAttributeTable *poRAT) override;
869
+
870
+ CPLErr SetColorInterpretation(GDALColorInterp) override;
871
+ GDALColorInterp GetColorInterpretation() override;
872
+
873
+ const char *GetUnitType() override;
874
+ CPLErr SetUnitType(const char *) override;
875
+
876
+ char **GetCategoryNames() override;
877
+ CPLErr SetCategoryNames(char **) override;
878
+
879
+ CPLErr SetMetadata(CSLConstList papszMD,
880
+ const char *pszDomain = "") override;
881
+ CPLErr SetMetadataItem(const char *pszName, const char *pszValue,
882
+ const char *pszDomain = "") override;
883
+
884
+ double GetOffset(int *pbSuccess = nullptr) override;
885
+ CPLErr SetOffset(double) override;
886
+ double GetScale(int *pbSuccess = nullptr) override;
887
+ CPLErr SetScale(double) override;
888
+
889
+ int GetOverviewCount() override;
890
+ GDALRasterBand *GetOverview(int) override;
891
+
892
+ CPLErr GetHistogram(double dfMin, double dfMax, int nBuckets,
893
+ GUIntBig *panHistogram, int bIncludeOutOfRange,
894
+ int bApproxOK, GDALProgressFunc,
895
+ void *pProgressData) override;
896
+
897
+ CPLErr GetDefaultHistogram(double *pdfMin, double *pdfMax, int *pnBuckets,
898
+ GUIntBig **ppanHistogram, int bForce,
899
+ GDALProgressFunc, void *pProgressData) override;
900
+
901
+ virtual CPLErr SetDefaultHistogram(double dfMin, double dfMax, int nBuckets,
902
+ GUIntBig *panHistogram) override;
903
+
904
+ CPLErr CopyCommonInfoFrom(const GDALRasterBand *);
905
+
906
+ virtual void GetFileList(char ***ppapszFileList, int *pnSize,
907
+ int *pnMaxSize, CPLHashSet *hSetFiles);
908
+
909
+ void SetDescription(const char *) override;
910
+
911
+ GDALRasterBand *GetMaskBand() override;
912
+ int GetMaskFlags() override;
913
+
914
+ CPLErr CreateMaskBand(int nFlagsIn) override;
915
+
916
+ void SetMaskBand(std::unique_ptr<VRTRasterBand> poMaskBand);
917
+
918
+ void SetIsMaskBand();
919
+
920
+ bool IsMaskBand() const override;
921
+
922
+ CPLErr UnsetNoDataValue();
923
+
924
+ virtual int CloseDependentDatasets();
925
+
926
+ virtual bool IsSourcedRasterBand()
927
+ {
928
+ return false;
929
+ }
930
+
931
+ virtual bool IsPansharpenRasterBand()
932
+ {
933
+ return false;
934
+ }
935
+ };
936
+
937
+ /************************************************************************/
938
+ /* VRTSourcedRasterBand */
939
+ /************************************************************************/
940
+
941
+ class VRTSimpleSource;
942
+
943
+ class CPL_DLL VRTSourcedRasterBand CPL_NON_FINAL : public VRTRasterBand
944
+ {
945
+ private:
946
+ CPLString m_osLastLocationInfo{};
947
+ CPLStringList m_aosSourceList{};
948
+ int m_nSkipBufferInitialization = -1;
949
+
950
+ bool CanUseSourcesMinMaxImplementations();
951
+
952
+ bool IsMosaicOfNonOverlappingSimpleSourcesOfFullRasterNoResAndTypeChange(
953
+ bool bAllowMaxValAdjustment) const;
954
+
955
+ CPL_DISALLOW_COPY_ASSIGN(VRTSourcedRasterBand)
956
+
957
+ protected:
958
+ bool SkipBufferInitialization();
959
+
960
+ void InitializeOutputBuffer(void *pData, int nBufXSize, int nBufYSize,
961
+ GDALDataType eBufType, GSpacing nPixelSpace,
962
+ GSpacing nLineSpace) const;
963
+
964
+ public:
965
+ std::vector<std::unique_ptr<VRTSource>> m_papoSources{};
966
+
967
+ VRTSourcedRasterBand(GDALDataset *poDS, int nBand);
968
+ VRTSourcedRasterBand(GDALDataType eType, int nXSize, int nYSize);
969
+ VRTSourcedRasterBand(GDALDataset *poDS, int nBand, GDALDataType eType,
970
+ int nXSize, int nYSize);
971
+ VRTSourcedRasterBand(GDALDataset *poDS, int nBand, GDALDataType eType,
972
+ int nXSize, int nYSize, int nBlockXSizeIn,
973
+ int nBlockYSizeIn);
974
+ ~VRTSourcedRasterBand() override;
975
+
976
+ void CopyForCloneWithoutSources(const VRTSourcedRasterBand *poSrcBand);
977
+
978
+ virtual std::unique_ptr<VRTSourcedRasterBand>
979
+ CloneWithoutSources(GDALDataset *poNewDS, int nNewXSize,
980
+ int nNewYSize) const;
981
+
982
+ CPLErr IRasterIO(GDALRWFlag, int, int, int, int, void *, int, int,
983
+ GDALDataType, GSpacing nPixelSpace, GSpacing nLineSpace,
984
+ GDALRasterIOExtraArg *psExtraArg) override;
985
+
986
+ bool MayMultiBlockReadingBeMultiThreaded() const override;
987
+
988
+ virtual int IGetDataCoverageStatus(int nXOff, int nYOff, int nXSize,
989
+ int nYSize, int nMaskFlagStop,
990
+ double *pdfDataPct) override;
991
+
992
+ char **GetMetadataDomainList() override;
993
+ virtual const char *GetMetadataItem(const char *pszName,
994
+ const char *pszDomain = "") override;
995
+ CSLConstList GetMetadata(const char *pszDomain = "") override;
996
+ CPLErr SetMetadata(CSLConstList papszMetadata,
997
+ const char *pszDomain = "") override;
998
+ CPLErr SetMetadataItem(const char *pszName, const char *pszValue,
999
+ const char *pszDomain = "") override;
1000
+
1001
+ virtual CPLErr XMLInit(const CPLXMLNode *, const char *,
1002
+ VRTMapSharedResources &) override;
1003
+ virtual CPLXMLNode *SerializeToXML(const char *pszVRTPath,
1004
+ bool &bHasWarnedAboutRAMUsage,
1005
+ size_t &nAccRAMUsage) override;
1006
+
1007
+ double GetMinimum(int *pbSuccess = nullptr) override;
1008
+ double GetMaximum(int *pbSuccess = nullptr) override;
1009
+ virtual CPLErr ComputeRasterMinMax(int bApproxOK,
1010
+ double *adfMinMax) override;
1011
+ virtual CPLErr ComputeStatistics(int bApproxOK, double *pdfMin,
1012
+ double *pdfMax, double *pdfMean,
1013
+ double *pdfStdDev,
1014
+ GDALProgressFunc pfnProgress,
1015
+ void *pProgressData) override;
1016
+ CPLErr GetHistogram(double dfMin, double dfMax, int nBuckets,
1017
+ GUIntBig *panHistogram, int bIncludeOutOfRange,
1018
+ int bApproxOK, GDALProgressFunc pfnProgress,
1019
+ void *pProgressData) override;
1020
+
1021
+ CPLErr AddSource(std::unique_ptr<VRTSource>);
1022
+
1023
+ CPLErr AddSource(VRTSource *);
1024
+
1025
+ CPLErr AddSimpleSource(const char *pszFilename, int nBand,
1026
+ double dfSrcXOff = -1, double dfSrcYOff = -1,
1027
+ double dfSrcXSize = -1, double dfSrcYSize = -1,
1028
+ double dfDstXOff = -1, double dfDstYOff = -1,
1029
+ double dfDstXSize = -1, double dfDstYSize = -1,
1030
+ const char *pszResampling = "near",
1031
+ double dfNoDataValue = VRT_NODATA_UNSET);
1032
+
1033
+ CPLErr AddSimpleSource(GDALRasterBand *poSrcBand, double dfSrcXOff = -1,
1034
+ double dfSrcYOff = -1, double dfSrcXSize = -1,
1035
+ double dfSrcYSize = -1, double dfDstXOff = -1,
1036
+ double dfDstYOff = -1, double dfDstXSize = -1,
1037
+ double dfDstYSize = -1,
1038
+ const char *pszResampling = "near",
1039
+ double dfNoDataValue = VRT_NODATA_UNSET);
1040
+
1041
+ CPLErr AddComplexSource(const char *pszFilename, int nBand,
1042
+ double dfSrcXOff = -1, double dfSrcYOff = -1,
1043
+ double dfSrcXSize = -1, double dfSrcYSize = -1,
1044
+ double dfDstXOff = -1, double dfDstYOff = -1,
1045
+ double dfDstXSize = -1, double dfDstYSize = -1,
1046
+ double dfScaleOff = 0.0, double dfScaleRatio = 1.0,
1047
+ double dfNoDataValue = VRT_NODATA_UNSET,
1048
+ int nColorTableComponent = 0);
1049
+
1050
+ CPLErr AddComplexSource(GDALRasterBand *poSrcBand, double dfSrcXOff = -1,
1051
+ double dfSrcYOff = -1, double dfSrcXSize = -1,
1052
+ double dfSrcYSize = -1, double dfDstXOff = -1,
1053
+ double dfDstYOff = -1, double dfDstXSize = -1,
1054
+ double dfDstYSize = -1, double dfScaleOff = 0.0,
1055
+ double dfScaleRatio = 1.0,
1056
+ double dfNoDataValue = VRT_NODATA_UNSET,
1057
+ int nColorTableComponent = 0);
1058
+
1059
+ CPLErr AddMaskBandSource(GDALRasterBand *poSrcBand, double dfSrcXOff = -1,
1060
+ double dfSrcYOff = -1, double dfSrcXSize = -1,
1061
+ double dfSrcYSize = -1, double dfDstXOff = -1,
1062
+ double dfDstYOff = -1, double dfDstXSize = -1,
1063
+ double dfDstYSize = -1);
1064
+
1065
+ CPLErr AddFuncSource(VRTImageReadFunc pfnReadFunc, void *hCBData,
1066
+ double dfNoDataValue = VRT_NODATA_UNSET);
1067
+
1068
+ void ConfigureSource(VRTSimpleSource *poSimpleSource,
1069
+ GDALRasterBand *poSrcBand, int bAddAsMaskBand,
1070
+ double dfSrcXOff, double dfSrcYOff, double dfSrcXSize,
1071
+ double dfSrcYSize, double dfDstXOff, double dfDstYOff,
1072
+ double dfDstXSize, double dfDstYSize);
1073
+
1074
+ void RemoveCoveredSources(CSLConstList papszOptions = nullptr);
1075
+
1076
+ bool CanIRasterIOBeForwardedToEachSource(
1077
+ GDALRWFlag eRWFlag, int nXOff, int nYOff, int nXSize, int nYSize,
1078
+ int nBufXSize, int nBufYSize,
1079
+ const GDALRasterIOExtraArg *psExtraArg) const;
1080
+
1081
+ bool CanMultiThreadRasterIO(double dfXOff, double dfYOff, double dfXSize,
1082
+ double dfYSize,
1083
+ int &nContributingSources) const;
1084
+
1085
+ CPLErr IReadBlock(int, int, void *) override;
1086
+
1087
+ virtual void GetFileList(char ***ppapszFileList, int *pnSize,
1088
+ int *pnMaxSize, CPLHashSet *hSetFiles) override;
1089
+
1090
+ int CloseDependentDatasets() override;
1091
+
1092
+ bool IsSourcedRasterBand() override
1093
+ {
1094
+ return true;
1095
+ }
1096
+
1097
+ CPLErr FlushCache(bool bAtClosing) override;
1098
+ };
1099
+
1100
+ /************************************************************************/
1101
+ /* VRTWarpedRasterBand */
1102
+ /************************************************************************/
1103
+
1104
+ class CPL_DLL VRTWarpedRasterBand final : public VRTRasterBand
1105
+ {
1106
+ public:
1107
+ VRTWarpedRasterBand(GDALDataset *poDS, int nBand,
1108
+ GDALDataType eType = GDT_Unknown);
1109
+ ~VRTWarpedRasterBand() override;
1110
+
1111
+ virtual CPLXMLNode *SerializeToXML(const char *pszVRTPath,
1112
+ bool &bHasWarnedAboutRAMUsage,
1113
+ size_t &nAccRAMUsage) override;
1114
+
1115
+ CPLErr IReadBlock(int, int, void *) override;
1116
+ CPLErr IWriteBlock(int, int, void *) override;
1117
+
1118
+ CPLErr IRasterIO(GDALRWFlag eRWFlag, int nXOff, int nYOff, int nXSize,
1119
+ int nYSize, void *pData, int nBufXSize, int nBufYSize,
1120
+ GDALDataType eBufType, GSpacing nPixelSpace,
1121
+ GSpacing nLineSpace,
1122
+ GDALRasterIOExtraArg *psExtraArg) override;
1123
+
1124
+ int GetOverviewCount() override;
1125
+ GDALRasterBand *GetOverview(int) override;
1126
+
1127
+ bool
1128
+ EmitErrorMessageIfWriteNotSupported(const char *pszCaller) const override;
1129
+
1130
+ private:
1131
+ int m_nIRasterIOCounter =
1132
+ 0; //! Protects against infinite recursion inside IRasterIO()
1133
+
1134
+ int GetBestOverviewLevel(int &nXOff, int &nYOff, int &nXSize, int &nYSize,
1135
+ int nBufXSize, int nBufYSize,
1136
+ GDALRasterIOExtraArg *psExtraArg) const;
1137
+ };
1138
+
1139
+ /************************************************************************/
1140
+ /* VRTPansharpenedRasterBand */
1141
+ /************************************************************************/
1142
+
1143
+ class VRTPansharpenedRasterBand final : public VRTRasterBand
1144
+ {
1145
+ int m_nIndexAsPansharpenedBand;
1146
+
1147
+ public:
1148
+ VRTPansharpenedRasterBand(GDALDataset *poDS, int nBand,
1149
+ GDALDataType eDataType = GDT_Unknown);
1150
+ ~VRTPansharpenedRasterBand() override;
1151
+
1152
+ virtual CPLXMLNode *SerializeToXML(const char *pszVRTPath,
1153
+ bool &bHasWarnedAboutRAMUsage,
1154
+ size_t &nAccRAMUsage) override;
1155
+
1156
+ CPLErr IReadBlock(int, int, void *) override;
1157
+
1158
+ CPLErr IRasterIO(GDALRWFlag eRWFlag, int nXOff, int nYOff, int nXSize,
1159
+ int nYSize, void *pData, int nBufXSize, int nBufYSize,
1160
+ GDALDataType eBufType, GSpacing nPixelSpace,
1161
+ GSpacing nLineSpace,
1162
+ GDALRasterIOExtraArg *psExtraArg) override;
1163
+
1164
+ int GetOverviewCount() override;
1165
+ GDALRasterBand *GetOverview(int) override;
1166
+
1167
+ bool IsPansharpenRasterBand() override
1168
+ {
1169
+ return true;
1170
+ }
1171
+
1172
+ void SetIndexAsPansharpenedBand(int nIdx)
1173
+ {
1174
+ m_nIndexAsPansharpenedBand = nIdx;
1175
+ }
1176
+
1177
+ int GetIndexAsPansharpenedBand() const
1178
+ {
1179
+ return m_nIndexAsPansharpenedBand;
1180
+ }
1181
+ };
1182
+
1183
+ /************************************************************************/
1184
+ /* VRTProcessedRasterBand */
1185
+ /************************************************************************/
1186
+
1187
+ class VRTProcessedRasterBand final : public VRTRasterBand
1188
+ {
1189
+ public:
1190
+ VRTProcessedRasterBand(VRTProcessedDataset *poDS, int nBand,
1191
+ GDALDataType eDataType = GDT_Unknown);
1192
+
1193
+ CPLErr IReadBlock(int, int, void *) override;
1194
+
1195
+ int GetOverviewCount() override;
1196
+ GDALRasterBand *GetOverview(int) override;
1197
+
1198
+ virtual CPLXMLNode *SerializeToXML(const char *pszVRTPath,
1199
+ bool &bHasWarnedAboutRAMUsage,
1200
+ size_t &nAccRAMUsage) override;
1201
+ };
1202
+
1203
+ /************************************************************************/
1204
+ /* VRTDerivedRasterBand */
1205
+ /************************************************************************/
1206
+
1207
+ class VRTDerivedRasterBandPrivateData;
1208
+
1209
+ class CPL_DLL VRTDerivedRasterBand CPL_NON_FINAL : public VRTSourcedRasterBand
1210
+ {
1211
+ VRTDerivedRasterBandPrivateData *m_poPrivate;
1212
+ bool InitializePython();
1213
+ CPLErr GetPixelFunctionArguments(
1214
+ const CPLString &, const std::vector<int> &anMapBufferIdxToSourceIdx,
1215
+ int nXOff, int nYOff, std::vector<std::pair<CPLString, CPLString>> &);
1216
+
1217
+ CPL_DISALLOW_COPY_ASSIGN(VRTDerivedRasterBand)
1218
+
1219
+ public:
1220
+ CPLString osFuncName{};
1221
+ GDALDataType eSourceTransferType;
1222
+
1223
+ using PixelFunc =
1224
+ std::function<CPLErr(void **, int, void *, int, int, GDALDataType,
1225
+ GDALDataType, int, int, CSLConstList)>;
1226
+
1227
+ VRTDerivedRasterBand(GDALDataset *poDS, int nBand);
1228
+ VRTDerivedRasterBand(GDALDataset *poDS, int nBand, GDALDataType eType,
1229
+ int nXSize, int nYSize, int nBlockXSizeIn = 0,
1230
+ int nBlockYSizeIn = 0);
1231
+ ~VRTDerivedRasterBand() override;
1232
+
1233
+ void CopyForCloneWithoutSources(const VRTDerivedRasterBand *poSrcBand);
1234
+
1235
+ std::unique_ptr<VRTSourcedRasterBand>
1236
+ CloneWithoutSources(GDALDataset *poNewDS, int nNewXSize,
1237
+ int nNewYSize) const override;
1238
+
1239
+ CPLErr IRasterIO(GDALRWFlag, int, int, int, int, void *, int, int,
1240
+ GDALDataType, GSpacing nPixelSpace, GSpacing nLineSpace,
1241
+ GDALRasterIOExtraArg *psExtraArg) override;
1242
+
1243
+ virtual int IGetDataCoverageStatus(int nXOff, int nYOff, int nXSize,
1244
+ int nYSize, int nMaskFlagStop,
1245
+ double *pdfDataPct) override;
1246
+
1247
+ static CPLErr AddPixelFunction(const char *pszFuncNameIn,
1248
+ GDALDerivedPixelFunc pfnPixelFunc);
1249
+ static CPLErr AddPixelFunction(const char *pszFuncNameIn,
1250
+ GDALDerivedPixelFuncWithArgs pfnPixelFunc,
1251
+ const char *pszMetadata);
1252
+
1253
+ static const std::pair<PixelFunc, std::string> *
1254
+ GetPixelFunction(const char *pszFuncNameIn);
1255
+
1256
+ static std::vector<std::string> GetPixelFunctionNames();
1257
+
1258
+ void SetPixelFunctionName(const char *pszFuncNameIn);
1259
+ void AddPixelFunctionArgument(const char *pszArg, const char *pszValue);
1260
+ void SetSkipNonContributingSources(bool bSkip);
1261
+ void SetSourceTransferType(GDALDataType eDataType);
1262
+ void SetPixelFunctionLanguage(const char *pszLanguage);
1263
+
1264
+ virtual CPLErr XMLInit(const CPLXMLNode *, const char *,
1265
+ VRTMapSharedResources &) override;
1266
+ virtual CPLXMLNode *SerializeToXML(const char *pszVRTPath,
1267
+ bool &bHasWarnedAboutRAMUsage,
1268
+ size_t &nAccRAMUsage) override;
1269
+
1270
+ double GetMinimum(int *pbSuccess = nullptr) override;
1271
+ double GetMaximum(int *pbSuccess = nullptr) override;
1272
+ virtual CPLErr ComputeRasterMinMax(int bApproxOK,
1273
+ double *adfMinMax) override;
1274
+ virtual CPLErr ComputeStatistics(int bApproxOK, double *pdfMin,
1275
+ double *pdfMax, double *pdfMean,
1276
+ double *pdfStdDev,
1277
+ GDALProgressFunc pfnProgress,
1278
+ void *pProgressData) override;
1279
+ CPLErr GetHistogram(double dfMin, double dfMax, int nBuckets,
1280
+ GUIntBig *panHistogram, int bIncludeOutOfRange,
1281
+ int bApproxOK, GDALProgressFunc pfnProgress,
1282
+ void *pProgressData) override;
1283
+
1284
+ static void Cleanup();
1285
+ };
1286
+
1287
+ #ifndef GDAL_VRT_DISABLE_RAWRASTERBAND
1288
+ /************************************************************************/
1289
+ /* VRTRawRasterBand */
1290
+ /************************************************************************/
1291
+
1292
+ class RawRasterBand;
1293
+
1294
+ class CPL_DLL VRTRawRasterBand CPL_NON_FINAL : public VRTRasterBand
1295
+ {
1296
+ RawRasterBand *m_poRawRaster;
1297
+
1298
+ char *m_pszSourceFilename;
1299
+ int m_bRelativeToVRT;
1300
+
1301
+ CPL_DISALLOW_COPY_ASSIGN(VRTRawRasterBand)
1302
+
1303
+ public:
1304
+ VRTRawRasterBand(GDALDataset *poDS, int nBand,
1305
+ GDALDataType eType = GDT_Unknown);
1306
+ ~VRTRawRasterBand() override;
1307
+
1308
+ virtual CPLErr XMLInit(const CPLXMLNode *, const char *,
1309
+ VRTMapSharedResources &) override;
1310
+ virtual CPLXMLNode *SerializeToXML(const char *pszVRTPath,
1311
+ bool &bHasWarnedAboutRAMUsage,
1312
+ size_t &nAccRAMUsage) override;
1313
+
1314
+ CPLErr IRasterIO(GDALRWFlag, int, int, int, int, void *, int, int,
1315
+ GDALDataType, GSpacing nPixelSpace, GSpacing nLineSpace,
1316
+ GDALRasterIOExtraArg *psExtraArg) override;
1317
+
1318
+ CPLErr IReadBlock(int, int, void *) override;
1319
+ CPLErr IWriteBlock(int, int, void *) override;
1320
+
1321
+ CPLErr SetRawLink(const char *pszFilename, const char *pszVRTPath,
1322
+ int bRelativeToVRT, vsi_l_offset nImageOffset,
1323
+ int nPixelOffset, int nLineOffset,
1324
+ const char *pszByteOrder);
1325
+
1326
+ void ClearRawLink();
1327
+
1328
+ CPLVirtualMem *GetVirtualMemAuto(GDALRWFlag eRWFlag, int *pnPixelSpace,
1329
+ GIntBig *pnLineSpace,
1330
+ CSLConstList papszOptions) override;
1331
+
1332
+ virtual void GetFileList(char ***ppapszFileList, int *pnSize,
1333
+ int *pnMaxSize, CPLHashSet *hSetFiles) override;
1334
+ };
1335
+ #endif
1336
+
1337
+ /************************************************************************/
1338
+ /* VRTDriver */
1339
+ /************************************************************************/
1340
+
1341
+ class VRTDriver final : public GDALDriver
1342
+ {
1343
+ CPL_DISALLOW_COPY_ASSIGN(VRTDriver)
1344
+
1345
+ std::mutex m_oMutex{};
1346
+ std::map<std::string, VRTSourceParser> m_oMapSourceParser{};
1347
+
1348
+ public:
1349
+ VRTDriver();
1350
+ ~VRTDriver() override;
1351
+
1352
+ char **papszSourceParsers;
1353
+
1354
+ char **GetMetadataDomainList() override;
1355
+ CSLConstList GetMetadata(const char *pszDomain = "") override;
1356
+ CPLErr SetMetadata(CSLConstList papszMetadata,
1357
+ const char *pszDomain = "") override;
1358
+
1359
+ VRTSource *ParseSource(const CPLXMLNode *psSrc, const char *pszVRTPath,
1360
+ VRTMapSharedResources &oMapSharedSources);
1361
+ void AddSourceParser(const char *pszElementName, VRTSourceParser pfnParser);
1362
+ };
1363
+
1364
+ /************************************************************************/
1365
+ /* VRTSimpleSource */
1366
+ /************************************************************************/
1367
+
1368
+ class CPL_DLL VRTSimpleSource CPL_NON_FINAL : public VRTSource
1369
+ {
1370
+ CPL_DISALLOW_COPY_ASSIGN(VRTSimpleSource)
1371
+
1372
+ private:
1373
+ // Owned by the VRTDataset
1374
+ VRTMapSharedResources *m_poMapSharedSources = nullptr;
1375
+
1376
+ mutable GDALRasterBand *m_poRasterBand = nullptr;
1377
+
1378
+ // When poRasterBand is a mask band, poMaskBandMainBand is the band
1379
+ // from which the mask band is taken.
1380
+ mutable GDALRasterBand *m_poMaskBandMainBand = nullptr;
1381
+
1382
+ CPLStringList m_aosOpenOptionsOri{}; // as read in the original source XML
1383
+ CPLStringList
1384
+ m_aosOpenOptions{}; // same as above, but potentially augmented with ROOT_PATH
1385
+ bool m_bSrcDSNameFromVRT =
1386
+ false; // whereas content in m_osSrcDSName is a <VRTDataset> XML node
1387
+
1388
+ void OpenSource() const;
1389
+
1390
+ GDALDataset *GetSourceDataset() const;
1391
+
1392
+ protected:
1393
+ friend class VRTSourcedRasterBand;
1394
+ friend class VRTDerivedRasterBand;
1395
+ friend class VRTDataset;
1396
+ friend class GDALTileIndexDataset;
1397
+ friend class GDALTileIndexBand;
1398
+
1399
+ int m_nBand = 0;
1400
+ bool m_bGetMaskBand = false;
1401
+
1402
+ /* Value for uninitialized source or destination window. It is chosen such
1403
+ * that SrcToDst() and DstToSrc() are no-ops if both source and destination
1404
+ * windows are unset.
1405
+ */
1406
+ static constexpr double UNINIT_WINDOW = -1.0;
1407
+
1408
+ double m_dfSrcXOff = UNINIT_WINDOW;
1409
+ double m_dfSrcYOff = UNINIT_WINDOW;
1410
+ double m_dfSrcXSize = UNINIT_WINDOW;
1411
+ double m_dfSrcYSize = UNINIT_WINDOW;
1412
+
1413
+ double m_dfDstXOff = UNINIT_WINDOW;
1414
+ double m_dfDstYOff = UNINIT_WINDOW;
1415
+ double m_dfDstXSize = UNINIT_WINDOW;
1416
+ double m_dfDstYSize = UNINIT_WINDOW;
1417
+
1418
+ CPLString m_osResampling{};
1419
+
1420
+ int m_nMaxValue = 0;
1421
+
1422
+ int m_bRelativeToVRTOri = -1;
1423
+ CPLString m_osSourceFileNameOri{};
1424
+ int m_nExplicitSharedStatus = -1; // -1 unknown, 0 = unshared, 1 = shared
1425
+ CPLString m_osSrcDSName{};
1426
+
1427
+ bool m_bDropRefOnSrcBand = true;
1428
+
1429
+ int NeedMaxValAdjustment() const;
1430
+
1431
+ GDALRasterBand *GetRasterBandNoOpen() const
1432
+ {
1433
+ return m_poRasterBand;
1434
+ }
1435
+
1436
+ void SetRasterBand(GDALRasterBand *poBand, bool bDropRef)
1437
+ {
1438
+ m_poRasterBand = poBand;
1439
+ m_bDropRefOnSrcBand = bDropRef;
1440
+ }
1441
+
1442
+ virtual bool ValidateOpenedBand(GDALRasterBand * /*poBand*/) const
1443
+ {
1444
+ return true;
1445
+ }
1446
+
1447
+ /** Returns whether the source window is set */
1448
+ bool IsSrcWinSet() const
1449
+ {
1450
+ return m_dfSrcXOff != UNINIT_WINDOW || m_dfSrcYOff != UNINIT_WINDOW ||
1451
+ m_dfSrcXSize != UNINIT_WINDOW || m_dfSrcYSize != UNINIT_WINDOW;
1452
+ }
1453
+
1454
+ /** Returns whether the destination window is set */
1455
+ bool IsDstWinSet() const
1456
+ {
1457
+ return m_dfDstXOff != UNINIT_WINDOW || m_dfDstYOff != UNINIT_WINDOW ||
1458
+ m_dfDstXSize != UNINIT_WINDOW || m_dfDstYSize != UNINIT_WINDOW;
1459
+ }
1460
+
1461
+ void AddSourceFilenameNode(const char *pszVRTPath, CPLXMLNode *psSrc);
1462
+
1463
+ public:
1464
+ VRTSimpleSource();
1465
+ VRTSimpleSource(const VRTSimpleSource *poSrcSource, double dfXDstRatio,
1466
+ double dfYDstRatio);
1467
+ ~VRTSimpleSource() override;
1468
+
1469
+ virtual CPLErr XMLInit(const CPLXMLNode *psTree, const char *,
1470
+ VRTMapSharedResources &) override;
1471
+ CPLXMLNode *SerializeToXML(const char *pszVRTPath) override;
1472
+
1473
+ CPLErr ParseSrcRectAndDstRect(const CPLXMLNode *psSrc);
1474
+
1475
+ void SetSrcBand(const char *pszFilename, int nBand);
1476
+ void SetSrcBand(GDALRasterBand *);
1477
+ void SetSrcMaskBand(GDALRasterBand *);
1478
+ void SetSrcWindow(double, double, double, double);
1479
+ void SetDstWindow(double, double, double, double);
1480
+ void GetDstWindow(double &, double &, double &, double &) const;
1481
+ bool DstWindowIntersects(double dfXOff, double dfYOff, double dfXSize,
1482
+ double dfYSize) const;
1483
+
1484
+ const std::string &GetSourceDatasetName() const
1485
+ {
1486
+ return m_osSrcDSName;
1487
+ }
1488
+
1489
+ // Must be called after SetSrcBand()
1490
+ void SetSourceDatasetName(const char *pszFilename, bool bRelativeToVRT);
1491
+
1492
+ const CPLString &GetResampling() const
1493
+ {
1494
+ return m_osResampling;
1495
+ }
1496
+
1497
+ void SetResampling(const char *pszResampling);
1498
+
1499
+ int GetSrcDstWindow(double, double, double, double, int, int,
1500
+ double *pdfReqXOff, double *pdfReqYOff,
1501
+ double *pdfReqXSize, double *pdfReqYSize, int *, int *,
1502
+ int *, int *, int *, int *, int *, int *,
1503
+ bool &bErrorOut);
1504
+
1505
+ int GetSrcDstWindow(double, double, double, double, int, int,
1506
+ GDALRIOResampleAlg eResampleAlg, double *pdfReqXOff,
1507
+ double *pdfReqYOff, double *pdfReqXSize,
1508
+ double *pdfReqYSize, int *, int *, int *, int *, int *,
1509
+ int *, int *, int *, bool &bErrorOut);
1510
+
1511
+ virtual CPLErr RasterIO(GDALDataType eVRTBandDataType, int nXOff, int nYOff,
1512
+ int nXSize, int nYSize, void *pData, int nBufXSize,
1513
+ int nBufYSize, GDALDataType eBufType,
1514
+ GSpacing nPixelSpace, GSpacing nLineSpace,
1515
+ GDALRasterIOExtraArg *psExtraArgIn,
1516
+ WorkingState &oWorkingState) override;
1517
+
1518
+ double GetMinimum(int nXSize, int nYSize, int *pbSuccess) override;
1519
+ double GetMaximum(int nXSize, int nYSize, int *pbSuccess) override;
1520
+ CPLErr GetHistogram(int nXSize, int nYSize, double dfMin, double dfMax,
1521
+ int nBuckets, GUIntBig *panHistogram,
1522
+ int bIncludeOutOfRange, int bApproxOK,
1523
+ GDALProgressFunc pfnProgress,
1524
+ void *pProgressData) override;
1525
+
1526
+ void DstToSrc(double dfX, double dfY, double &dfXOut, double &dfYOut) const;
1527
+ void SrcToDst(double dfX, double dfY, double &dfXOut, double &dfYOut) const;
1528
+
1529
+ virtual void GetFileList(char ***ppapszFileList, int *pnSize,
1530
+ int *pnMaxSize, CPLHashSet *hSetFiles) override;
1531
+
1532
+ bool IsSimpleSource() const override
1533
+ {
1534
+ return true;
1535
+ }
1536
+
1537
+ /** Returns the same value as GetType() called on objects that are exactly
1538
+ * instances of VRTSimpleSource.
1539
+ */
1540
+ static const char *GetTypeStatic();
1541
+
1542
+ const char *GetType() const override;
1543
+
1544
+ CPLErr FlushCache(bool bAtClosing) override;
1545
+
1546
+ GDALRasterBand *GetRasterBand() const;
1547
+ GDALRasterBand *GetMaskBandMainBand();
1548
+ bool IsSameExceptBandNumber(const VRTSimpleSource *poOtherSource) const;
1549
+ CPLErr DatasetRasterIO(GDALDataType eVRTBandDataType, int nXOff, int nYOff,
1550
+ int nXSize, int nYSize, void *pData, int nBufXSize,
1551
+ int nBufYSize, GDALDataType eBufType, int nBandCount,
1552
+ const int *panBandMap, GSpacing nPixelSpace,
1553
+ GSpacing nLineSpace, GSpacing nBandSpace,
1554
+ GDALRasterIOExtraArg *psExtraArg);
1555
+
1556
+ void UnsetPreservedRelativeFilenames();
1557
+
1558
+ void SetMaxValue(int nVal)
1559
+ {
1560
+ m_nMaxValue = nVal;
1561
+ }
1562
+
1563
+ static std::pair<std::string, bool>
1564
+ ComputeSourceNameAndRelativeFlag(const char *pszVRTPath,
1565
+ const std::string &osSourceNameIn);
1566
+ };
1567
+
1568
+ /************************************************************************/
1569
+ /* VRTAveragedSource */
1570
+ /************************************************************************/
1571
+
1572
+ class VRTAveragedSource final : public VRTSimpleSource
1573
+ {
1574
+ CPL_DISALLOW_COPY_ASSIGN(VRTAveragedSource)
1575
+
1576
+ int m_bNoDataSet = false;
1577
+ double m_dfNoDataValue = VRT_NODATA_UNSET;
1578
+
1579
+ public:
1580
+ VRTAveragedSource();
1581
+ virtual CPLErr RasterIO(GDALDataType eVRTBandDataType, int nXOff, int nYOff,
1582
+ int nXSize, int nYSize, void *pData, int nBufXSize,
1583
+ int nBufYSize, GDALDataType eBufType,
1584
+ GSpacing nPixelSpace, GSpacing nLineSpace,
1585
+ GDALRasterIOExtraArg *psExtraArgIn,
1586
+ WorkingState &oWorkingState) override;
1587
+
1588
+ double GetMinimum(int nXSize, int nYSize, int *pbSuccess) override;
1589
+ double GetMaximum(int nXSize, int nYSize, int *pbSuccess) override;
1590
+ CPLErr GetHistogram(int nXSize, int nYSize, double dfMin, double dfMax,
1591
+ int nBuckets, GUIntBig *panHistogram,
1592
+ int bIncludeOutOfRange, int bApproxOK,
1593
+ GDALProgressFunc pfnProgress,
1594
+ void *pProgressData) override;
1595
+
1596
+ void SetNoDataValue(double dfNoDataValue);
1597
+
1598
+ CPLXMLNode *SerializeToXML(const char *pszVRTPath) override;
1599
+
1600
+ /** Returns the same value as GetType() called on objects that are exactly
1601
+ * instances of VRTAveragedSource.
1602
+ */
1603
+ static const char *GetTypeStatic();
1604
+
1605
+ const char *GetType() const override;
1606
+ };
1607
+
1608
+ /************************************************************************/
1609
+ /* VRTNoDataFromMaskSource */
1610
+ /************************************************************************/
1611
+
1612
+ class VRTNoDataFromMaskSource final : public VRTSimpleSource
1613
+ {
1614
+ CPL_DISALLOW_COPY_ASSIGN(VRTNoDataFromMaskSource)
1615
+
1616
+ bool m_bNoDataSet = false;
1617
+ double m_dfNoDataValue = 0;
1618
+ double m_dfMaskValueThreshold = 0;
1619
+ bool m_bHasRemappedValue = false;
1620
+ double m_dfRemappedValue = 0;
1621
+
1622
+ public:
1623
+ VRTNoDataFromMaskSource();
1624
+ virtual CPLErr RasterIO(GDALDataType eVRTBandDataType, int nXOff, int nYOff,
1625
+ int nXSize, int nYSize, void *pData, int nBufXSize,
1626
+ int nBufYSize, GDALDataType eBufType,
1627
+ GSpacing nPixelSpace, GSpacing nLineSpace,
1628
+ GDALRasterIOExtraArg *psExtraArgIn,
1629
+ WorkingState &oWorkingState) override;
1630
+
1631
+ double GetMinimum(int nXSize, int nYSize, int *pbSuccess) override;
1632
+ double GetMaximum(int nXSize, int nYSize, int *pbSuccess) override;
1633
+ CPLErr GetHistogram(int nXSize, int nYSize, double dfMin, double dfMax,
1634
+ int nBuckets, GUIntBig *panHistogram,
1635
+ int bIncludeOutOfRange, int bApproxOK,
1636
+ GDALProgressFunc pfnProgress,
1637
+ void *pProgressData) override;
1638
+
1639
+ void SetParameters(double dfNoDataValue, double dfMaskValueThreshold);
1640
+ void SetParameters(double dfNoDataValue, double dfMaskValueThreshold,
1641
+ double dfRemappedValue);
1642
+
1643
+ virtual CPLErr XMLInit(const CPLXMLNode *psTree, const char *,
1644
+ VRTMapSharedResources &) override;
1645
+ CPLXMLNode *SerializeToXML(const char *pszVRTPath) override;
1646
+
1647
+ /** Returns the same value as GetType() called on objects that are exactly
1648
+ * instances of VRTNoDataFromMaskSource.
1649
+ */
1650
+ static const char *GetTypeStatic();
1651
+
1652
+ const char *GetType() const override;
1653
+ };
1654
+
1655
+ /************************************************************************/
1656
+ /* VRTComplexSource */
1657
+ /************************************************************************/
1658
+
1659
+ class CPL_DLL VRTComplexSource CPL_NON_FINAL : public VRTSimpleSource
1660
+ {
1661
+ CPL_DISALLOW_COPY_ASSIGN(VRTComplexSource)
1662
+
1663
+ protected:
1664
+ static constexpr int PROCESSING_FLAG_NODATA = 1 << 0;
1665
+ static constexpr int PROCESSING_FLAG_USE_MASK_BAND =
1666
+ 1 << 1; // Mutually exclusive with NODATA
1667
+ static constexpr int PROCESSING_FLAG_SCALING_LINEAR = 1 << 2;
1668
+ static constexpr int PROCESSING_FLAG_SCALING_EXPONENTIAL =
1669
+ 1 << 3; // Mutually exclusive with SCALING_LINEAR
1670
+ static constexpr int PROCESSING_FLAG_COLOR_TABLE_EXPANSION = 1 << 4;
1671
+ static constexpr int PROCESSING_FLAG_LUT = 1 << 5;
1672
+
1673
+ int m_nProcessingFlags = 0;
1674
+
1675
+ // adjusted value should be read with GetAdjustedNoDataValue()
1676
+ double m_dfNoDataValue = VRT_NODATA_UNSET;
1677
+ std::string
1678
+ m_osNoDataValueOri{}; // string value read in XML deserialization
1679
+
1680
+ double m_dfScaleOff = 0; // For linear scaling.
1681
+ double m_dfScaleRatio = 1; // For linear scaling.
1682
+
1683
+ // For non-linear scaling with a power function.
1684
+ bool m_bSrcMinMaxDefined = false;
1685
+ double m_dfSrcMin = 0;
1686
+ double m_dfSrcMax = 0;
1687
+ double m_dfDstMin = 0;
1688
+ double m_dfDstMax = 0;
1689
+ double m_dfExponent = 1;
1690
+ bool m_bClip = true; // Only taken into account for non-linear scaling
1691
+
1692
+ int m_nColorTableComponent = 0;
1693
+
1694
+ std::vector<double> m_adfLUTInputs{};
1695
+ std::vector<double> m_adfLUTOutputs{};
1696
+
1697
+ double GetAdjustedNoDataValue() const;
1698
+
1699
+ template <class WorkingDT>
1700
+ CPLErr
1701
+ RasterIOInternal(GDALRasterBand *poSourceBand,
1702
+ GDALDataType eVRTBandDataType, int nReqXOff, int nReqYOff,
1703
+ int nReqXSize, int nReqYSize, void *pData, int nOutXSize,
1704
+ int nOutYSize, GDALDataType eBufType, GSpacing nPixelSpace,
1705
+ GSpacing nLineSpace, GDALRasterIOExtraArg *psExtraArg,
1706
+ GDALDataType eWrkDataType, WorkingState &oWorkingState);
1707
+
1708
+ template <class WorkingDT, GDALDataType eWorkDT>
1709
+ CPLErr RasterIOProcessNoData(GDALRasterBand *poSourceBand,
1710
+ GDALDataType eVRTBandDataType, int nReqXOff,
1711
+ int nReqYOff, int nReqXSize, int nReqYSize,
1712
+ void *pData, int nOutXSize, int nOutYSize,
1713
+ GDALDataType eBufType, GSpacing nPixelSpace,
1714
+ GSpacing nLineSpace,
1715
+ GDALRasterIOExtraArg *psExtraArg,
1716
+ WorkingState &oWorkingState);
1717
+
1718
+ public:
1719
+ VRTComplexSource() = default;
1720
+ VRTComplexSource(const VRTComplexSource *poSrcSource, double dfXDstRatio,
1721
+ double dfYDstRatio);
1722
+
1723
+ virtual CPLErr RasterIO(GDALDataType eVRTBandDataType, int nXOff, int nYOff,
1724
+ int nXSize, int nYSize, void *pData, int nBufXSize,
1725
+ int nBufYSize, GDALDataType eBufType,
1726
+ GSpacing nPixelSpace, GSpacing nLineSpace,
1727
+ GDALRasterIOExtraArg *psExtraArgIn,
1728
+ WorkingState &oWorkingState) override;
1729
+
1730
+ double GetMinimum(int nXSize, int nYSize, int *pbSuccess) override;
1731
+ double GetMaximum(int nXSize, int nYSize, int *pbSuccess) override;
1732
+ CPLErr GetHistogram(int nXSize, int nYSize, double dfMin, double dfMax,
1733
+ int nBuckets, GUIntBig *panHistogram,
1734
+ int bIncludeOutOfRange, int bApproxOK,
1735
+ GDALProgressFunc pfnProgress,
1736
+ void *pProgressData) override;
1737
+
1738
+ CPLXMLNode *SerializeToXML(const char *pszVRTPath) override;
1739
+ virtual CPLErr XMLInit(const CPLXMLNode *, const char *,
1740
+ VRTMapSharedResources &) override;
1741
+
1742
+ /** Returns the same value as GetType() called on objects that are exactly
1743
+ * instances of VRTComplexSource.
1744
+ */
1745
+ static const char *GetTypeStatic();
1746
+
1747
+ const char *GetType() const override;
1748
+
1749
+ bool AreValuesUnchanged() const;
1750
+
1751
+ double LookupValue(double dfInput);
1752
+
1753
+ void SetNoDataValue(double dfNoDataValue);
1754
+
1755
+ void SetUseMaskBand(bool bUseMaskBand)
1756
+ {
1757
+ if (bUseMaskBand)
1758
+ m_nProcessingFlags |= PROCESSING_FLAG_USE_MASK_BAND;
1759
+ else
1760
+ m_nProcessingFlags &= ~PROCESSING_FLAG_USE_MASK_BAND;
1761
+ }
1762
+
1763
+ void SetLinearScaling(double dfOffset, double dfScale);
1764
+ void SetPowerScaling(double dfExponent, double dfSrcMin, double dfSrcMax,
1765
+ double dfDstMin, double dfDstMax, bool bClip = true);
1766
+ void SetColorTableComponent(int nComponent);
1767
+
1768
+ void SetLUT(const std::vector<double> &adfLUTInputs,
1769
+ const std::vector<double> &adfLUTOutputs);
1770
+ };
1771
+
1772
+ /************************************************************************/
1773
+ /* VRTFilteredSource */
1774
+ /************************************************************************/
1775
+
1776
+ class VRTFilteredSource CPL_NON_FINAL : public VRTComplexSource
1777
+ {
1778
+ private:
1779
+ int IsTypeSupported(GDALDataType eTestType) const;
1780
+
1781
+ CPL_DISALLOW_COPY_ASSIGN(VRTFilteredSource)
1782
+
1783
+ protected:
1784
+ int m_nSupportedTypesCount;
1785
+ GDALDataType m_aeSupportedTypes[20];
1786
+
1787
+ int m_nExtraEdgePixels;
1788
+
1789
+ public:
1790
+ VRTFilteredSource();
1791
+ ~VRTFilteredSource() override;
1792
+
1793
+ const char *GetType() const override = 0;
1794
+
1795
+ void SetExtraEdgePixels(int);
1796
+ void SetFilteringDataTypesSupported(int, GDALDataType *);
1797
+
1798
+ virtual CPLErr FilterData(int nXSize, int nYSize, GDALDataType eType,
1799
+ GByte *pabySrcData, GByte *pabyDstData) = 0;
1800
+
1801
+ virtual CPLErr RasterIO(GDALDataType eVRTBandDataType, int nXOff, int nYOff,
1802
+ int nXSize, int nYSize, void *pData, int nBufXSize,
1803
+ int nBufYSize, GDALDataType eBufType,
1804
+ GSpacing nPixelSpace, GSpacing nLineSpace,
1805
+ GDALRasterIOExtraArg *psExtraArg,
1806
+ WorkingState &oWorkingState) override;
1807
+ };
1808
+
1809
+ /************************************************************************/
1810
+ /* VRTKernelFilteredSource */
1811
+ /************************************************************************/
1812
+
1813
+ class VRTKernelFilteredSource CPL_NON_FINAL : public VRTFilteredSource
1814
+ {
1815
+ CPL_DISALLOW_COPY_ASSIGN(VRTKernelFilteredSource)
1816
+
1817
+ protected:
1818
+ int m_nKernelSize = 0;
1819
+ bool m_bSeparable = false;
1820
+ // m_nKernelSize elements if m_bSeparable, m_nKernelSize * m_nKernelSize otherwise
1821
+ std::vector<double> m_adfKernelCoefs{};
1822
+ bool m_bNormalized = false;
1823
+ std::string m_function{};
1824
+
1825
+ public:
1826
+ VRTKernelFilteredSource();
1827
+
1828
+ const char *GetType() const override;
1829
+
1830
+ virtual CPLErr XMLInit(const CPLXMLNode *psTree, const char *,
1831
+ VRTMapSharedResources &) override;
1832
+ CPLXMLNode *SerializeToXML(const char *pszVRTPath) override;
1833
+
1834
+ virtual CPLErr FilterData(int nXSize, int nYSize, GDALDataType eType,
1835
+ GByte *pabySrcData, GByte *pabyDstData) override;
1836
+
1837
+ CPLErr SetKernel(int nKernelSize, bool bSeparable,
1838
+ const std::vector<double> &adfNewCoefs);
1839
+ void SetNormalized(bool);
1840
+
1841
+ void SetFunction(const std::string &s)
1842
+ {
1843
+ m_function = s;
1844
+ }
1845
+ };
1846
+
1847
+ /************************************************************************/
1848
+ /* VRTAverageFilteredSource */
1849
+ /************************************************************************/
1850
+
1851
+ class VRTAverageFilteredSource final : public VRTKernelFilteredSource
1852
+ {
1853
+ CPL_DISALLOW_COPY_ASSIGN(VRTAverageFilteredSource)
1854
+
1855
+ public:
1856
+ explicit VRTAverageFilteredSource(int nKernelSize);
1857
+ ~VRTAverageFilteredSource() override;
1858
+
1859
+ const char *GetType() const override;
1860
+
1861
+ virtual CPLErr XMLInit(const CPLXMLNode *psTree, const char *,
1862
+ VRTMapSharedResources &) override;
1863
+ CPLXMLNode *SerializeToXML(const char *pszVRTPath) override;
1864
+ };
1865
+
1866
+ /************************************************************************/
1867
+ /* VRTFuncSource */
1868
+ /************************************************************************/
1869
+ class VRTFuncSource final : public VRTSource
1870
+ {
1871
+ CPL_DISALLOW_COPY_ASSIGN(VRTFuncSource)
1872
+
1873
+ public:
1874
+ VRTFuncSource();
1875
+ ~VRTFuncSource() override;
1876
+
1877
+ virtual CPLErr XMLInit(const CPLXMLNode *, const char *,
1878
+ VRTMapSharedResources &) override
1879
+ {
1880
+ return CE_Failure;
1881
+ }
1882
+
1883
+ CPLXMLNode *SerializeToXML(const char *pszVRTPath) override;
1884
+
1885
+ virtual CPLErr RasterIO(GDALDataType eVRTBandDataType, int nXOff, int nYOff,
1886
+ int nXSize, int nYSize, void *pData, int nBufXSize,
1887
+ int nBufYSize, GDALDataType eBufType,
1888
+ GSpacing nPixelSpace, GSpacing nLineSpace,
1889
+ GDALRasterIOExtraArg *psExtraArg,
1890
+ WorkingState &oWorkingState) override;
1891
+
1892
+ double GetMinimum(int nXSize, int nYSize, int *pbSuccess) override;
1893
+ double GetMaximum(int nXSize, int nYSize, int *pbSuccess) override;
1894
+ CPLErr GetHistogram(int nXSize, int nYSize, double dfMin, double dfMax,
1895
+ int nBuckets, GUIntBig *panHistogram,
1896
+ int bIncludeOutOfRange, int bApproxOK,
1897
+ GDALProgressFunc pfnProgress,
1898
+ void *pProgressData) override;
1899
+
1900
+ const char *GetType() const override;
1901
+
1902
+ VRTImageReadFunc pfnReadFunc;
1903
+ void *pCBData;
1904
+ GDALDataType eType;
1905
+
1906
+ float fNoDataValue;
1907
+ };
1908
+
1909
+ /************************************************************************/
1910
+ /* VRTGroup */
1911
+ /************************************************************************/
1912
+
1913
+ #ifdef TMPEXPORT
1914
+ #define TMP_CPL_DLL CPL_DLL
1915
+ #else
1916
+ #define TMP_CPL_DLL
1917
+ #endif
1918
+
1919
+ class VRTMDArray;
1920
+ class VRTAttribute;
1921
+ class VRTDimension;
1922
+
1923
+ class VRTGroup final : public GDALGroup
1924
+ {
1925
+ public:
1926
+ struct Ref
1927
+ {
1928
+ VRTGroup *m_ptr;
1929
+
1930
+ explicit Ref(VRTGroup *ptr) : m_ptr(ptr)
1931
+ {
1932
+ }
1933
+
1934
+ Ref(const Ref &) = delete;
1935
+ Ref &operator=(const Ref &) = delete;
1936
+ };
1937
+
1938
+ private:
1939
+ std::shared_ptr<Ref> m_poSharedRefRootGroup{};
1940
+ std::weak_ptr<Ref> m_poWeakRefRootGroup{};
1941
+ std::shared_ptr<Ref> m_poRefSelf{};
1942
+
1943
+ std::string m_osFilename{};
1944
+ mutable bool m_bDirty = false;
1945
+ std::string m_osVRTPath{};
1946
+ std::vector<std::string> m_aosGroupNames{};
1947
+ std::map<std::string, std::shared_ptr<VRTGroup>> m_oMapGroups{};
1948
+ std::vector<std::string> m_aosMDArrayNames{};
1949
+ std::map<std::string, std::shared_ptr<VRTMDArray>> m_oMapMDArrays{};
1950
+ std::map<std::string, std::shared_ptr<VRTAttribute>> m_oMapAttributes{};
1951
+ std::map<std::string, std::shared_ptr<VRTDimension>> m_oMapDimensions{};
1952
+
1953
+ std::shared_ptr<VRTGroup>
1954
+ OpenGroupInternal(const std::string &osName) const;
1955
+ void SetRootGroupRef(const std::weak_ptr<Ref> &rgRef);
1956
+ std::weak_ptr<Ref> GetRootGroupRef() const;
1957
+
1958
+ protected:
1959
+ friend class VRTMDArray;
1960
+ friend std::shared_ptr<GDALMDArray>
1961
+ VRTDerivedArrayCreate(const char *pszVRTPath, const CPLXMLNode *psTree);
1962
+
1963
+ explicit VRTGroup(const char *pszVRTPath);
1964
+ VRTGroup(const std::string &osParentName, const std::string &osName);
1965
+
1966
+ public:
1967
+ static std::shared_ptr<VRTGroup> Create(const std::string &osParentName,
1968
+ const std::string &osName)
1969
+ {
1970
+ auto poGroup =
1971
+ std::shared_ptr<VRTGroup>(new VRTGroup(osParentName, osName));
1972
+ poGroup->SetSelf(poGroup);
1973
+ return poGroup;
1974
+ }
1975
+
1976
+ ~VRTGroup() override;
1977
+
1978
+ bool XMLInit(const std::shared_ptr<VRTGroup> &poRoot,
1979
+ const std::shared_ptr<VRTGroup> &poThisGroup,
1980
+ const CPLXMLNode *psNode, const char *pszVRTPath);
1981
+
1982
+ std::vector<std::string>
1983
+ GetMDArrayNames(CSLConstList papszOptions) const override;
1984
+ std::shared_ptr<GDALMDArray>
1985
+ OpenMDArray(const std::string &osName,
1986
+ CSLConstList papszOptions = nullptr) const override;
1987
+
1988
+ std::vector<std::string>
1989
+ GetGroupNames(CSLConstList papszOptions) const override;
1990
+
1991
+ std::shared_ptr<GDALGroup> OpenGroup(const std::string &osName,
1992
+ CSLConstList) const override
1993
+ {
1994
+ return OpenGroupInternal(osName);
1995
+ }
1996
+
1997
+ std::vector<std::shared_ptr<GDALDimension>>
1998
+ GetDimensions(CSLConstList) const override;
1999
+
2000
+ std::vector<std::shared_ptr<GDALAttribute>>
2001
+ GetAttributes(CSLConstList) const override;
2002
+
2003
+ std::shared_ptr<VRTDimension> GetDimension(const std::string &name) const
2004
+ {
2005
+ auto oIter = m_oMapDimensions.find(name);
2006
+ return oIter == m_oMapDimensions.end() ? nullptr : oIter->second;
2007
+ }
2008
+
2009
+ std::shared_ptr<VRTDimension>
2010
+ GetDimensionFromFullName(const std::string &name, bool bEmitError) const;
2011
+
2012
+ std::shared_ptr<GDALGroup>
2013
+ CreateGroup(const std::string &osName,
2014
+ CSLConstList papszOptions = nullptr) override;
2015
+
2016
+ std::shared_ptr<VRTGroup>
2017
+ CreateVRTGroup(const std::string &osName,
2018
+ CSLConstList papszOptions = nullptr);
2019
+
2020
+ std::shared_ptr<GDALDimension>
2021
+ CreateDimension(const std::string &osName, const std::string &osType,
2022
+ const std::string &osDirection, GUInt64 nSize,
2023
+ CSLConstList papszOptions = nullptr) override;
2024
+
2025
+ std::shared_ptr<GDALAttribute>
2026
+ CreateAttribute(const std::string &osName,
2027
+ const std::vector<GUInt64> &anDimensions,
2028
+ const GDALExtendedDataType &oDataType,
2029
+ CSLConstList papszOptions = nullptr) override;
2030
+
2031
+ std::shared_ptr<GDALMDArray> CreateMDArray(
2032
+ const std::string &osName,
2033
+ const std::vector<std::shared_ptr<GDALDimension>> &aoDimensions,
2034
+ const GDALExtendedDataType &oDataType,
2035
+ CSLConstList papszOptions = nullptr) override;
2036
+
2037
+ std::shared_ptr<VRTMDArray> CreateVRTMDArray(
2038
+ const std::string &osName,
2039
+ const std::vector<std::shared_ptr<GDALDimension>> &aoDimensions,
2040
+ const GDALExtendedDataType &oDataType,
2041
+ CSLConstList papszOptions = nullptr);
2042
+
2043
+ void SetIsRootGroup();
2044
+
2045
+ const std::shared_ptr<Ref> &GetRef() const
2046
+ {
2047
+ return m_poRefSelf;
2048
+ }
2049
+
2050
+ VRTGroup *GetRootGroup() const;
2051
+ std::shared_ptr<VRTGroup> GetRootGroupSharedPtr() const;
2052
+
2053
+ const std::string &GetVRTPath() const
2054
+ {
2055
+ return m_osVRTPath;
2056
+ }
2057
+
2058
+ void SetVRTPath(const std::string &osVRTPath)
2059
+ {
2060
+ m_osVRTPath = osVRTPath;
2061
+ }
2062
+
2063
+ void SetDirty();
2064
+
2065
+ void SetFilename(const std::string &osFilename)
2066
+ {
2067
+ m_osFilename = osFilename;
2068
+ }
2069
+
2070
+ const std::string &GetFilename() const
2071
+ {
2072
+ return m_osFilename;
2073
+ }
2074
+
2075
+ bool Serialize() const;
2076
+ CPLXMLNode *SerializeToXML(const char *pszVRTPathIn) const;
2077
+ void Serialize(CPLXMLNode *psParent, const char *pszVRTPathIn) const;
2078
+ };
2079
+
2080
+ /************************************************************************/
2081
+ /* VRTDimension */
2082
+ /************************************************************************/
2083
+
2084
+ class VRTDimension final : public GDALDimension
2085
+ {
2086
+ std::weak_ptr<VRTGroup::Ref> m_poGroupRef;
2087
+ std::string m_osIndexingVariableName;
2088
+
2089
+ public:
2090
+ VRTDimension(const std::shared_ptr<VRTGroup::Ref> &poGroupRef,
2091
+ const std::string &osParentName, const std::string &osName,
2092
+ const std::string &osType, const std::string &osDirection,
2093
+ GUInt64 nSize, const std::string &osIndexingVariableName)
2094
+ : GDALDimension(osParentName, osName, osType, osDirection, nSize),
2095
+ m_poGroupRef(poGroupRef),
2096
+ m_osIndexingVariableName(osIndexingVariableName)
2097
+ {
2098
+ }
2099
+
2100
+ VRTGroup *GetGroup() const;
2101
+
2102
+ static std::shared_ptr<VRTDimension>
2103
+ Create(const std::shared_ptr<VRTGroup> &poThisGroup,
2104
+ const std::string &osParentName, const CPLXMLNode *psNode);
2105
+
2106
+ std::shared_ptr<GDALMDArray> GetIndexingVariable() const override;
2107
+
2108
+ bool SetIndexingVariable(
2109
+ std::shared_ptr<GDALMDArray> poIndexingVariable) override;
2110
+
2111
+ void Serialize(CPLXMLNode *psParent) const;
2112
+ };
2113
+
2114
+ /************************************************************************/
2115
+ /* VRTAttribute */
2116
+ /************************************************************************/
2117
+
2118
+ class VRTAttribute final : public GDALAttribute
2119
+ {
2120
+ GDALExtendedDataType m_dt;
2121
+ std::vector<std::string> m_aosList{};
2122
+ std::vector<std::shared_ptr<GDALDimension>> m_dims{};
2123
+
2124
+ protected:
2125
+ bool IRead(const GUInt64 *arrayStartIdx, const size_t *count,
2126
+ const GInt64 *arrayStep, const GPtrDiff_t *bufferStride,
2127
+ const GDALExtendedDataType &bufferDataType,
2128
+ void *pDstBuffer) const override;
2129
+
2130
+ bool IWrite(const GUInt64 *arrayStartIdx, const size_t *count,
2131
+ const GInt64 *arrayStep, const GPtrDiff_t *bufferStride,
2132
+ const GDALExtendedDataType &bufferDataType,
2133
+ const void *pSrcBuffer) override;
2134
+
2135
+ public:
2136
+ VRTAttribute(const std::string &osParentName, const std::string &osName,
2137
+ const GDALExtendedDataType &dt,
2138
+ std::vector<std::string> &&aosList)
2139
+ : GDALAbstractMDArray(osParentName, osName),
2140
+ GDALAttribute(osParentName, osName), m_dt(dt),
2141
+ m_aosList(std::move(aosList))
2142
+ {
2143
+ if (m_aosList.size() > 1)
2144
+ {
2145
+ m_dims.emplace_back(std::make_shared<GDALDimension>(
2146
+ std::string(), "dim", std::string(), std::string(),
2147
+ m_aosList.size()));
2148
+ }
2149
+ }
2150
+
2151
+ VRTAttribute(const std::string &osParentName, const std::string &osName,
2152
+ GUInt64 nDim, const GDALExtendedDataType &dt)
2153
+ : GDALAbstractMDArray(osParentName, osName),
2154
+ GDALAttribute(osParentName, osName), m_dt(dt)
2155
+ {
2156
+ if (nDim != 0)
2157
+ {
2158
+ m_dims.emplace_back(std::make_shared<GDALDimension>(
2159
+ std::string(), "dim", std::string(), std::string(), nDim));
2160
+ }
2161
+ }
2162
+
2163
+ static bool CreationCommonChecks(
2164
+ const std::string &osName, const std::vector<GUInt64> &anDimensions,
2165
+ const std::map<std::string, std::shared_ptr<VRTAttribute>>
2166
+ &oMapAttributes);
2167
+
2168
+ static std::shared_ptr<VRTAttribute> Create(const std::string &osParentName,
2169
+ const CPLXMLNode *psNode);
2170
+
2171
+ const std::vector<std::shared_ptr<GDALDimension>> &
2172
+ GetDimensions() const override
2173
+ {
2174
+ return m_dims;
2175
+ }
2176
+
2177
+ const GDALExtendedDataType &GetDataType() const override
2178
+ {
2179
+ return m_dt;
2180
+ }
2181
+
2182
+ void Serialize(CPLXMLNode *psParent) const;
2183
+ };
2184
+
2185
+ /************************************************************************/
2186
+ /* VRTMDArraySource */
2187
+ /************************************************************************/
2188
+
2189
+ class VRTMDArraySource
2190
+ {
2191
+ public:
2192
+ virtual ~VRTMDArraySource();
2193
+
2194
+ enum class RelationShip
2195
+ {
2196
+ NO_INTERSECTION,
2197
+ PARTIAL_INTERSECTION,
2198
+ SOURCE_BLOCK_MATCH,
2199
+ };
2200
+
2201
+ virtual RelationShip GetRelationship(const uint64_t *arrayStartIdx,
2202
+ const size_t *count) const = 0;
2203
+
2204
+ virtual bool GetRawBlockInfo(const uint64_t *arrayStartIdx,
2205
+ const size_t *count,
2206
+ GDALMDArrayRawBlockInfo &info) const = 0;
2207
+
2208
+ virtual bool Read(const GUInt64 *arrayStartIdx, const size_t *count,
2209
+ const GInt64 *arrayStep, const GPtrDiff_t *bufferStride,
2210
+ const GDALExtendedDataType &bufferDataType,
2211
+ void *pDstBuffer) const = 0;
2212
+
2213
+ virtual void Serialize(CPLXMLNode *psParent,
2214
+ const char *pszVRTPath) const = 0;
2215
+ };
2216
+
2217
+ /************************************************************************/
2218
+ /* VRTMDArray */
2219
+ /************************************************************************/
2220
+
2221
+ class VRTMDArray final : public GDALMDArray
2222
+ {
2223
+ protected:
2224
+ friend class VRTGroup; // for access to SetSelf()
2225
+
2226
+ std::weak_ptr<VRTGroup::Ref> m_poGroupRef;
2227
+ std::string m_osVRTPath{};
2228
+ std::shared_ptr<VRTGroup> m_poDummyOwningGroup{};
2229
+
2230
+ GDALExtendedDataType m_dt;
2231
+ std::vector<std::shared_ptr<GDALDimension>> m_dims;
2232
+ std::map<std::string, std::shared_ptr<VRTAttribute>> m_oMapAttributes{};
2233
+ std::vector<std::unique_ptr<VRTMDArraySource>> m_sources{};
2234
+ std::shared_ptr<OGRSpatialReference> m_poSRS{};
2235
+ std::vector<GByte> m_abyNoData{};
2236
+ std::string m_osUnit{};
2237
+ double m_dfScale = 1.0;
2238
+ double m_dfOffset = 0.0;
2239
+ bool m_bHasScale = false;
2240
+ bool m_bHasOffset = false;
2241
+ std::string m_osFilename{};
2242
+ std::vector<GUInt64> m_anBlockSize{};
2243
+ std::vector<std::string> m_aosOverviewFullname{};
2244
+ mutable std::vector<std::shared_ptr<GDALMDArray>> m_apoOverviews{};
2245
+
2246
+ bool IRead(const GUInt64 *arrayStartIdx, const size_t *count,
2247
+ const GInt64 *arrayStep, const GPtrDiff_t *bufferStride,
2248
+ const GDALExtendedDataType &bufferDataType,
2249
+ void *pDstBuffer) const override;
2250
+
2251
+ void SetDirty();
2252
+
2253
+ public:
2254
+ VRTMDArray(
2255
+ const std::shared_ptr<VRTGroup::Ref> &poGroupRef,
2256
+ const std::string &osParentName, const std::string &osName,
2257
+ const GDALExtendedDataType &dt,
2258
+ std::vector<std::shared_ptr<GDALDimension>> &&dims,
2259
+ std::map<std::string, std::shared_ptr<VRTAttribute>> &&oMapAttributes,
2260
+ std::vector<GUInt64> &&anBlockSize)
2261
+ : GDALAbstractMDArray(osParentName, osName),
2262
+ GDALMDArray(osParentName, osName), m_poGroupRef(poGroupRef),
2263
+ m_osVRTPath(poGroupRef->m_ptr->GetVRTPath()), m_dt(dt),
2264
+ m_dims(std::move(dims)), m_oMapAttributes(std::move(oMapAttributes)),
2265
+ m_osFilename(poGroupRef->m_ptr->GetFilename()),
2266
+ m_anBlockSize(std::move(anBlockSize))
2267
+ {
2268
+ }
2269
+
2270
+ VRTMDArray(const std::shared_ptr<VRTGroup::Ref> &poGroupRef,
2271
+ const std::string &osParentName, const std::string &osName,
2272
+ const std::vector<std::shared_ptr<GDALDimension>> &dims,
2273
+ const GDALExtendedDataType &dt,
2274
+ const std::vector<GUInt64> &anBlockSize)
2275
+ : GDALAbstractMDArray(osParentName, osName),
2276
+ GDALMDArray(osParentName, osName), m_poGroupRef(poGroupRef),
2277
+ m_osVRTPath(poGroupRef->m_ptr->GetVRTPath()), m_dt(dt), m_dims(dims),
2278
+ m_osFilename(poGroupRef->m_ptr->GetFilename()),
2279
+ m_anBlockSize(anBlockSize)
2280
+ {
2281
+ }
2282
+
2283
+ bool IsWritable() const override
2284
+ {
2285
+ return false;
2286
+ }
2287
+
2288
+ const std::string &GetFilename() const override
2289
+ {
2290
+ return m_osFilename;
2291
+ }
2292
+
2293
+ static std::shared_ptr<VRTMDArray> Create(const char *pszVRTPath,
2294
+ const CPLXMLNode *psNode);
2295
+
2296
+ static std::shared_ptr<VRTMDArray>
2297
+ Create(const std::shared_ptr<VRTGroup> &poThisGroup,
2298
+ const std::string &osParentName, const CPLXMLNode *psNode);
2299
+
2300
+ const std::vector<std::shared_ptr<GDALDimension>> &
2301
+ GetDimensions() const override
2302
+ {
2303
+ return m_dims;
2304
+ }
2305
+
2306
+ std::vector<std::shared_ptr<GDALAttribute>>
2307
+ GetAttributes(CSLConstList) const override;
2308
+
2309
+ const GDALExtendedDataType &GetDataType() const override
2310
+ {
2311
+ return m_dt;
2312
+ }
2313
+
2314
+ bool SetSpatialRef(const OGRSpatialReference *poSRS) override;
2315
+
2316
+ std::shared_ptr<OGRSpatialReference> GetSpatialRef() const override
2317
+ {
2318
+ return m_poSRS;
2319
+ }
2320
+
2321
+ const void *GetRawNoDataValue() const override;
2322
+
2323
+ bool SetRawNoDataValue(const void *pRawNoData) override;
2324
+
2325
+ const std::string &GetUnit() const override
2326
+ {
2327
+ return m_osUnit;
2328
+ }
2329
+
2330
+ bool SetUnit(const std::string &osUnit) override
2331
+ {
2332
+ m_osUnit = osUnit;
2333
+ return true;
2334
+ }
2335
+
2336
+ double GetOffset(bool *pbHasOffset,
2337
+ GDALDataType *peStorageType) const override
2338
+ {
2339
+ if (pbHasOffset)
2340
+ *pbHasOffset = m_bHasOffset;
2341
+ if (peStorageType)
2342
+ *peStorageType = GDT_Unknown;
2343
+ return m_dfOffset;
2344
+ }
2345
+
2346
+ double GetScale(bool *pbHasScale,
2347
+ GDALDataType *peStorageType) const override
2348
+ {
2349
+ if (pbHasScale)
2350
+ *pbHasScale = m_bHasScale;
2351
+ if (peStorageType)
2352
+ *peStorageType = GDT_Unknown;
2353
+ return m_dfScale;
2354
+ }
2355
+
2356
+ bool SetOffset(double dfOffset,
2357
+ GDALDataType /* eStorageType */ = GDT_Unknown) override
2358
+ {
2359
+ SetDirty();
2360
+ m_bHasOffset = true;
2361
+ m_dfOffset = dfOffset;
2362
+ return true;
2363
+ }
2364
+
2365
+ bool SetScale(double dfScale,
2366
+ GDALDataType /* eStorageType */ = GDT_Unknown) override
2367
+ {
2368
+ SetDirty();
2369
+ m_bHasScale = true;
2370
+ m_dfScale = dfScale;
2371
+ return true;
2372
+ }
2373
+
2374
+ void AddSource(std::unique_ptr<VRTMDArraySource> &&poSource);
2375
+
2376
+ std::shared_ptr<GDALAttribute>
2377
+ CreateAttribute(const std::string &osName,
2378
+ const std::vector<GUInt64> &anDimensions,
2379
+ const GDALExtendedDataType &oDataType,
2380
+ CSLConstList papszOptions = nullptr) override;
2381
+
2382
+ bool CopyFrom(GDALDataset *poSrcDS, const GDALMDArray *poSrcArray,
2383
+ bool bStrict, GUInt64 &nCurCost, const GUInt64 nTotalCost,
2384
+ GDALProgressFunc pfnProgress, void *pProgressData) override;
2385
+
2386
+ void Serialize(CPLXMLNode *psParent, const char *pszVRTPathIn) const;
2387
+
2388
+ VRTGroup *GetGroup() const;
2389
+
2390
+ const std::string &GetVRTPath() const
2391
+ {
2392
+ return m_osVRTPath;
2393
+ }
2394
+
2395
+ std::shared_ptr<VRTGroup> GetRootVRTGroup() const
2396
+ {
2397
+ auto poGroup = m_poGroupRef.lock();
2398
+ if (poGroup)
2399
+ return poGroup->m_ptr->GetRootGroupSharedPtr();
2400
+ return nullptr;
2401
+ }
2402
+
2403
+ std::shared_ptr<GDALGroup> GetRootGroup() const override
2404
+ {
2405
+ return GetRootVRTGroup();
2406
+ }
2407
+
2408
+ std::vector<GUInt64> GetBlockSize() const override
2409
+ {
2410
+ return m_anBlockSize;
2411
+ }
2412
+
2413
+ bool GetRawBlockInfo(const uint64_t *panBlockCoordinates,
2414
+ GDALMDArrayRawBlockInfo &info) const override;
2415
+
2416
+ int GetOverviewCount() const override;
2417
+
2418
+ std::shared_ptr<GDALMDArray> GetOverview(int idx) const override;
2419
+ };
2420
+
2421
+ /************************************************************************/
2422
+ /* VRTMDArraySourceInlinedValues */
2423
+ /************************************************************************/
2424
+
2425
+ class VRTMDArraySourceInlinedValues final : public VRTMDArraySource
2426
+ {
2427
+ const VRTMDArray *m_poDstArray = nullptr;
2428
+ bool m_bIsConstantValue;
2429
+ std::vector<GUInt64> m_anOffset{};
2430
+ std::vector<size_t> m_anCount{};
2431
+ std::vector<GByte> m_abyValues{};
2432
+ std::vector<size_t> m_anInlinedArrayStrideInBytes{};
2433
+ GDALExtendedDataType m_dt;
2434
+
2435
+ VRTMDArraySourceInlinedValues(const VRTMDArraySourceInlinedValues &) =
2436
+ delete;
2437
+ VRTMDArraySourceInlinedValues &
2438
+ operator=(const VRTMDArraySourceInlinedValues &) = delete;
2439
+
2440
+ public:
2441
+ VRTMDArraySourceInlinedValues(const VRTMDArray *poDstArray,
2442
+ bool bIsConstantValue,
2443
+ std::vector<GUInt64> &&anOffset,
2444
+ std::vector<size_t> &&anCount,
2445
+ std::vector<GByte> &&abyValues)
2446
+ : m_poDstArray(poDstArray), m_bIsConstantValue(bIsConstantValue),
2447
+ m_anOffset(std::move(anOffset)), m_anCount(std::move(anCount)),
2448
+ m_abyValues(std::move(abyValues)), m_dt(poDstArray->GetDataType())
2449
+ {
2450
+ const auto nDims(poDstArray->GetDimensionCount());
2451
+ m_anInlinedArrayStrideInBytes.resize(nDims);
2452
+ if (!bIsConstantValue && nDims > 0)
2453
+ {
2454
+ m_anInlinedArrayStrideInBytes.back() =
2455
+ poDstArray->GetDataType().GetSize();
2456
+ for (size_t i = nDims - 1; i > 0;)
2457
+ {
2458
+ --i;
2459
+ m_anInlinedArrayStrideInBytes[i] =
2460
+ m_anInlinedArrayStrideInBytes[i + 1] * m_anCount[i + 1];
2461
+ }
2462
+ }
2463
+ }
2464
+
2465
+ ~VRTMDArraySourceInlinedValues() override;
2466
+
2467
+ static std::unique_ptr<VRTMDArraySourceInlinedValues>
2468
+ Create(const VRTMDArray *poDstArray, const CPLXMLNode *psNode);
2469
+
2470
+ RelationShip GetRelationship(const uint64_t * /*arrayStartIdx*/,
2471
+ const size_t * /*count*/) const override
2472
+ {
2473
+ return RelationShip::PARTIAL_INTERSECTION;
2474
+ }
2475
+
2476
+ bool GetRawBlockInfo(const uint64_t * /*arrayStartIdx*/,
2477
+ const size_t * /*count*/,
2478
+ GDALMDArrayRawBlockInfo & /*info*/) const override
2479
+ {
2480
+ return false;
2481
+ }
2482
+
2483
+ bool Read(const GUInt64 *arrayStartIdx, const size_t *count,
2484
+ const GInt64 *arrayStep, const GPtrDiff_t *bufferStride,
2485
+ const GDALExtendedDataType &bufferDataType,
2486
+ void *pDstBuffer) const override;
2487
+
2488
+ void Serialize(CPLXMLNode *psParent, const char *pszVRTPath) const override;
2489
+ };
2490
+
2491
+ /************************************************************************/
2492
+ /* VRTMDArraySourceRegularlySpaced */
2493
+ /************************************************************************/
2494
+
2495
+ class VRTMDArraySourceRegularlySpaced final : public VRTMDArraySource
2496
+ {
2497
+ double m_dfStart;
2498
+ double m_dfIncrement;
2499
+
2500
+ public:
2501
+ VRTMDArraySourceRegularlySpaced(double dfStart, double dfIncrement)
2502
+ : m_dfStart(dfStart), m_dfIncrement(dfIncrement)
2503
+ {
2504
+ }
2505
+
2506
+ RelationShip GetRelationship(const uint64_t * /*arrayStartIdx*/,
2507
+ const size_t * /*count*/) const override
2508
+ {
2509
+ return RelationShip::PARTIAL_INTERSECTION;
2510
+ }
2511
+
2512
+ bool GetRawBlockInfo(const uint64_t * /*arrayStartIdx*/,
2513
+ const size_t * /*count*/,
2514
+ GDALMDArrayRawBlockInfo & /*info*/) const override
2515
+ {
2516
+ return false;
2517
+ }
2518
+
2519
+ bool Read(const GUInt64 *arrayStartIdx, const size_t *count,
2520
+ const GInt64 *arrayStep, const GPtrDiff_t *bufferStride,
2521
+ const GDALExtendedDataType &bufferDataType,
2522
+ void *pDstBuffer) const override;
2523
+
2524
+ void Serialize(CPLXMLNode *psParent, const char *pszVRTPath) const override;
2525
+ };
2526
+
2527
+ /************************************************************************/
2528
+ /* VRTMDArraySourceFromArray */
2529
+ /************************************************************************/
2530
+
2531
+ struct VRTArrayDatasetWrapper;
2532
+
2533
+ class VRTMDArraySourceFromArray final : public VRTMDArraySource
2534
+ {
2535
+ const VRTMDArray *m_poDstArray = nullptr;
2536
+ bool m_bRelativeToVRTSet = false;
2537
+ bool m_bRelativeToVRT = false;
2538
+ std::string m_osFilename{};
2539
+ std::string m_osArray{};
2540
+ std::string m_osBand{};
2541
+ std::vector<int> m_anTransposedAxis{};
2542
+ std::string m_osViewExpr{};
2543
+ std::vector<GUInt64> m_anSrcOffset{};
2544
+ mutable std::vector<GUInt64> m_anCount{};
2545
+ std::vector<GUInt64> m_anStep{};
2546
+ std::vector<GUInt64> m_anDstOffset{};
2547
+
2548
+ std::pair<std::shared_ptr<VRTArrayDatasetWrapper>,
2549
+ std::shared_ptr<GDALMDArray>>
2550
+ GetSourceArray() const;
2551
+
2552
+ VRTMDArraySourceFromArray(const VRTMDArraySourceFromArray &) = delete;
2553
+ VRTMDArraySourceFromArray &
2554
+ operator=(const VRTMDArraySourceFromArray &) = delete;
2555
+
2556
+ public:
2557
+ VRTMDArraySourceFromArray(
2558
+ const VRTMDArray *poDstArray, bool bRelativeToVRTSet,
2559
+ bool bRelativeToVRT, const std::string &osFilename,
2560
+ const std::string &osArray, const std::string &osBand,
2561
+ std::vector<int> &&anTransposedAxis, const std::string &osViewExpr,
2562
+ std::vector<GUInt64> &&anSrcOffset, std::vector<GUInt64> &&anCount,
2563
+ std::vector<GUInt64> &&anStep, std::vector<GUInt64> &&anDstOffset)
2564
+ : m_poDstArray(poDstArray), m_bRelativeToVRTSet(bRelativeToVRTSet),
2565
+ m_bRelativeToVRT(bRelativeToVRT), m_osFilename(osFilename),
2566
+ m_osArray(osArray), m_osBand(osBand),
2567
+ m_anTransposedAxis(std::move(anTransposedAxis)),
2568
+ m_osViewExpr(osViewExpr), m_anSrcOffset(std::move(anSrcOffset)),
2569
+ m_anCount(std::move(anCount)), m_anStep(std::move(anStep)),
2570
+ m_anDstOffset(std::move(anDstOffset))
2571
+ {
2572
+ }
2573
+
2574
+ ~VRTMDArraySourceFromArray() override;
2575
+
2576
+ static std::unique_ptr<VRTMDArraySourceFromArray>
2577
+ Create(const VRTMDArray *poDstArray, const CPLXMLNode *psNode);
2578
+
2579
+ RelationShip GetRelationship(const uint64_t *arrayStartIdx,
2580
+ const size_t *count) const override;
2581
+
2582
+ bool GetRawBlockInfo(const uint64_t *arrayStartIdx, const size_t *count,
2583
+ GDALMDArrayRawBlockInfo &info) const override;
2584
+
2585
+ bool Read(const GUInt64 *arrayStartIdx, const size_t *count,
2586
+ const GInt64 *arrayStep, const GPtrDiff_t *bufferStride,
2587
+ const GDALExtendedDataType &bufferDataType,
2588
+ void *pDstBuffer) const override;
2589
+
2590
+ void Serialize(CPLXMLNode *psParent, const char *pszVRTPath) const override;
2591
+ };
2592
+
2593
+ #endif /* #ifndef DOXYGEN_SKIP */
2594
+
2595
+ #endif /* ndef VIRTUALDATASET_H_INCLUDED */