@cpp.js/package-gdal 1.0.0-beta.21 → 1.0.0-beta.23

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 (225) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/cppjs-package-gdal.podspec +1 -1
  3. package/cppjs.build.js +1 -0
  4. package/dist/prebuilt/Android-x86_64/include/cpl_atomic_ops.h +90 -0
  5. package/dist/prebuilt/Android-x86_64/include/cpl_auto_close.h +73 -0
  6. package/dist/prebuilt/Android-x86_64/include/cpl_compressor.h +112 -0
  7. package/dist/prebuilt/Android-x86_64/include/cpl_config.h +215 -0
  8. package/dist/prebuilt/Android-x86_64/include/cpl_config_extras.h +34 -0
  9. package/dist/prebuilt/Android-x86_64/include/cpl_conv.h +417 -0
  10. package/dist/prebuilt/Android-x86_64/include/cpl_csv.h +71 -0
  11. package/dist/prebuilt/Android-x86_64/include/cpl_error.h +344 -0
  12. package/dist/prebuilt/Android-x86_64/include/cpl_hash_set.h +83 -0
  13. package/dist/prebuilt/Android-x86_64/include/cpl_http.h +319 -0
  14. package/dist/prebuilt/Android-x86_64/include/cpl_json.h +301 -0
  15. package/dist/prebuilt/Android-x86_64/include/cpl_list.h +59 -0
  16. package/dist/prebuilt/Android-x86_64/include/cpl_minixml.h +211 -0
  17. package/dist/prebuilt/Android-x86_64/include/cpl_multiproc.h +241 -0
  18. package/dist/prebuilt/Android-x86_64/include/cpl_port.h +1182 -0
  19. package/dist/prebuilt/Android-x86_64/include/cpl_progress.h +49 -0
  20. package/dist/prebuilt/Android-x86_64/include/cpl_quad_tree.h +105 -0
  21. package/dist/prebuilt/Android-x86_64/include/cpl_spawn.h +60 -0
  22. package/dist/prebuilt/Android-x86_64/include/cpl_string.h +863 -0
  23. package/dist/prebuilt/Android-x86_64/include/cpl_time.h +29 -0
  24. package/dist/prebuilt/Android-x86_64/include/cpl_virtualmem.h +365 -0
  25. package/dist/prebuilt/Android-x86_64/include/cpl_vsi.h +830 -0
  26. package/dist/prebuilt/Android-x86_64/include/cpl_vsi_error.h +55 -0
  27. package/dist/prebuilt/Android-x86_64/include/cpl_vsi_virtual.h +580 -0
  28. package/dist/prebuilt/Android-x86_64/include/cplkeywordparser.h +61 -0
  29. package/dist/prebuilt/Android-x86_64/include/gdal.h +2667 -0
  30. package/dist/prebuilt/Android-x86_64/include/gdal_alg.h +717 -0
  31. package/dist/prebuilt/Android-x86_64/include/gdal_alg_priv.h +386 -0
  32. package/dist/prebuilt/Android-x86_64/include/gdal_csv.h +25 -0
  33. package/dist/prebuilt/Android-x86_64/include/gdal_frmts.h +236 -0
  34. package/dist/prebuilt/Android-x86_64/include/gdal_mdreader.h +240 -0
  35. package/dist/prebuilt/Android-x86_64/include/gdal_pam.h +461 -0
  36. package/dist/prebuilt/Android-x86_64/include/gdal_priv.h +4599 -0
  37. package/dist/prebuilt/Android-x86_64/include/gdal_proxy.h +470 -0
  38. package/dist/prebuilt/Android-x86_64/include/gdal_rat.h +390 -0
  39. package/dist/prebuilt/Android-x86_64/include/gdal_simplesurf.h +579 -0
  40. package/dist/prebuilt/Android-x86_64/include/gdal_utils.h +313 -0
  41. package/dist/prebuilt/Android-x86_64/include/gdal_version.h +33 -0
  42. package/dist/prebuilt/Android-x86_64/include/gdal_vrt.h +89 -0
  43. package/dist/prebuilt/Android-x86_64/include/gdalcachedpixelaccessor.h +439 -0
  44. package/dist/prebuilt/Android-x86_64/include/gdalgeorefpamdataset.h +73 -0
  45. package/dist/prebuilt/Android-x86_64/include/gdalgrid.h +102 -0
  46. package/dist/prebuilt/Android-x86_64/include/gdalgrid_priv.h +67 -0
  47. package/dist/prebuilt/Android-x86_64/include/gdaljp2abstractdataset.h +61 -0
  48. package/dist/prebuilt/Android-x86_64/include/gdaljp2metadata.h +237 -0
  49. package/dist/prebuilt/Android-x86_64/include/gdalpansharpen.h +258 -0
  50. package/dist/prebuilt/Android-x86_64/include/gdalsubdatasetinfo.h +104 -0
  51. package/dist/prebuilt/Android-x86_64/include/gdalwarper.h +622 -0
  52. package/dist/prebuilt/Android-x86_64/include/gnm.h +750 -0
  53. package/dist/prebuilt/Android-x86_64/include/gnm_api.h +101 -0
  54. package/dist/prebuilt/Android-x86_64/include/gnmgraph.h +258 -0
  55. package/dist/prebuilt/Android-x86_64/include/memdataset.h +176 -0
  56. package/dist/prebuilt/Android-x86_64/include/ogr_api.h +1024 -0
  57. package/dist/prebuilt/Android-x86_64/include/ogr_core.h +1321 -0
  58. package/dist/prebuilt/Android-x86_64/include/ogr_feature.h +1981 -0
  59. package/dist/prebuilt/Android-x86_64/include/ogr_featurestyle.h +858 -0
  60. package/dist/prebuilt/Android-x86_64/include/ogr_geocoding.h +46 -0
  61. package/dist/prebuilt/Android-x86_64/include/ogr_geomcoordinateprecision.h +79 -0
  62. package/dist/prebuilt/Android-x86_64/include/ogr_geometry.h +4346 -0
  63. package/dist/prebuilt/Android-x86_64/include/ogr_p.h +324 -0
  64. package/dist/prebuilt/Android-x86_64/include/ogr_recordbatch.h +125 -0
  65. package/dist/prebuilt/Android-x86_64/include/ogr_spatialref.h +1007 -0
  66. package/dist/prebuilt/Android-x86_64/include/ogr_srs_api.h +1088 -0
  67. package/dist/prebuilt/Android-x86_64/include/ogr_swq.h +529 -0
  68. package/dist/prebuilt/Android-x86_64/include/ogrsf_frmts.h +746 -0
  69. package/dist/prebuilt/Android-x86_64/include/rawdataset.h +255 -0
  70. package/dist/prebuilt/Android-x86_64/include/vrtdataset.h +2426 -0
  71. package/dist/prebuilt/Android-x86_64/lib/cmake/gdal/GDAL-targets-release.cmake +19 -0
  72. package/dist/prebuilt/Android-x86_64/lib/cmake/gdal/GDAL-targets.cmake +106 -0
  73. package/dist/prebuilt/Android-x86_64/lib/cmake/gdal/GDALConfig.cmake +21 -0
  74. package/dist/prebuilt/Android-x86_64/lib/cmake/gdal/GDALConfigVersion.cmake +85 -0
  75. package/dist/prebuilt/Android-x86_64/lib/gdalplugins/drivers.ini +290 -0
  76. package/dist/prebuilt/Android-x86_64/lib/libgdal.so +0 -0
  77. package/dist/prebuilt/Android-x86_64/lib/pkgconfig/gdal.pc +17 -0
  78. package/dist/prebuilt/Android-x86_64/share/gdal/GDALLogoBW.svg +138 -0
  79. package/dist/prebuilt/Android-x86_64/share/gdal/GDALLogoColor.svg +126 -0
  80. package/dist/prebuilt/Android-x86_64/share/gdal/GDALLogoGS.svg +126 -0
  81. package/dist/prebuilt/Android-x86_64/share/gdal/LICENSE.TXT +467 -0
  82. package/dist/prebuilt/Android-x86_64/share/gdal/MM_m_idofic.csv +321 -0
  83. package/dist/prebuilt/Android-x86_64/share/gdal/cubewerx_extra.wkt +48 -0
  84. package/dist/prebuilt/Android-x86_64/share/gdal/default.rsc +0 -0
  85. package/dist/prebuilt/Android-x86_64/share/gdal/ecw_cs.wkt +1453 -0
  86. package/dist/prebuilt/Android-x86_64/share/gdal/epsg.wkt +1 -0
  87. package/dist/prebuilt/Android-x86_64/share/gdal/esri_StatePlane_extra.wkt +631 -0
  88. package/dist/prebuilt/Android-x86_64/share/gdal/gdalicon.png +0 -0
  89. package/dist/prebuilt/Android-x86_64/share/gdal/gdalinfo_output.schema.json +346 -0
  90. package/dist/prebuilt/Android-x86_64/share/gdal/gdalmdiminfo_output.schema.json +321 -0
  91. package/dist/prebuilt/Android-x86_64/share/gdal/gdaltileindex.xsd +253 -0
  92. package/dist/prebuilt/Android-x86_64/share/gdal/gdalvrt.xsd +881 -0
  93. package/dist/prebuilt/Android-x86_64/share/gdal/gfs.xsd +246 -0
  94. package/dist/prebuilt/Android-x86_64/share/gdal/gml_registry.xml +117 -0
  95. package/dist/prebuilt/Android-x86_64/share/gdal/gml_registry.xsd +66 -0
  96. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_center.csv +251 -0
  97. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_process.csv +102 -0
  98. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_subcenter.csv +63 -0
  99. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_0.csv +261 -0
  100. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_1.csv +261 -0
  101. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_13.csv +261 -0
  102. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_14.csv +261 -0
  103. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_15.csv +261 -0
  104. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_16.csv +261 -0
  105. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_17.csv +11 -0
  106. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_18.csv +261 -0
  107. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_19.csv +261 -0
  108. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_190.csv +261 -0
  109. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_191.csv +261 -0
  110. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_2.csv +261 -0
  111. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_20.csv +261 -0
  112. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_21.csv +261 -0
  113. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_3.csv +261 -0
  114. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_4.csv +261 -0
  115. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_5.csv +261 -0
  116. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_6.csv +261 -0
  117. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_7.csv +261 -0
  118. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_10_0.csv +261 -0
  119. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_10_1.csv +261 -0
  120. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_10_191.csv +261 -0
  121. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_10_2.csv +261 -0
  122. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_10_3.csv +261 -0
  123. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_10_4.csv +261 -0
  124. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_1_0.csv +261 -0
  125. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_1_1.csv +261 -0
  126. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_1_2.csv +261 -0
  127. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_20_0.csv +261 -0
  128. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_20_1.csv +261 -0
  129. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_20_2.csv +261 -0
  130. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_2_0.csv +261 -0
  131. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_2_3.csv +261 -0
  132. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_2_4.csv +261 -0
  133. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_2_5.csv +261 -0
  134. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_2_6.csv +261 -0
  135. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_3_0.csv +261 -0
  136. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_3_1.csv +261 -0
  137. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_3_2.csv +28 -0
  138. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_3_3.csv +8 -0
  139. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_3_4.csv +14 -0
  140. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_3_5.csv +11 -0
  141. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_3_6.csv +11 -0
  142. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_4_0.csv +261 -0
  143. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_4_1.csv +261 -0
  144. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_4_10.csv +261 -0
  145. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_4_2.csv +261 -0
  146. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_4_3.csv +261 -0
  147. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_4_4.csv +261 -0
  148. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_4_5.csv +261 -0
  149. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_4_6.csv +261 -0
  150. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_4_7.csv +261 -0
  151. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_4_8.csv +261 -0
  152. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_4_9.csv +261 -0
  153. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_local_Canada.csv +5 -0
  154. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_local_HPC.csv +2 -0
  155. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_local_MRMS.csv +175 -0
  156. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_local_NCEP.csv +401 -0
  157. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_local_NDFD.csv +38 -0
  158. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_local_index.csv +7 -0
  159. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_5.csv +261 -0
  160. package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_versions.csv +3 -0
  161. package/dist/prebuilt/Android-x86_64/share/gdal/gt_datum.csv +229 -0
  162. package/dist/prebuilt/Android-x86_64/share/gdal/gt_ellips.csv +24 -0
  163. package/dist/prebuilt/Android-x86_64/share/gdal/header.dxf +1124 -0
  164. package/dist/prebuilt/Android-x86_64/share/gdal/inspire_cp_BasicPropertyUnit.gfs +57 -0
  165. package/dist/prebuilt/Android-x86_64/share/gdal/inspire_cp_CadastralBoundary.gfs +60 -0
  166. package/dist/prebuilt/Android-x86_64/share/gdal/inspire_cp_CadastralParcel.gfs +81 -0
  167. package/dist/prebuilt/Android-x86_64/share/gdal/inspire_cp_CadastralZoning.gfs +161 -0
  168. package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_AdmArea.gfs +59 -0
  169. package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_AdmBdry.gfs +49 -0
  170. package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_AdmPt.gfs +59 -0
  171. package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_BldA.gfs +54 -0
  172. package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_BldL.gfs +54 -0
  173. package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_Cntr.gfs +54 -0
  174. package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_CommBdry.gfs +49 -0
  175. package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_CommPt.gfs +59 -0
  176. package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_Cstline.gfs +54 -0
  177. package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_ElevPt.gfs +54 -0
  178. package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_GCP.gfs +94 -0
  179. package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_LeveeEdge.gfs +49 -0
  180. package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_RailCL.gfs +54 -0
  181. package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_RdASL.gfs +44 -0
  182. package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_RdArea.gfs +54 -0
  183. package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_RdCompt.gfs +59 -0
  184. package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_RdEdg.gfs +59 -0
  185. package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_RdMgtBdry.gfs +49 -0
  186. package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_RdSgmtA.gfs +59 -0
  187. package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_RvrMgtBdry.gfs +49 -0
  188. package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_SBAPt.gfs +49 -0
  189. package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_SBArea.gfs +54 -0
  190. package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_SBBdry.gfs +44 -0
  191. package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_WA.gfs +54 -0
  192. package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_WL.gfs +54 -0
  193. package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_WStrA.gfs +54 -0
  194. package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_WStrL.gfs +54 -0
  195. package/dist/prebuilt/Android-x86_64/share/gdal/nitf_spec.xml +3290 -0
  196. package/dist/prebuilt/Android-x86_64/share/gdal/nitf_spec.xsd +173 -0
  197. package/dist/prebuilt/Android-x86_64/share/gdal/ogrinfo_output.schema.json +528 -0
  198. package/dist/prebuilt/Android-x86_64/share/gdal/ogrvrt.xsd +530 -0
  199. package/dist/prebuilt/Android-x86_64/share/gdal/osmconf.ini +134 -0
  200. package/dist/prebuilt/Android-x86_64/share/gdal/ozi_datum.csv +131 -0
  201. package/dist/prebuilt/Android-x86_64/share/gdal/ozi_ellips.csv +35 -0
  202. package/dist/prebuilt/Android-x86_64/share/gdal/pci_datum.txt +530 -0
  203. package/dist/prebuilt/Android-x86_64/share/gdal/pci_ellips.txt +129 -0
  204. package/dist/prebuilt/Android-x86_64/share/gdal/pdfcomposition.xsd +705 -0
  205. package/dist/prebuilt/Android-x86_64/share/gdal/ruian_vf_ob_v1.gfs +1455 -0
  206. package/dist/prebuilt/Android-x86_64/share/gdal/ruian_vf_st_uvoh_v1.gfs +86 -0
  207. package/dist/prebuilt/Android-x86_64/share/gdal/ruian_vf_st_v1.gfs +1489 -0
  208. package/dist/prebuilt/Android-x86_64/share/gdal/ruian_vf_v1.gfs +2126 -0
  209. package/dist/prebuilt/Android-x86_64/share/gdal/s57agencies.csv +249 -0
  210. package/dist/prebuilt/Android-x86_64/share/gdal/s57attributes.csv +484 -0
  211. package/dist/prebuilt/Android-x86_64/share/gdal/s57expectedinput.csv +1008 -0
  212. package/dist/prebuilt/Android-x86_64/share/gdal/s57objectclasses.csv +287 -0
  213. package/dist/prebuilt/Android-x86_64/share/gdal/seed_2d.dgn +0 -0
  214. package/dist/prebuilt/Android-x86_64/share/gdal/seed_3d.dgn +0 -0
  215. package/dist/prebuilt/Android-x86_64/share/gdal/stateplane.csv +259 -0
  216. package/dist/prebuilt/Android-x86_64/share/gdal/tms_LINZAntarticaMapTileGrid.json +190 -0
  217. package/dist/prebuilt/Android-x86_64/share/gdal/tms_MapML_APSTILE.json +268 -0
  218. package/dist/prebuilt/Android-x86_64/share/gdal/tms_MapML_CBMTILE.json +346 -0
  219. package/dist/prebuilt/Android-x86_64/share/gdal/tms_NZTM2000.json +243 -0
  220. package/dist/prebuilt/Android-x86_64/share/gdal/trailer.dxf +434 -0
  221. package/dist/prebuilt/Android-x86_64/share/gdal/vdv452.xml +351 -0
  222. package/dist/prebuilt/Android-x86_64/share/gdal/vdv452.xsd +47 -0
  223. package/gdal.xcframework/ios-arm64_arm64e/libgdal.a +0 -0
  224. package/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/libgdal.a +0 -0
  225. package/package.json +12 -12
