* LoadMetadata() */
| 129 | * LoadMetadata() |
| 130 | */ |
| 131 | void GDALMDReaderGeoEye::LoadMetadata() |
| 132 | { |
| 133 | if (m_bIsMetadataLoad) |
| 134 | return; |
| 135 | |
| 136 | if (!m_osIMDSourceFilename.empty()) |
| 137 | { |
| 138 | m_papszIMDMD = LoadIMDWktFile(); |
| 139 | } |
| 140 | |
| 141 | if (!m_osRPBSourceFilename.empty()) |
| 142 | { |
| 143 | m_papszRPCMD = GDALLoadRPCFile(m_osRPBSourceFilename); |
| 144 | } |
| 145 | |
| 146 | m_papszDEFAULTMD = CSLAddNameValue(m_papszDEFAULTMD, MD_NAME_MDTYPE, "GE"); |
| 147 | |
| 148 | m_bIsMetadataLoad = true; |
| 149 | |
| 150 | if (nullptr == m_papszIMDMD) |
| 151 | { |
| 152 | return; |
| 153 | } |
| 154 | |
| 155 | // extract imagery metadata |
| 156 | const char *pszSatId = |
| 157 | CSLFetchNameValue(m_papszIMDMD, "Source Image Metadata.Sensor"); |
| 158 | if (nullptr != pszSatId) |
| 159 | { |
| 160 | m_papszIMAGERYMD = CSLAddNameValue(m_papszIMAGERYMD, MD_NAME_SATELLITE, |
| 161 | CPLStripQuotes(pszSatId)); |
| 162 | } |
| 163 | |
| 164 | const char *pszCloudCover = CSLFetchNameValue( |
| 165 | m_papszIMDMD, "Source Image Metadata.Percent Cloud Cover"); |
| 166 | if (nullptr != pszCloudCover) |
| 167 | { |
| 168 | m_papszIMAGERYMD = CSLAddNameValue(m_papszIMAGERYMD, MD_NAME_CLOUDCOVER, |
| 169 | pszCloudCover); |
| 170 | } |
| 171 | |
| 172 | const char *pszDateTime = CSLFetchNameValue( |
| 173 | m_papszIMDMD, "Source Image Metadata.Acquisition Date/Time"); |
| 174 | |
| 175 | if (nullptr != pszDateTime) |
| 176 | { |
| 177 | char buffer[80]; |
| 178 | GIntBig timeMid = GetAcquisitionTimeFromString(pszDateTime); |
| 179 | |
| 180 | struct tm tmBuf; |
| 181 | strftime(buffer, 80, MD_DATETIMEFORMAT, |
| 182 | CPLUnixTimeToYMDHMS(timeMid, &tmBuf)); |
| 183 | m_papszIMAGERYMD = |
| 184 | CSLAddNameValue(m_papszIMAGERYMD, MD_NAME_ACQDATETIME, buffer); |
| 185 | } |
| 186 | } |
| 187 | |
| 188 | /** |
nothing calls this directly
no test coverage detected