/** * LoadMetadata() */ void GDALMDReaderGeoEye::LoadMetadata() { if(m_bIsMetadataLoad) return; if (!m_osIMDSourceFilename.empty()) { m_papszIMDMD = LoadIMDWktFile( ); } if(!m_osRPBSourceFilename.empty()) { m_papszRPCMD = GDALLoadRPCFile( m_osRPBSourceFilename ); } m_papszDEFAULTMD = CSLAddNameValue(m_papszDEFAULTMD, MD_NAME_MDTYPE, "GE"); m_bIsMetadataLoad = true; if(NULL == m_papszIMDMD) { return; } //extract imagery metadata const char* pszSatId = CSLFetchNameValue(m_papszIMDMD, "Source Image Metadata.Sensor"); if(NULL != pszSatId) { m_papszIMAGERYMD = CSLAddNameValue(m_papszIMAGERYMD, MD_NAME_SATELLITE, CPLStripQuotes(pszSatId)); } const char* pszCloudCover = CSLFetchNameValue(m_papszIMDMD, "Source Image Metadata.Percent Cloud Cover"); if(NULL != pszCloudCover) { m_papszIMAGERYMD = CSLAddNameValue(m_papszIMAGERYMD, MD_NAME_CLOUDCOVER, pszCloudCover); } const char* pszDateTime = CSLFetchNameValue(m_papszIMDMD, "Source Image Metadata.Acquisition Date/Time"); if(NULL != pszDateTime) { char buffer[80]; time_t timeMid = GetAcquisitionTimeFromString(pszDateTime); strftime (buffer, 80, MD_DATETIMEFORMAT, localtime(&timeMid)); m_papszIMAGERYMD = CSLAddNameValue(m_papszIMAGERYMD, MD_NAME_ACQDATETIME, buffer); } }
/** * LoadMetadata() */ void GDALMDReaderOrbView::LoadMetadata() { if(m_bIsMetadataLoad) return; if (!m_osIMDSourceFilename.empty()) { m_papszIMDMD = GDALLoadIMDFile( m_osIMDSourceFilename ); } if(!m_osRPBSourceFilename.empty()) { m_papszRPCMD = GDALLoadRPCFile( m_osRPBSourceFilename ); } m_papszDEFAULTMD = CSLAddNameValue(m_papszDEFAULTMD, MD_NAME_MDTYPE, "OV"); m_bIsMetadataLoad = true; if(NULL == m_papszIMDMD) { return; } //extract imagery metadata const char* pszSatId = CSLFetchNameValue(m_papszIMDMD, "sensorInfo.satelliteName"); if(NULL != pszSatId) { m_papszIMAGERYMD = CSLAddNameValue(m_papszIMAGERYMD, MD_NAME_SATELLITE, CPLStripQuotes(pszSatId)); } const char* pszCloudCover = CSLFetchNameValue(m_papszIMDMD, "productInfo.productCloudCoverPercentage"); if(NULL != pszCloudCover) { m_papszIMAGERYMD = CSLAddNameValue(m_papszIMAGERYMD, MD_NAME_CLOUDCOVER, pszCloudCover); } const char* pszDateTime = CSLFetchNameValue(m_papszIMDMD, "inputImageInfo.firstLineAcquisitionDateTime"); if(NULL != pszDateTime) { char buffer[80]; time_t timeMid = GetAcquisitionTimeFromString(pszDateTime); strftime (buffer, 80, MD_DATETIMEFORMAT, localtime(&timeMid)); m_papszIMAGERYMD = CSLAddNameValue(m_papszIMAGERYMD, MD_NAME_ACQDATETIME, buffer); } }
/** * LoadMetadata() */ void GDALMDReaderKompsat::LoadMetadata() { if(m_bIsMetadataLoad) return; if(!m_osIMDSourceFilename.empty()) { m_papszIMDMD = ReadTxtToList( ); } if(!m_osRPBSourceFilename.empty()) { m_papszRPCMD = GDALLoadRPCFile( m_osRPBSourceFilename ); } m_papszDEFAULTMD = CSLAddNameValue(m_papszDEFAULTMD, MD_NAME_MDTYPE, "KARI"); m_bIsMetadataLoad = true; const char* pszSatId1 = CSLFetchNameValue(m_papszIMDMD, "AUX_SATELLITE_NAME"); const char* pszSatId2 = CSLFetchNameValue(m_papszIMDMD, "AUX_SATELLITE_SENSOR"); if(NULL != pszSatId1 && NULL != pszSatId2) { m_papszIMAGERYMD = CSLAddNameValue(m_papszIMAGERYMD, MD_NAME_SATELLITE, CPLSPrintf( "%s %s", CPLStripQuotes(pszSatId1).c_str(), CPLStripQuotes(pszSatId2).c_str())); } else if(NULL != pszSatId1 && NULL == pszSatId2) { m_papszIMAGERYMD = CSLAddNameValue(m_papszIMAGERYMD, MD_NAME_SATELLITE, CPLStripQuotes(pszSatId1)); } else if(NULL == pszSatId1 && NULL != pszSatId2) { m_papszIMAGERYMD = CSLAddNameValue(m_papszIMAGERYMD, MD_NAME_SATELLITE, CPLStripQuotes(pszSatId2)); } const char* pszCloudCover = CSLFetchNameValue(m_papszIMDMD, "AUX_CLOUD_STATUS"); if(NULL != pszCloudCover) { int nCC = atoi(pszCloudCover); if(nCC > 100 || nCC < 0) { m_papszIMAGERYMD = CSLAddNameValue(m_papszIMAGERYMD, MD_NAME_CLOUDCOVER, MD_CLOUDCOVER_NA); } else { m_papszIMAGERYMD = CSLAddNameValue(m_papszIMAGERYMD, MD_NAME_CLOUDCOVER, CPLSPrintf("%d", nCC)); } } const char* pszDate = CSLFetchNameValue(m_papszIMDMD, "AUX_STRIP_ACQ_DATE_UT"); if(NULL != pszDate) { const char* pszTime = CSLFetchNameValue(m_papszIMDMD, "AUX_STRIP_ACQ_START_UT"); if(NULL == pszTime) pszTime = "000000.000000"; char buffer[80]; time_t timeMid = GetAcquisitionTimeFromString(CPLSPrintf( "%sT%s", pszDate, pszTime)); strftime (buffer, 80, MD_DATETIMEFORMAT, localtime(&timeMid)); m_papszIMAGERYMD = CSLAddNameValue(m_papszIMAGERYMD, MD_NAME_ACQDATETIME, buffer); } }