31 #ifndef GDAL_MDREADER_H_INCLUDED
32 #define GDAL_MDREADER_H_INCLUDED
39 #define MD_DOMAIN_IMD "IMD"
40 #define MD_DOMAIN_RPC "RPC"
41 #define MD_DOMAIN_IMAGERY "IMAGERY"
42 #define MD_DOMAIN_DEFAULT ""
44 #define MD_NAME_ACQDATETIME "ACQUISITIONDATETIME"
45 #define MD_NAME_SATELLITE "SATELLITEID"
46 #define MD_NAME_CLOUDCOVER "CLOUDCOVER"
47 #define MD_NAME_MDTYPE "METADATATYPE"
49 #define MD_DATETIMEFORMAT "%Y-%m-%d %H:%M:%S"
50 #define MD_CLOUDCOVER_NA "999"
56 #define RPC_ERR_BIAS "ERR_BIAS"
57 #define RPC_ERR_RAND "ERR_RAND"
58 #define RPC_LINE_OFF "LINE_OFF"
59 #define RPC_SAMP_OFF "SAMP_OFF"
60 #define RPC_LAT_OFF "LAT_OFF"
61 #define RPC_LONG_OFF "LONG_OFF"
62 #define RPC_HEIGHT_OFF "HEIGHT_OFF"
63 #define RPC_LINE_SCALE "LINE_SCALE"
64 #define RPC_SAMP_SCALE "SAMP_SCALE"
65 #define RPC_LAT_SCALE "LAT_SCALE"
66 #define RPC_LONG_SCALE "LONG_SCALE"
67 #define RPC_HEIGHT_SCALE "HEIGHT_SCALE"
68 #define RPC_LINE_NUM_COEFF "LINE_NUM_COEFF"
69 #define RPC_LINE_DEN_COEFF "LINE_DEN_COEFF"
70 #define RPC_SAMP_NUM_COEFF "SAMP_NUM_COEFF"
71 #define RPC_SAMP_DEN_COEFF "SAMP_DEN_COEFF"
74 #define RPC_MIN_LONG "MIN_LONG"
75 #define RPC_MIN_LAT "MIN_LAT"
76 #define RPC_MAX_LONG "MAX_LONG"
77 #define RPC_MAX_LAT "MAX_LAT"
80 #define RPC_LAT_NUM_COEFF "LAT_NUM_COEFF"
81 #define RPC_LAT_DEN_COEFF "LAT_DEN_COEFF"
82 #define RPC_LON_NUM_COEFF "LON_NUM_COEFF"
83 #define RPC_LON_DEN_COEFF "LON_DEN_COEFF"
90 MDR_None = 0x00000000,
94 MDR_PLEIADES = 0x00000008,
95 MDR_SPOT = 0x00000010,
96 MDR_RDK1 = 0x00000020,
99 MDR_KOMPSAT = 0x00000100,
100 MDR_EROS = 0x00000200,
101 MDR_ALOS = 0x00000400,
102 MDR_ANY = MDR_DG | MDR_GE | MDR_OV | MDR_PLEIADES | MDR_SPOT | MDR_RDK1 |
103 MDR_LS | MDR_RE | MDR_KOMPSAT | MDR_EROS | MDR_ALOS
113 void ReadXMLToListFirstPass(
const CPLXMLNode* psNode,
114 std::map<std::string, int>& oMapCountKeysFull,
115 const std::string& osPrefixFull);
117 char** ReadXMLToList(
const CPLXMLNode* psNode,
119 const std::map<std::string, int>& oMapCountKeysFullRef,
120 std::map<std::string, int>& oMapCountKeysFull,
121 std::map<std::string, int>& oMapCountKeys,
122 const std::string& osPrefix,
123 const std::string& osPrefixFull);
134 virtual char ** GetMetadataDomain(
const char *pszDomain);
140 virtual bool FillMetadata(GDALMultiDomainMetadata* poMDMD);
146 virtual bool HasRequiredFiles()
const = 0;
152 virtual char** GetMetadataFiles()
const = 0;
158 virtual void LoadMetadata();
164 virtual GIntBig GetAcquisitionTimeFromString(
const char* pszDateTime);
174 virtual char** ReadXMLToList(
CPLXMLNode* psNode,
char** papszList,
175 const char* pszName =
"");
185 virtual char** AddXMLNameValueToList(
char** papszList,
const char *pszName,
186 const char *pszValue);
189 char **m_papszIMDMD =
nullptr;
190 char **m_papszRPCMD =
nullptr;
191 char **m_papszIMAGERYMD =
nullptr;
192 char **m_papszDEFAULTMD =
nullptr;
193 bool m_bIsMetadataLoad =
false;
221 char **papszSiblingFiles,
232 char** GDALLoadRPBFile(
const CPLString& osFilePath );
233 char** GDALLoadRPCFile(
const CPLString& osFilePath );
234 char** GDALLoadIMDFile(
const CPLString& osFilePath );
235 bool GDALCheckFileHeader(
const CPLString& soFilePath,
236 const char * pszTestString,
237 int nBufferSize = 256);
239 CPLErr GDALWriteRPBFile(
const char *pszFilename,
char **papszMD );
240 CPLErr GDALWriteRPCTXTFile(
const char *pszFilename,
char **papszMD );
241 CPLErr GDALWriteIMDFile(
const char *pszFilename,
char **papszMD );
243 #endif //GDAL_MDREADER_H_INCLUDED