@@ -0,0 +1,240 @@
1
+ /******************************************************************************
2
+ * $Id$
3
+ *
4
+ * Project: GDAL Core
5
+ * Purpose: Read metadata (mainly the remote sensing imagery) from files of
6
+ * different providers like DigitalGlobe, GeoEye etc.
7
+ * Author: Dmitry Baryshnikov, polimax@mail.ru
8
+ *
9
+ ******************************************************************************
10
+ * Copyright (c) 2014-2015, NextGIS info@nextgis.ru
11
+ *
12
+ * SPDX-License-Identifier: MIT
13
+ ****************************************************************************/
14
+
15
+ #ifndef GDAL_MDREADER_H_INCLUDED
16
+ #define GDAL_MDREADER_H_INCLUDED
17
+
18
+ #include "cpl_port.h"
19
+ #include "gdal_priv.h"
20
+
21
+ #include <map>
22
+
23
+ #define MD_DOMAIN_IMD "IMD" /**< image metadata section */
24
+ #define MD_DOMAIN_RPC "RPC" /**< rpc metadata section */
25
+ #define MD_DOMAIN_IMAGERY "IMAGERY" /**< imagery metadata section */
26
+ #define MD_DOMAIN_DEFAULT "" /**< default metadata section */
27
+
28
+ #define MD_NAME_ACQDATETIME \
29
+ "ACQUISITIONDATETIME" /**< Acquisition Date Time property name. The time \
30
+ should be in UTC */
31
+ #define MD_NAME_SATELLITE \
32
+ "SATELLITEID" /**< Satellite identificator property name */
33
+ #define MD_NAME_CLOUDCOVER \
34
+ "CLOUDCOVER" /**< Cloud coverage property name. The value between 0 - 100 \
35
+ or 999 if n/a */
36
+ #define MD_NAME_MDTYPE \
37
+ "METADATATYPE" /**< Metadata reader type property name. The reader \
38
+ processed this metadata */
39
+
40
+ #define MD_DATETIMEFORMAT "%Y-%m-%d %H:%M:%S" /**< Date time format */
41
+ #define MD_CLOUDCOVER_NA "999" /**< The value if cloud cover is n/a */
42
+
43
+ /**
44
+ * RPC/RPB specific defines
45
+ */
46
+
47
+ #define RPC_ERR_BIAS "ERR_BIAS"
48
+ #define RPC_ERR_RAND "ERR_RAND"
49
+ #define RPC_LINE_OFF "LINE_OFF"
50
+ #define RPC_SAMP_OFF "SAMP_OFF"
51
+ #define RPC_LAT_OFF "LAT_OFF"
52
+ #define RPC_LONG_OFF "LONG_OFF"
53
+ #define RPC_HEIGHT_OFF "HEIGHT_OFF"
54
+ #define RPC_LINE_SCALE "LINE_SCALE"
55
+ #define RPC_SAMP_SCALE "SAMP_SCALE"
56
+ #define RPC_LAT_SCALE "LAT_SCALE"
57
+ #define RPC_LONG_SCALE "LONG_SCALE"
58
+ #define RPC_HEIGHT_SCALE "HEIGHT_SCALE"
59
+ #define RPC_LINE_NUM_COEFF "LINE_NUM_COEFF"
60
+ #define RPC_LINE_DEN_COEFF "LINE_DEN_COEFF"
61
+ #define RPC_SAMP_NUM_COEFF "SAMP_NUM_COEFF"
62
+ #define RPC_SAMP_DEN_COEFF "SAMP_DEN_COEFF"
63
+
64
+ /* Optional */
65
+ #define RPC_MIN_LONG "MIN_LONG"
66
+ #define RPC_MIN_LAT "MIN_LAT"
67
+ #define RPC_MAX_LONG "MAX_LONG"
68
+ #define RPC_MAX_LAT "MAX_LAT"
69
+
70
+ /* Pleiades Neo nomenclature */
71
+ #define RPC_LAT_NUM_COEFF "LAT_NUM_COEFF"
72
+ #define RPC_LAT_DEN_COEFF "LAT_DEN_COEFF"
73
+ #define RPC_LON_NUM_COEFF "LON_NUM_COEFF"
74
+ #define RPC_LON_DEN_COEFF "LON_DEN_COEFF"
75
+
76
+ /**
77
+ * Enumerator of metadata readers
78
+ */
79
+
80
+ typedef enum
81
+ {
82
+ MDR_None = 0x00000000, /**< no reader */
83
+ MDR_DG = 0x00000001, /**< Digital Globe, METADATATYPE=DG */
84
+ MDR_GE = 0x00000002, /**< Geo Eye, METADATATYPE=GE */
85
+ MDR_OV = 0x00000004, /**< Orb View, METADATATYPE=OV */
86
+ MDR_PLEIADES = 0x00000008, /**< Pleiades, METADATATYPE=DIMAP */
87
+ MDR_SPOT = 0x00000010, /**< Spot, METADATATYPE=DIMAP */
88
+ MDR_RDK1 = 0x00000020, /**< Resurs DK1, METADATATYPE=MSP */
89
+ MDR_LS = 0x00000040, /**< Landsat, METADATATYPE=ODL */
90
+ MDR_RE = 0x00000080, /**< RapidEye, METADATATYPE=RE */
91
+ MDR_KOMPSAT = 0x00000100, /**< Kompsat, METADATATYPE=KARI */
92
+ MDR_EROS = 0x00000200, /**< EROS, METADATATYPE=EROS */
93
+ MDR_ALOS = 0x00000400, /**< ALOS, METADATATYPE=ALOS */
94
+ MDR_ANY = MDR_DG | MDR_GE | MDR_OV | MDR_PLEIADES | MDR_SPOT | MDR_RDK1 |
95
+ MDR_LS | MDR_RE | MDR_KOMPSAT | MDR_EROS |
96
+ MDR_ALOS /**< any reader */
97
+ } MDReaders;
98
+
99
+ /**
100
+ * The base class for all metadata readers
101
+ */
102
+ class CPL_DLL GDALMDReaderBase
103
+ {
104
+
105
+ CPL_DISALLOW_COPY_ASSIGN(GDALMDReaderBase)
106
+
107
+ static bool
108
+ ReadXMLToListFirstPass(const CPLXMLNode *psNode,
109
+ std::map<std::string, int> &oMapCountKeysFull,
110
+ const std::string &osPrefixFull, int nDepth);
111
+
112
+ char **ReadXMLToList(const CPLXMLNode *psNode, char **papszList,
113
+ const std::map<std::string, int> &oMapCountKeysFullRef,
114
+ std::map<std::string, int> &oMapCountKeysFull,
115
+ std::map<std::string, int> &oMapCountKeys,
116
+ const std::string &osPrefix,
117
+ const std::string &osPrefixFull);
118
+
119
+ public:
120
+ GDALMDReaderBase(const char *pszPath, char **papszSiblingFiles);
121
+ virtual ~GDALMDReaderBase();
122
+
123
+ /**
124
+ * @brief Get specified metadata domain
125
+ * @param pszDomain The metadata domain to return
126
+ * @return List of metadata items
127
+ */
128
+ virtual char **GetMetadataDomain(const char *pszDomain);
129
+ /**
130
+ * @brief Fill provided metadata store class
131
+ * @param poMDMD Metadata store class
132
+ * @return true on success or false
133
+ */
134
+ virtual bool FillMetadata(GDALMultiDomainMetadata *poMDMD);
135
+ /**
136
+ * @brief Determine whether the input parameter correspond to the particular
137
+ * provider of remote sensing data completely
138
+ * @return True if all needed sources files found
139
+ */
140
+ virtual bool HasRequiredFiles() const = 0;
141
+ /**
142
+ * @brief Get metadata file names. The caller become owner of returned list
143
+ * and have to free it via CSLDestroy.
144
+ * @return A file name list
145
+ */
146
+ virtual char **GetMetadataFiles() const = 0;
147
+
148
+ protected:
149
+ /**
150
+ * @brief Load metadata to the correspondent IMD, RPB, IMAGERY and DEFAULT
151
+ * domains
152
+ */
153
+ virtual void LoadMetadata();
154
+ /**
155
+ * @brief Convert string like 2012-02-25T00:25:59.9440000Z to time
156
+ * @param pszDateTime String to convert
157
+ * @return value in second sinc epoch 1970-01-01 00:00:00
158
+ */
159
+ virtual GIntBig GetAcquisitionTimeFromString(const char *pszDateTime);
160
+ /**
161
+ * @brief ReadXMLToList Transform xml to list of NULL terminated name=value
162
+ * strings
163
+ * @param psNode A xml node to process
164
+ * @param papszList A list to fill with name=value strings
165
+ * @param pszName A name of parent node. For root xml node should be empty.
166
+ * If name is not empty, the sibling nodes will not proceed
167
+ * @return An input list filled with values
168
+ */
169
+ virtual char **ReadXMLToList(CPLXMLNode *psNode, char **papszList,
170
+ const char *pszName = "");
171
+ /**
172
+ * @brief AddXMLNameValueToList Execute from ReadXMLToList to add name and
173
+ * value to list. One can override this function for special
174
+ * processing input values before add to list.
175
+ * @param papszList A list to fill with name=value strings
176
+ * @param pszName A name to add
177
+ * @param pszValue A value to add
178
+ * @return An input list filled with values
179
+ */
180
+ virtual char **AddXMLNameValueToList(char **papszList, const char *pszName,
181
+ const char *pszValue);
182
+
183
+ protected:
184
+ //! @cond Doxygen_Suppress
185
+ char **m_papszIMDMD = nullptr;
186
+ char **m_papszRPCMD = nullptr;
187
+ char **m_papszIMAGERYMD = nullptr;
188
+ char **m_papszDEFAULTMD = nullptr;
189
+ bool m_bIsMetadataLoad = false;
190
+ //! @endcond
191
+ };
192
+
193
+ /**
194
+ * The metadata reader main class.
195
+ * The main purpose of this class is to provide an correspondent reader
196
+ * for provided path.
197
+ */
198
+ class CPL_DLL GDALMDReaderManager
199
+ {
200
+
201
+ CPL_DISALLOW_COPY_ASSIGN(GDALMDReaderManager)
202
+
203
+ public:
204
+ GDALMDReaderManager();
205
+ virtual ~GDALMDReaderManager();
206
+
207
+ /**
208
+ * @brief Try to detect metadata reader correspondent to the provided
209
+ * datasource path
210
+ * @param pszPath a path to GDALDataset
211
+ * @param papszSiblingFiles file list for metadata search purposes
212
+ * @param nType a preferable reader type (may be the OR of MDReaders)
213
+ * @return an appropriate reader or NULL if no such reader or error.
214
+ * The pointer delete by the GDALMDReaderManager, so the user have not
215
+ * delete it.
216
+ */
217
+ virtual GDALMDReaderBase *GetReader(const char *pszPath,
218
+ char **papszSiblingFiles,
219
+ GUInt32 nType = MDR_ANY);
220
+
221
+ protected:
222
+ //! @cond Doxygen_Suppress
223
+ GDALMDReaderBase *m_pReader = nullptr;
224
+ //! @endcond
225
+ };
226
+
227
+ // misc
228
+ CPLString CPLStrip(const CPLString &osString, const char cChar);
229
+ CPLString CPLStripQuotes(const CPLString &osString);
230
+ char **GDALLoadRPBFile(const CPLString &osFilePath);
231
+ char CPL_DLL **GDALLoadRPCFile(const CPLString &osFilePath);
232
+ char **GDALLoadIMDFile(const CPLString &osFilePath);
233
+ bool GDALCheckFileHeader(const CPLString &soFilePath, const char *pszTestString,
234
+ int nBufferSize = 256);
235
+
236
+ CPLErr GDALWriteRPBFile(const char *pszFilename, char **papszMD);
237
+ CPLErr CPL_DLL GDALWriteRPCTXTFile(const char *pszFilename, char **papszMD);
238
+ CPLErr GDALWriteIMDFile(const char *pszFilename, char **papszMD);
239
+
240
+ #endif // GDAL_MDREADER_H_INCLUDED
@@ -0,0 +1,461 @@
1
+ /******************************************************************************
2
+ * $Id$
3
+ *
4
+ * Project: GDAL Core
5
+ * Purpose: Declaration for Peristable Auxiliary Metadata classes.
6
+ * Author: Frank Warmerdam, warmerdam@pobox.com
7
+ *
8
+ ******************************************************************************
9
+ * Copyright (c) 2005, Frank Warmerdam <warmerdam@pobox.com>
10
+ *
11
+ * SPDX-License-Identifier: MIT
12
+ ****************************************************************************/
13
+
14
+ #ifndef GDAL_PAM_H_INCLUDED
15
+ #define GDAL_PAM_H_INCLUDED
16
+
17
+ //! @cond Doxygen_Suppress
18
+
19
+ #include "cpl_minixml.h"
20
+ #include "gdal_priv.h"
21
+ #include <array>
22
+ #include <limits>
23
+ #include <map>
24
+ #include <vector>
25
+
26
+ class GDALPamRasterBand;
27
+
28
+ /* Clone Info Flags */
29
+
30
+ #define GCIF_GEOTRANSFORM 0x01
31
+ #define GCIF_PROJECTION 0x02
32
+ #define GCIF_METADATA 0x04
33
+ #define GCIF_GCPS 0x08
34
+
35
+ #define GCIF_NODATA 0x001000
36
+ #define GCIF_CATEGORYNAMES 0x002000
37
+ #define GCIF_MINMAX 0x004000
38
+ #define GCIF_SCALEOFFSET 0x008000
39
+ #define GCIF_UNITTYPE 0x010000
40
+ #define GCIF_COLORTABLE 0x020000
41
+ /* Same value as GCIF_COLORTABLE */
42
+ #define GCIF_COLORINTERP 0x020000
43
+ #define GCIF_BAND_METADATA 0x040000
44
+ #define GCIF_RAT 0x080000
45
+ #define GCIF_MASK 0x100000
46
+ #define GCIF_BAND_DESCRIPTION 0x200000
47
+
48
+ #define GCIF_ONLY_IF_MISSING 0x10000000
49
+ #define GCIF_PROCESS_BANDS 0x20000000
50
+
51
+ #define GCIF_PAM_DEFAULT \
52
+ (GCIF_GEOTRANSFORM | GCIF_PROJECTION | GCIF_METADATA | GCIF_GCPS | \
53
+ GCIF_NODATA | GCIF_CATEGORYNAMES | GCIF_MINMAX | GCIF_SCALEOFFSET | \
54
+ GCIF_UNITTYPE | GCIF_COLORTABLE | GCIF_BAND_METADATA | GCIF_RAT | \
55
+ GCIF_MASK | GCIF_ONLY_IF_MISSING | GCIF_PROCESS_BANDS | \
56
+ GCIF_BAND_DESCRIPTION)
57
+
58
+ /* GDAL PAM Flags */
59
+ /* ERO 2011/04/13 : GPF_AUXMODE seems to be unimplemented */
60
+ #define GPF_DIRTY 0x01 // .pam file needs to be written on close
61
+ #define GPF_TRIED_READ_FAILED 0x02 // no need to keep trying to read .pam.
62
+ #define GPF_DISABLED 0x04 // do not try any PAM stuff.
63
+ #define GPF_AUXMODE 0x08 // store info in .aux (HFA) file.
64
+ #define GPF_NOSAVE 0x10 // do not try to save pam info.
65
+
66
+ /* ==================================================================== */
67
+ /* GDALDatasetPamInfo */
68
+ /* */
69
+ /* We make these things a separate structure of information */
70
+ /* primarily so we can modify it without altering the size of */
71
+ /* the GDALPamDataset. It is an effort to reduce ABI churn for */
72
+ /* driver plugins. */
73
+ /* ==================================================================== */
74
+ class GDALDatasetPamInfo
75
+ {
76
+ public:
77
+ char *pszPamFilename = nullptr;
78
+
79
+ std::vector<CPLXMLTreeCloser> m_apoOtherNodes{};
80
+
81
+ OGRSpatialReference *poSRS = nullptr;
82
+
83
+ int bHaveGeoTransform = false;
84
+ std::array<double, 6> adfGeoTransform{};
85
+
86
+ std::vector<gdal::GCP> asGCPs{};
87
+ OGRSpatialReference *poGCP_SRS = nullptr;
88
+
89
+ CPLString osPhysicalFilename{};
90
+ CPLString osSubdatasetName{};
91
+ CPLString osDerivedDatasetName{};
92
+ CPLString osAuxFilename{};
93
+
94
+ int bHasMetadata = false;
95
+ };
96
+
97
+ //! @endcond
98
+
99
+ /* ******************************************************************** */
100
+ /* GDALPamDataset */
101
+ /* ******************************************************************** */
102
+
103
+ /** PAM dataset */
104
+ class CPL_DLL GDALPamDataset : public GDALDataset
105
+ {
106
+ friend class GDALPamRasterBand;
107
+
108
+ private:
109
+ int IsPamFilenameAPotentialSiblingFile();
110
+
111
+ protected:
112
+ GDALPamDataset(void);
113
+ //! @cond Doxygen_Suppress
114
+ int nPamFlags = 0;
115
+ GDALDatasetPamInfo *psPam = nullptr;
116
+
117
+ virtual CPLXMLNode *SerializeToXML(const char *);
118
+ virtual CPLErr XMLInit(const CPLXMLNode *, const char *);
119
+
120
+ virtual CPLErr TryLoadXML(CSLConstList papszSiblingFiles = nullptr);
121
+ virtual CPLErr TrySaveXML();
122
+
123
+ CPLErr TryLoadAux(CSLConstList papszSiblingFiles = nullptr);
124
+ CPLErr TrySaveAux();
125
+
126
+ virtual const char *BuildPamFilename();
127
+
128
+ void PamInitialize();
129
+ void PamClear();
130
+
131
+ void SetPhysicalFilename(const char *);
132
+ const char *GetPhysicalFilename();
133
+ void SetSubdatasetName(const char *);
134
+ const char *GetSubdatasetName();
135
+ void SetDerivedDatasetName(const char *);
136
+ //! @endcond
137
+
138
+ public:
139
+ ~GDALPamDataset() override;
140
+
141
+ CPLErr FlushCache(bool bAtClosing) override;
142
+
143
+ const OGRSpatialReference *GetSpatialRef() const override;
144
+ CPLErr SetSpatialRef(const OGRSpatialReference *poSRS) override;
145
+
146
+ CPLErr GetGeoTransform(double *) override;
147
+ CPLErr SetGeoTransform(double *) override;
148
+ void DeleteGeoTransform();
149
+
150
+ int GetGCPCount() override;
151
+ const OGRSpatialReference *GetGCPSpatialRef() const override;
152
+ const GDAL_GCP *GetGCPs() override;
153
+ using GDALDataset::SetGCPs;
154
+ CPLErr SetGCPs(int nGCPCount, const GDAL_GCP *pasGCPList,
155
+ const OGRSpatialReference *poSRS) override;
156
+
157
+ CPLErr SetMetadata(char **papszMetadata,
158
+ const char *pszDomain = "") override;
159
+ CPLErr SetMetadataItem(const char *pszName, const char *pszValue,
160
+ const char *pszDomain = "") override;
161
+ char **GetMetadata(const char *pszDomain = "") override;
162
+ const char *GetMetadataItem(const char *pszName,
163
+ const char *pszDomain = "") override;
164
+
165
+ char **GetFileList(void) override;
166
+
167
+ void ClearStatistics() override;
168
+
169
+ //! @cond Doxygen_Suppress
170
+ virtual CPLErr CloneInfo(GDALDataset *poSrcDS, int nCloneInfoFlags);
171
+
172
+ CPLErr IBuildOverviews(const char *pszResampling, int nOverviews,
173
+ const int *panOverviewList, int nListBands,
174
+ const int *panBandList, GDALProgressFunc pfnProgress,
175
+ void *pProgressData,
176
+ CSLConstList papszOptions) override;
177
+
178
+ // "semi private" methods.
179
+ void MarkPamDirty();
180
+
181
+ GDALDatasetPamInfo *GetPamInfo()
182
+ {
183
+ return psPam;
184
+ }
185
+
186
+ int GetPamFlags()
187
+ {
188
+ return nPamFlags;
189
+ }
190
+
191
+ void SetPamFlags(int nValue)
192
+ {
193
+ nPamFlags = nValue;
194
+ }
195
+
196
+ //! @endcond
197
+
198
+ private:
199
+ CPL_DISALLOW_COPY_ASSIGN(GDALPamDataset)
200
+ };
201
+
202
+ //! @cond Doxygen_Suppress
203
+
204
+ constexpr double GDAL_PAM_DEFAULT_NODATA_VALUE = 0;
205
+ // Parenthesis for external code around std::numeric_limits<>::min/max,
206
+ // for external Windows code that might have includes <windows.h> before
207
+ // without defining NOMINMAX
208
+ constexpr int64_t GDAL_PAM_DEFAULT_NODATA_VALUE_INT64 =
209
+ (std::numeric_limits<int64_t>::min)();
210
+ constexpr uint64_t GDAL_PAM_DEFAULT_NODATA_VALUE_UINT64 =
211
+ (std::numeric_limits<uint64_t>::max)();
212
+
213
+ /* ==================================================================== */
214
+ /* GDALRasterBandPamInfo */
215
+ /* */
216
+ /* We make these things a separate structure of information */
217
+ /* primarily so we can modify it without altering the size of */
218
+ /* the GDALPamDataset. It is an effort to reduce ABI churn for */
219
+ /* driver plugins. */
220
+ /* ==================================================================== */
221
+ struct GDALRasterBandPamInfo
222
+ {
223
+ GDALPamDataset *poParentDS = nullptr;
224
+
225
+ bool bNoDataValueSet = false;
226
+ bool bNoDataValueSetAsInt64 = false;
227
+ bool bNoDataValueSetAsUInt64 = false;
228
+
229
+ double dfNoDataValue = GDAL_PAM_DEFAULT_NODATA_VALUE;
230
+ int64_t nNoDataValueInt64 = GDAL_PAM_DEFAULT_NODATA_VALUE_INT64;
231
+ uint64_t nNoDataValueUInt64 = GDAL_PAM_DEFAULT_NODATA_VALUE_UINT64;
232
+
233
+ GDALColorTable *poColorTable = nullptr;
234
+
235
+ GDALColorInterp eColorInterp = GCI_Undefined;
236
+
237
+ char *pszUnitType = nullptr;
238
+ char **papszCategoryNames = nullptr;
239
+
240
+ double dfOffset = 0.0;
241
+ double dfScale = 1.0;
242
+
243
+ int bHaveMinMax = FALSE;
244
+ double dfMin = 0;
245
+ double dfMax = 0;
246
+
247
+ int bHaveStats = FALSE;
248
+ double dfMean = 0;
249
+ double dfStdDev = 0;
250
+
251
+ CPLXMLNode *psSavedHistograms = nullptr;
252
+
253
+ GDALRasterAttributeTable *poDefaultRAT = nullptr;
254
+
255
+ bool bOffsetSet = false;
256
+ bool bScaleSet = false;
257
+
258
+ void CopyFrom(const GDALRasterBandPamInfo &sOther);
259
+ };
260
+
261
+ //! @endcond
262
+ /* ******************************************************************** */
263
+ /* GDALPamRasterBand */
264
+ /* ******************************************************************** */
265
+
266
+ /** PAM raster band */
267
+ class CPL_DLL GDALPamRasterBand : public GDALRasterBand
268
+ {
269
+ friend class GDALPamDataset;
270
+
271
+ protected:
272
+ //! @cond Doxygen_Suppress
273
+ virtual CPLXMLNode *SerializeToXML(const char *pszVRTPath);
274
+ virtual CPLErr XMLInit(const CPLXMLNode *, const char *);
275
+
276
+ void PamInitialize();
277
+ void PamClear();
278
+ void PamInitializeNoParent();
279
+ void MarkPamDirty();
280
+
281
+ GDALRasterBandPamInfo *psPam = nullptr;
282
+ //! @endcond
283
+
284
+ public:
285
+ GDALPamRasterBand();
286
+ //! @cond Doxygen_Suppress
287
+ explicit GDALPamRasterBand(int bForceCachedIO);
288
+ //! @endcond
289
+ ~GDALPamRasterBand() override;
290
+
291
+ void SetDescription(const char *) override;
292
+
293
+ CPLErr SetNoDataValue(double) override;
294
+ CPLErr SetNoDataValueAsInt64(int64_t nNoData) override;
295
+ CPLErr SetNoDataValueAsUInt64(uint64_t nNoData) override;
296
+ double GetNoDataValue(int *pbSuccess = nullptr) override;
297
+ int64_t GetNoDataValueAsInt64(int *pbSuccess = nullptr) override;
298
+ uint64_t GetNoDataValueAsUInt64(int *pbSuccess = nullptr) override;
299
+ CPLErr DeleteNoDataValue() override;
300
+
301
+ CPLErr SetColorTable(GDALColorTable *) override;
302
+ GDALColorTable *GetColorTable() override;
303
+
304
+ CPLErr SetColorInterpretation(GDALColorInterp) override;
305
+ GDALColorInterp GetColorInterpretation() override;
306
+
307
+ const char *GetUnitType() override;
308
+ CPLErr SetUnitType(const char *) override;
309
+
310
+ char **GetCategoryNames() override;
311
+ CPLErr SetCategoryNames(char **) override;
312
+
313
+ double GetOffset(int *pbSuccess = nullptr) override;
314
+ CPLErr SetOffset(double) override;
315
+ double GetScale(int *pbSuccess = nullptr) override;
316
+ CPLErr SetScale(double) override;
317
+
318
+ CPLErr GetHistogram(double dfMin, double dfMax, int nBuckets,
319
+ GUIntBig *panHistogram, int bIncludeOutOfRange,
320
+ int bApproxOK, GDALProgressFunc,
321
+ void *pProgressData) override;
322
+
323
+ CPLErr GetDefaultHistogram(double *pdfMin, double *pdfMax, int *pnBuckets,
324
+ GUIntBig **ppanHistogram, int bForce,
325
+ GDALProgressFunc, void *pProgressData) override;
326
+
327
+ CPLErr SetDefaultHistogram(double dfMin, double dfMax, int nBuckets,
328
+ GUIntBig *panHistogram) override;
329
+
330
+ CPLErr SetMetadata(char **papszMetadata,
331
+ const char *pszDomain = "") override;
332
+ CPLErr SetMetadataItem(const char *pszName, const char *pszValue,
333
+ const char *pszDomain = "") override;
334
+
335
+ GDALRasterAttributeTable *GetDefaultRAT() override;
336
+ CPLErr SetDefaultRAT(const GDALRasterAttributeTable *) override;
337
+
338
+ //! @cond Doxygen_Suppress
339
+ // new in GDALPamRasterBand.
340
+ virtual CPLErr CloneInfo(GDALRasterBand *poSrcBand, int nCloneInfoFlags);
341
+
342
+ // "semi private" methods.
343
+ GDALRasterBandPamInfo *GetPamInfo()
344
+ {
345
+ return psPam;
346
+ }
347
+
348
+ //! @endcond
349
+ private:
350
+ CPL_DISALLOW_COPY_ASSIGN(GDALPamRasterBand)
351
+
352
+ void ResetNoDataValues();
353
+ };
354
+
355
+ //! @cond Doxygen_Suppress
356
+
357
+ /* ******************************************************************** */
358
+ /* GDALPamMultiDim */
359
+ /* ******************************************************************** */
360
+
361
+ /** Class that serializes/deserializes metadata on multidimensional objects.
362
+ * Currently SRS on GDALMDArray.
363
+ */
364
+ class CPL_DLL GDALPamMultiDim
365
+ {
366
+ struct Private;
367
+ std::unique_ptr<Private> d;
368
+
369
+ void Load();
370
+ void Save();
371
+
372
+ public:
373
+ explicit GDALPamMultiDim(const std::string &osFilename);
374
+ virtual ~GDALPamMultiDim();
375
+
376
+ std::shared_ptr<OGRSpatialReference>
377
+ GetSpatialRef(const std::string &osArrayFullName,
378
+ const std::string &osContext);
379
+
380
+ void SetSpatialRef(const std::string &osArrayFullName,
381
+ const std::string &osContext,
382
+ const OGRSpatialReference *poSRS);
383
+
384
+ CPLErr GetStatistics(const std::string &osArrayFullName,
385
+ const std::string &osContext, bool bApproxOK,
386
+ double *pdfMin, double *pdfMax, double *pdfMean,
387
+ double *pdfStdDev, GUInt64 *pnValidCount);
388
+
389
+ void SetStatistics(const std::string &osArrayFullName,
390
+ const std::string &osContext, bool bApproxStats,
391
+ double dfMin, double dfMax, double dfMean,
392
+ double dfStdDev, GUInt64 nValidCount);
393
+
394
+ void ClearStatistics();
395
+
396
+ void ClearStatistics(const std::string &osArrayFullName,
397
+ const std::string &osContext);
398
+
399
+ static std::shared_ptr<GDALPamMultiDim>
400
+ GetPAM(const std::shared_ptr<GDALMDArray> &poParent);
401
+ };
402
+
403
+ /* ******************************************************************** */
404
+ /* GDALPamMDArray */
405
+ /* ******************************************************************** */
406
+
407
+ /** Class that relies on GDALPamMultiDim to serializes/deserializes metadata. */
408
+ class CPL_DLL GDALPamMDArray : public GDALMDArray
409
+ {
410
+ std::shared_ptr<GDALPamMultiDim> m_poPam;
411
+
412
+ protected:
413
+ GDALPamMDArray(const std::string &osParentName, const std::string &osName,
414
+ const std::shared_ptr<GDALPamMultiDim> &poPam,
415
+ const std::string &osContext = std::string());
416
+
417
+ bool SetStatistics(bool bApproxStats, double dfMin, double dfMax,
418
+ double dfMean, double dfStdDev, GUInt64 nValidCount,
419
+ CSLConstList papszOptions) override;
420
+
421
+ public:
422
+ const std::shared_ptr<GDALPamMultiDim> &GetPAM() const
423
+ {
424
+ return m_poPam;
425
+ }
426
+
427
+ CPLErr GetStatistics(bool bApproxOK, bool bForce, double *pdfMin,
428
+ double *pdfMax, double *pdfMean, double *padfStdDev,
429
+ GUInt64 *pnValidCount, GDALProgressFunc pfnProgress,
430
+ void *pProgressData) override;
431
+
432
+ void ClearStatistics() override;
433
+
434
+ bool SetSpatialRef(const OGRSpatialReference *poSRS) override;
435
+
436
+ std::shared_ptr<OGRSpatialReference> GetSpatialRef() const override;
437
+ };
438
+
439
+ // These are mainly helper functions for internal use.
440
+ int CPL_DLL PamParseHistogram(CPLXMLNode *psHistItem, double *pdfMin,
441
+ double *pdfMax, int *pnBuckets,
442
+ GUIntBig **ppanHistogram,
443
+ int *pbIncludeOutOfRange, int *pbApproxOK);
444
+ CPLXMLNode CPL_DLL *PamFindMatchingHistogram(CPLXMLNode *psSavedHistograms,
445
+ double dfMin, double dfMax,
446
+ int nBuckets,
447
+ int bIncludeOutOfRange,
448
+ int bApproxOK);
449
+ CPLXMLNode CPL_DLL *PamHistogramToXMLTree(double dfMin, double dfMax,
450
+ int nBuckets, GUIntBig *panHistogram,
451
+ int bIncludeOutOfRange, int bApprox);
452
+
453
+ // For managing the proxy file database.
454
+ const char CPL_DLL *PamGetProxy(const char *);
455
+ const char CPL_DLL *PamAllocateProxy(const char *);
456
+ const char CPL_DLL *PamDeallocateProxy(const char *);
457
+ void CPL_DLL PamCleanProxyDB(void);
458
+
459
+ //! @endcond
460
+
461
+ #endif /* ndef GDAL_PAM_H_INCLUDED */