@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.
- package/CHANGELOG.md +18 -0
- package/cppjs-package-gdal.podspec +1 -1
- package/cppjs.build.js +1 -0
- package/dist/prebuilt/Android-x86_64/include/cpl_atomic_ops.h +90 -0
- package/dist/prebuilt/Android-x86_64/include/cpl_auto_close.h +73 -0
- package/dist/prebuilt/Android-x86_64/include/cpl_compressor.h +112 -0
- package/dist/prebuilt/Android-x86_64/include/cpl_config.h +215 -0
- package/dist/prebuilt/Android-x86_64/include/cpl_config_extras.h +34 -0
- package/dist/prebuilt/Android-x86_64/include/cpl_conv.h +417 -0
- package/dist/prebuilt/Android-x86_64/include/cpl_csv.h +71 -0
- package/dist/prebuilt/Android-x86_64/include/cpl_error.h +344 -0
- package/dist/prebuilt/Android-x86_64/include/cpl_hash_set.h +83 -0
- package/dist/prebuilt/Android-x86_64/include/cpl_http.h +319 -0
- package/dist/prebuilt/Android-x86_64/include/cpl_json.h +301 -0
- package/dist/prebuilt/Android-x86_64/include/cpl_list.h +59 -0
- package/dist/prebuilt/Android-x86_64/include/cpl_minixml.h +211 -0
- package/dist/prebuilt/Android-x86_64/include/cpl_multiproc.h +241 -0
- package/dist/prebuilt/Android-x86_64/include/cpl_port.h +1182 -0
- package/dist/prebuilt/Android-x86_64/include/cpl_progress.h +49 -0
- package/dist/prebuilt/Android-x86_64/include/cpl_quad_tree.h +105 -0
- package/dist/prebuilt/Android-x86_64/include/cpl_spawn.h +60 -0
- package/dist/prebuilt/Android-x86_64/include/cpl_string.h +863 -0
- package/dist/prebuilt/Android-x86_64/include/cpl_time.h +29 -0
- package/dist/prebuilt/Android-x86_64/include/cpl_virtualmem.h +365 -0
- package/dist/prebuilt/Android-x86_64/include/cpl_vsi.h +830 -0
- package/dist/prebuilt/Android-x86_64/include/cpl_vsi_error.h +55 -0
- package/dist/prebuilt/Android-x86_64/include/cpl_vsi_virtual.h +580 -0
- package/dist/prebuilt/Android-x86_64/include/cplkeywordparser.h +61 -0
- package/dist/prebuilt/Android-x86_64/include/gdal.h +2667 -0
- package/dist/prebuilt/Android-x86_64/include/gdal_alg.h +717 -0
- package/dist/prebuilt/Android-x86_64/include/gdal_alg_priv.h +386 -0
- package/dist/prebuilt/Android-x86_64/include/gdal_csv.h +25 -0
- package/dist/prebuilt/Android-x86_64/include/gdal_frmts.h +236 -0
- package/dist/prebuilt/Android-x86_64/include/gdal_mdreader.h +240 -0
- package/dist/prebuilt/Android-x86_64/include/gdal_pam.h +461 -0
- package/dist/prebuilt/Android-x86_64/include/gdal_priv.h +4599 -0
- package/dist/prebuilt/Android-x86_64/include/gdal_proxy.h +470 -0
- package/dist/prebuilt/Android-x86_64/include/gdal_rat.h +390 -0
- package/dist/prebuilt/Android-x86_64/include/gdal_simplesurf.h +579 -0
- package/dist/prebuilt/Android-x86_64/include/gdal_utils.h +313 -0
- package/dist/prebuilt/Android-x86_64/include/gdal_version.h +33 -0
- package/dist/prebuilt/Android-x86_64/include/gdal_vrt.h +89 -0
- package/dist/prebuilt/Android-x86_64/include/gdalcachedpixelaccessor.h +439 -0
- package/dist/prebuilt/Android-x86_64/include/gdalgeorefpamdataset.h +73 -0
- package/dist/prebuilt/Android-x86_64/include/gdalgrid.h +102 -0
- package/dist/prebuilt/Android-x86_64/include/gdalgrid_priv.h +67 -0
- package/dist/prebuilt/Android-x86_64/include/gdaljp2abstractdataset.h +61 -0
- package/dist/prebuilt/Android-x86_64/include/gdaljp2metadata.h +237 -0
- package/dist/prebuilt/Android-x86_64/include/gdalpansharpen.h +258 -0
- package/dist/prebuilt/Android-x86_64/include/gdalsubdatasetinfo.h +104 -0
- package/dist/prebuilt/Android-x86_64/include/gdalwarper.h +622 -0
- package/dist/prebuilt/Android-x86_64/include/gnm.h +750 -0
- package/dist/prebuilt/Android-x86_64/include/gnm_api.h +101 -0
- package/dist/prebuilt/Android-x86_64/include/gnmgraph.h +258 -0
- package/dist/prebuilt/Android-x86_64/include/memdataset.h +176 -0
- package/dist/prebuilt/Android-x86_64/include/ogr_api.h +1024 -0
- package/dist/prebuilt/Android-x86_64/include/ogr_core.h +1321 -0
- package/dist/prebuilt/Android-x86_64/include/ogr_feature.h +1981 -0
- package/dist/prebuilt/Android-x86_64/include/ogr_featurestyle.h +858 -0
- package/dist/prebuilt/Android-x86_64/include/ogr_geocoding.h +46 -0
- package/dist/prebuilt/Android-x86_64/include/ogr_geomcoordinateprecision.h +79 -0
- package/dist/prebuilt/Android-x86_64/include/ogr_geometry.h +4346 -0
- package/dist/prebuilt/Android-x86_64/include/ogr_p.h +324 -0
- package/dist/prebuilt/Android-x86_64/include/ogr_recordbatch.h +125 -0
- package/dist/prebuilt/Android-x86_64/include/ogr_spatialref.h +1007 -0
- package/dist/prebuilt/Android-x86_64/include/ogr_srs_api.h +1088 -0
- package/dist/prebuilt/Android-x86_64/include/ogr_swq.h +529 -0
- package/dist/prebuilt/Android-x86_64/include/ogrsf_frmts.h +746 -0
- package/dist/prebuilt/Android-x86_64/include/rawdataset.h +255 -0
- package/dist/prebuilt/Android-x86_64/include/vrtdataset.h +2426 -0
- package/dist/prebuilt/Android-x86_64/lib/cmake/gdal/GDAL-targets-release.cmake +19 -0
- package/dist/prebuilt/Android-x86_64/lib/cmake/gdal/GDAL-targets.cmake +106 -0
- package/dist/prebuilt/Android-x86_64/lib/cmake/gdal/GDALConfig.cmake +21 -0
- package/dist/prebuilt/Android-x86_64/lib/cmake/gdal/GDALConfigVersion.cmake +85 -0
- package/dist/prebuilt/Android-x86_64/lib/gdalplugins/drivers.ini +290 -0
- package/dist/prebuilt/Android-x86_64/lib/libgdal.so +0 -0
- package/dist/prebuilt/Android-x86_64/lib/pkgconfig/gdal.pc +17 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/GDALLogoBW.svg +138 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/GDALLogoColor.svg +126 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/GDALLogoGS.svg +126 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/LICENSE.TXT +467 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/MM_m_idofic.csv +321 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/cubewerx_extra.wkt +48 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/default.rsc +0 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/ecw_cs.wkt +1453 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/epsg.wkt +1 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/esri_StatePlane_extra.wkt +631 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/gdalicon.png +0 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/gdalinfo_output.schema.json +346 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/gdalmdiminfo_output.schema.json +321 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/gdaltileindex.xsd +253 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/gdalvrt.xsd +881 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/gfs.xsd +246 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/gml_registry.xml +117 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/gml_registry.xsd +66 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_center.csv +251 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_process.csv +102 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_subcenter.csv +63 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_0.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_1.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_13.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_14.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_15.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_16.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_17.csv +11 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_18.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_19.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_190.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_191.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_2.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_20.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_21.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_3.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_4.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_5.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_6.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_0_7.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_10_0.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_10_1.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_10_191.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_10_2.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_10_3.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_10_4.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_1_0.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_1_1.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_1_2.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_20_0.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_20_1.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_20_2.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_2_0.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_2_3.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_2_4.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_2_5.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_2_6.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_3_0.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_3_1.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_3_2.csv +28 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_3_3.csv +8 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_3_4.csv +14 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_3_5.csv +11 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_3_6.csv +11 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_4_0.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_4_1.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_4_10.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_4_2.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_4_3.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_4_4.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_4_5.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_4_6.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_4_7.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_4_8.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_4_9.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_local_Canada.csv +5 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_local_HPC.csv +2 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_local_MRMS.csv +175 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_local_NCEP.csv +401 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_local_NDFD.csv +38 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_2_local_index.csv +7 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_4_5.csv +261 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/grib2_table_versions.csv +3 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/gt_datum.csv +229 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/gt_ellips.csv +24 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/header.dxf +1124 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/inspire_cp_BasicPropertyUnit.gfs +57 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/inspire_cp_CadastralBoundary.gfs +60 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/inspire_cp_CadastralParcel.gfs +81 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/inspire_cp_CadastralZoning.gfs +161 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_AdmArea.gfs +59 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_AdmBdry.gfs +49 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_AdmPt.gfs +59 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_BldA.gfs +54 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_BldL.gfs +54 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_Cntr.gfs +54 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_CommBdry.gfs +49 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_CommPt.gfs +59 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_Cstline.gfs +54 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_ElevPt.gfs +54 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_GCP.gfs +94 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_LeveeEdge.gfs +49 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_RailCL.gfs +54 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_RdASL.gfs +44 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_RdArea.gfs +54 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_RdCompt.gfs +59 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_RdEdg.gfs +59 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_RdMgtBdry.gfs +49 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_RdSgmtA.gfs +59 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_RvrMgtBdry.gfs +49 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_SBAPt.gfs +49 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_SBArea.gfs +54 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_SBBdry.gfs +44 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_WA.gfs +54 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_WL.gfs +54 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_WStrA.gfs +54 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/jpfgdgml_WStrL.gfs +54 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/nitf_spec.xml +3290 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/nitf_spec.xsd +173 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/ogrinfo_output.schema.json +528 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/ogrvrt.xsd +530 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/osmconf.ini +134 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/ozi_datum.csv +131 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/ozi_ellips.csv +35 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/pci_datum.txt +530 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/pci_ellips.txt +129 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/pdfcomposition.xsd +705 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/ruian_vf_ob_v1.gfs +1455 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/ruian_vf_st_uvoh_v1.gfs +86 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/ruian_vf_st_v1.gfs +1489 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/ruian_vf_v1.gfs +2126 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/s57agencies.csv +249 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/s57attributes.csv +484 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/s57expectedinput.csv +1008 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/s57objectclasses.csv +287 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/seed_2d.dgn +0 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/seed_3d.dgn +0 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/stateplane.csv +259 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/tms_LINZAntarticaMapTileGrid.json +190 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/tms_MapML_APSTILE.json +268 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/tms_MapML_CBMTILE.json +346 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/tms_NZTM2000.json +243 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/trailer.dxf +434 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/vdv452.xml +351 -0
- package/dist/prebuilt/Android-x86_64/share/gdal/vdv452.xsd +47 -0
- package/gdal.xcframework/ios-arm64_arm64e/libgdal.a +0 -0
- package/gdal.xcframework/ios-arm64_arm64e_x86_64-simulator/libgdal.a +0 -0
- 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 */
|