51 static ossimTrace traceExec (
"ossimSpot6DimapSupportData:exec");
52 static ossimTrace traceDebug (
"ossimSpot6DimapSupportData:debug");
54 static std::string getVectorFloat64AsString(std::vector<ossim_float64> in)
56 std::vector<ossim_float64>::iterator it;
59 for ( it=in.begin() ; it < in.end(); it++ )
61 strTmp <<
" " << (*it);
67 static std::string getVectorDoubleAsString(std::vector<double> in)
69 std::vector<double>::iterator it;
72 for ( it=in.begin() ; it < in.end(); it++ )
74 strTmp <<
" " << (*it);
80 static std::string getVectorStringAsString(std::vector<ossimString> in)
82 std::vector<ossimString>::iterator it;
85 for ( it=in.begin() ; it < in.end(); it++ )
87 strTmp <<
" " << (*it);
102 vector<ossimRefPtr<ossimXmlNode> > xml_nodes;
104 xmlDocument->
findNodes(xpath, xml_nodes);
105 if (xml_nodes.size() == 0)
110 <<
"\nCould not find: " << xpath << std::endl;
114 if (xml_nodes.size() != 1)
119 <<
"\nMore than one node value with " << xpath << std::endl;
123 nodeValue = xml_nodes[0]->getText();
129 theDIMAPVersion(OSSIM_Spot6_UNKNOWN),
130 theMetadataSubProfile(OSSIM_Spot6_METADATA_SUBPROFILE_UNKNOWN),
131 theProductIsOk(false),
133 theXmlDocumentRoot(),
138 theAcquisitionDate(),
140 theInstrumentIndex(),
141 theProcessingLevelString(),
142 theSpectralProcessingString(),
152 theNumberOfMegaTilesInRow(0),
153 theNumberOfMegaTilesInCol(0),
154 theNumberOfMegaTiles(0),
162 theSolarIrradiance(),
189 theRefGroundPoint(0.0, 0.0, 0.0),
190 theRefImagePoint(0.0, 0.0)
275 os <<
"\n----------------- Info on Spot6 Image -------------------" 286 <<
"\n Bands Display Order: " << getVectorStringAsString(
theBandOrder)
294 <<
"\n Incidence Angle (TopCenter, Center, BottomCenter): " << getVectorFloat64AsString(
theIncidenceAngle)
295 <<
"\n Viewing Angle (TopCenter, Center, BottomCenter): " << getVectorFloat64AsString(
theViewingAngle)
296 <<
"\n Azimuth Angle (TopCenter, Center, BottomCenter): " << getVectorFloat64AsString(
theAzimuthAngle)
297 <<
"\n Sun Azimuth (TopCenter, Center, BottomCenter): " << getVectorFloat64AsString(
theSunAzimuth)
298 <<
"\n Sun Elevation (TopCenter, Center, BottomCenter): " << getVectorFloat64AsString(
theSunElevation)
300 <<
"\n Physical Bias (for each band): " << getVectorFloat64AsString(
thePhysicalBias)
301 <<
"\n Physical Gain (for each band): " << getVectorFloat64AsString(
thePhysicalGain)
302 <<
"\n Solar Irradiance (for each band): " << getVectorFloat64AsString(
theSolarIrradiance)
307 <<
"\n Corner Points:" 314 <<
"\n RPC model parameters:" 335 <<
"\n---------------------------------------------------------" 336 <<
"\n " << std::endl;
341 static const char MODULE[] =
"ossimSpot6DimapSupportData::parseXmlFile";
357 std::vector<char> fullBuffer;
359 if(in.good()&&(fileSize > 0))
362 fullBuffer.resize(fileSize);
371 in.read(&fullBuffer.front(), (std::streamsize)fullBuffer.size());
375 fullBuffer.begin()+in.gcount());
389 if(bufferedIo.
empty())
397 if(!xmlDocument->
read(inStringStream))
407 << MODULE <<
" DEBUG:" <<
"ossimSpot6DimapSupportData::parseXmlFile:" 408 <<
"\nUnable to parse xml file" << std::endl;
419 << MODULE <<
" DEBUG:" <<
"ossimSpot6DimapSupportData::parseXmlFile:" 420 <<
"\nparseMetadataIdentification failed. Returning false" 437 << MODULE <<
" DEBUG:" <<
"ossimSpot6DimapSupportData::parseXmlFile:" 438 <<
"\nparseDatasetdentification failed. Returning false" << std::endl;
446 << MODULE <<
" DEBUG:" <<
"ossimSpot6DimapSupportData::parseXmlFile:" 447 <<
"\nparseDatasetContent failed. Returning false" << std::endl;
456 << MODULE <<
" DEBUG:" <<
"ossimSpot6DimapSupportData::parseXmlFile:" 457 <<
"\nparseProductInformation failed. Returning false" << std::endl;
467 << MODULE <<
" DEBUG:" <<
"ossimSpot6DimapSupportData::parseXmlFile:" 468 <<
"\nparseCoordinateReferenceSystem failed. Returning false" << std::endl;
478 << MODULE <<
" DEBUG:" <<
"ossimSpot6DimapSupportData::parseXmlFile:" 479 <<
"\nparseGeoposition failed. Returning false" << std::endl;
489 << MODULE <<
" DEBUG:" <<
"ossimSpot6DimapSupportData::parseXmlFile:" 490 <<
"\nparseProcessingInformation failed. Returning false" << std::endl;
500 << MODULE <<
" DEBUG:" <<
"ossimSpot6DimapSupportData::parseXmlFile:" 501 <<
"\nparseRasterData failed. Returning false" << std::endl;
509 << MODULE <<
" DEBUG:" <<
"ossimSpot6DimapSupportData::parseXmlFile:" 510 <<
"\nparseRadiometricData failed. Returning false" << std::endl;
517 << MODULE <<
" DEBUG:" <<
"ossimSpot6DimapSupportData::parseXmlFile:" 518 <<
"\nparseGeometricData failed. Returning false" << std::endl;
525 << MODULE <<
" DEBUG:" <<
"ossimSpot6DimapSupportData::parseXmlFile:" 526 <<
"\nparseQualityAssessment failed. Returning false" << std::endl;
533 << MODULE <<
" DEBUG:" <<
"ossimSpot6DimapSupportData::parseXmlFile:" 534 <<
"\nparseDatasetSources failed. Returning false" << std::endl;
549 << MODULE <<
" DEBUG:" <<
"ossimSpot6DimapSupportData::parseXmlFile:" 550 <<
"\nparseRPCMetadata initialization failed. Returning false" << std::endl;
673 const char* prefix)
const 680 "ossimSpot6DimapSupportData",
695 "number_of_azimuth_angle",
711 "number_of_elevation_angle",
727 "reference_ground_point",
735 "reference_image_point",
798 "number_of_incident_angle",
814 "number_of_viewing_angle",
830 "number_of_scene_orientation",
918 if(type !=
"ossimSpot6DimapSupportData")
923 total =
ossimString(kwl.
find(prefix,
"number_of_azimuth_angle")).toUInt32();
937 total =
ossimString(kwl.
find(prefix,
"number_of_elevation_angle")).toUInt32();
958 tempString = kwl.
find(prefix,
"band_name_list");
976 total =
ossimString(kwl.
find(prefix,
"number_of_incident_angle")).toUInt32();
978 tempString = kwl.
find(prefix,
"incident_angle");
990 total =
ossimString(kwl.
find(prefix,
"number_of_viewing_angle")).toUInt32();
992 tempString = kwl.
find(prefix,
"viewing_angle");
1004 total =
ossimString(kwl.
find(prefix,
"number_of_scene_orientation")).toUInt32();
1006 tempString = kwl.
find(prefix,
"scene_orientation");
1007 if(tempString !=
"")
1013 in >> tempValue.
string();
1029 tempString = kwl.
find(prefix,
"physical_bias");
1030 if(tempString !=
"")
1036 in >> tempValue.
string();
1042 tempString = kwl.
find(prefix,
"physical_gain");
1043 if(tempString !=
"")
1049 in >> tempValue.
string();
1055 tempString = kwl.
find(prefix,
"solar_irradiance");
1056 if(tempString !=
"")
1062 in >> tempValue.
string();
1076 in >> lat.
string() >> lon.string() >> height.string() >> code.
string();
1091 in >>
x.string() >>
y.string();
1103 in >>
x.string() >>
y.string();
1113 vector<ossimRefPtr<ossimXmlNode> > xml_nodes;
1118 xpath =
"/Product_Information/Delivery_Identification/JOB_ID";
1120 if (!readOneXmlNode(xmlDocument, xpath,
theImageID))
1128 xpath =
"/Product_Information/Delivery_Identification/PRODUCTION_DATE";
1142 vector<ossimRefPtr<ossimXmlNode> > xml_nodes;
1148 xpath =
"/Dataset_Content/Dataset_Extent/Vertex";
1150 xmlDocument->
findNodes(xpath, xml_nodes);
1151 if (xml_nodes.size() != 4)
1156 std::vector<ossimRefPtr<ossimXmlNode> >::iterator node = xml_nodes.begin();
1157 while (node != xml_nodes.end())
1162 std::vector<ossimRefPtr<ossimXmlNode> > sub_nodes;
1164 (*node)->findChildNodes(xpath, sub_nodes);
1165 if (sub_nodes.size() == 0)
1170 gpt.
lat = sub_nodes[0]->getText().toDouble();
1174 (*node)->findChildNodes(xpath, sub_nodes);
1175 if (sub_nodes.size() == 0)
1180 gpt.
lon = sub_nodes[0]->getText().toDouble();
1185 (*node)->findChildNodes(xpath, sub_nodes);
1186 if (sub_nodes.size() == 0)
1191 ipt.
line = sub_nodes[0]->getText().toDouble() - 1.0;
1195 (*node)->findChildNodes(xpath, sub_nodes);
1196 if (sub_nodes.size() == 0)
1201 ipt.
samp = sub_nodes[0]->getText().toDouble() - 1.0;
1224 if (!readOneXmlNode(xmlDocument,
1232 if (!readOneXmlNode(xmlDocument,
theXmlDocumentRoot +
"/Dataset_Content/Dataset_Extent/Center/LAT", nodeValue))
1245 std::vector<ossimRefPtr<ossimXmlNode> > xml_nodes;
1246 std::vector<ossimRefPtr<ossimXmlNode> > sub_nodes;
1247 std::vector<ossimRefPtr<ossimXmlNode> >::iterator node;
1256 xpath =
"/Radiometric_Data/Radiometric_Calibration/Instrument_Calibration/Band_Measurement_List/Band_Radiance";
1258 xmlDocument->
findNodes(xpath, xml_nodes);
1260 node = xml_nodes.begin();
1261 while (node != xml_nodes.end())
1265 (*node)->findChildNodes(xpath, sub_nodes);
1266 if (sub_nodes.size() == 0)
1274 if ( (
theNumBands == 1) || (bandName ==
"B0") || (bandName ==
"P") )
1278 else if (bandName ==
"B1")
1282 else if (bandName ==
"B2")
1286 else if (bandName ==
"B3")
1293 <<
"ossimSpot6DimapSupportData::parseRadiometricMetadata ERROR: Band ID is incorrect\n";
1299 <<
"ossimSpot6DimapSupportData::parseRadiometricMetadata ERROR: Band index outside of range\n";
1305 (*node)->findChildNodes(xpath, sub_nodes);
1306 if (sub_nodes.size() == 0)
1315 (*node)->findChildNodes(xpath, sub_nodes);
1316 if (sub_nodes.size() == 0)
1331 xpath =
"/Radiometric_Data/Radiometric_Calibration/Instrument_Calibration/Band_Measurement_List/Band_Solar_Irradiance";
1333 xmlDocument->
findNodes(xpath, xml_nodes);
1335 node = xml_nodes.begin();
1336 while (node != xml_nodes.end())
1340 (*node)->findChildNodes(xpath, sub_nodes);
1341 if (sub_nodes.size() == 0)
1349 if ( (
theNumBands == 1) || (bandName ==
"B0") || (bandName ==
"P") )
1353 else if (bandName ==
"B1")
1357 else if (bandName ==
"B2")
1361 else if (bandName ==
"B3")
1368 <<
"ossimSpot6DimapSupportData::parseRadiometricMetadata ERROR: Band ID is incorrect\n";
1374 <<
"ossimSpot6DimapSupportData::parseRadiometricMetadata ERROR: Band index outside of range 2\n";
1380 (*node)->findChildNodes(xpath, sub_nodes);
1381 if (sub_nodes.size() == 0)
1398 static const char MODULE[] =
"ossimSpot6DimapSupportData::parseRPCMetadata";
1400 vector<ossimRefPtr<ossimXmlNode> > xml_nodes;
1405 xpath =
"/Rational_Function_Model/Resource_Reference/RESOURCE_ID";
1407 if (!readOneXmlNode(xmlDocument, xpath, nodeValue))
1418 xpath =
"/Rational_Function_Model/Global_RFM/Inverse_Model";
1420 xmlDocument->
findNodes(xpath, xml_nodes);
1421 if (xml_nodes.empty())
1437 xpath =
"/Rational_Function_Model/Global_RFM/Inverse_Model/LINE_NUM_COEFF_";
1439 xpath = xpath + valueStr.str();
1440 xmlDocument->
findNodes(xpath, xml_nodes);
1441 if (xml_nodes.size() == 0)
1453 xpath =
"/Rational_Function_Model/Global_RFM/Inverse_Model/LINE_DEN_COEFF_";
1455 xpath = xpath + valueStr.str();
1456 xmlDocument->
findNodes(xpath, xml_nodes);
1457 if (xml_nodes.size() == 0)
1469 xpath =
"/Rational_Function_Model/Global_RFM/Inverse_Model/SAMP_NUM_COEFF_";
1471 xpath = xpath + valueStr.str();
1472 xmlDocument->
findNodes(xpath, xml_nodes);
1473 if (xml_nodes.size() == 0)
1485 xpath =
"/Rational_Function_Model/Global_RFM/Inverse_Model/SAMP_DEN_COEFF_";
1487 xpath = xpath + valueStr.str();
1488 xmlDocument->
findNodes(xpath, xml_nodes);
1489 if (xml_nodes.size() == 0)
1505 xpath =
"/Rational_Function_Model/Global_RFM/Inverse_Model/ERR_BIAS_ROW";
1507 if (!readOneXmlNode(xmlDocument, xpath, nodeValue))
1512 xpath =
"/Rational_Function_Model/Global_RFM/Inverse_Model/ERR_BIAS_COL";
1514 if (!readOneXmlNode(xmlDocument, xpath, nodeValue))
1524 xpath =
"/Rational_Function_Model/Global_RFM/RFM_Validity/LONG_SCALE";
1526 if (!readOneXmlNode(xmlDocument, xpath, nodeValue))
1532 xpath =
"/Rational_Function_Model/Global_RFM/RFM_Validity/LONG_OFF";
1534 if (!readOneXmlNode(xmlDocument, xpath, nodeValue))
1540 xpath =
"/Rational_Function_Model/Global_RFM/RFM_Validity/LAT_SCALE";
1542 if (!readOneXmlNode(xmlDocument, xpath, nodeValue))
1548 xpath =
"/Rational_Function_Model/Global_RFM/RFM_Validity/LAT_OFF";
1550 if (!readOneXmlNode(xmlDocument, xpath, nodeValue))
1556 xpath =
"/Rational_Function_Model/Global_RFM/RFM_Validity/HEIGHT_SCALE";
1558 if (!readOneXmlNode(xmlDocument, xpath, nodeValue))
1564 xpath =
"/Rational_Function_Model/Global_RFM/RFM_Validity/HEIGHT_OFF";
1566 if (!readOneXmlNode(xmlDocument, xpath, nodeValue))
1572 xpath =
"/Rational_Function_Model/Global_RFM/RFM_Validity/SAMP_SCALE";
1574 if (!readOneXmlNode(xmlDocument, xpath, nodeValue))
1580 xpath =
"/Rational_Function_Model/Global_RFM/RFM_Validity/SAMP_OFF";
1582 if (!readOneXmlNode(xmlDocument, xpath, nodeValue))
1588 xpath =
"/Rational_Function_Model/Global_RFM/RFM_Validity/LINE_SCALE";
1590 if (!readOneXmlNode(xmlDocument, xpath, nodeValue))
1596 xpath =
"/Rational_Function_Model/Global_RFM/RFM_Validity/LINE_OFF";
1598 if (!readOneXmlNode(xmlDocument, xpath, nodeValue))
1611 vector<ossimRefPtr<ossimXmlNode> > xml_nodes;
1619 xpath =
"/Metadata_Identification/METADATA_FORMAT";
1621 xmlDocument->
findNodes(xpath, xml_nodes);
1622 if (xml_nodes.size() == 0)
1635 xpath =
"/Metadata_Identification/METADATA_FORMAT";
1637 xmlDocument->
findNodes(xpath, xml_nodes);
1638 if (xml_nodes.size() == 0)
1650 xpath =
"/Metadata_Identification/METADATA_FORMAT";
1652 xmlDocument->
findNodes(xpath, xml_nodes);
1653 if (xml_nodes.size() == 0)
1667 xml_nodes[0]->getAttributeValue(value, attribute);
1674 <<
"WARNING: DIMAP metadata version is not correct!" << std::endl;
1682 xpath =
"/Metadata_Identification/METADATA_PROFILE";
1684 if (!readOneXmlNode(xmlDocument, xpath, nodeValue))
1690 if ( (nodeValue !=
"S6_SENSOR")
1691 && (nodeValue !=
"S6_ORTHO")
1692 && (nodeValue !=
"S6_MOSAIC") )
1697 <<
"DEBUG:\n Not a Spot6 DIMAPv2 file: metadata profile is incorrect!" << std::endl;
1702 metadataProfile = nodeValue;
1707 xpath =
"/Metadata_Identification/METADATA_SUBPROFILE";
1709 if (!readOneXmlNode(xmlDocument, xpath, nodeValue))
1714 if ((nodeValue ==
"PRODUCT"))
1716 else if ( (nodeValue ==
"RPC") && (metadataProfile ==
"S6_SENSOR") )
1724 <<
"DEBUG:\n Not a Spot6 DIMAPv2 file: metadata subprofile is incorrect !" << std::endl;
1756 vector<ossimRefPtr<ossimXmlNode> > xml_nodes;
1762 xpath =
"/Processing_Information/Product_Settings/PROCESSING_LEVEL";
1772 xpath =
"/Processing_Information/Product_Settings/PROCESSING_LEVEL";
1784 static const char MODULE[] =
"ossimSpot6DimapSupportData::parseRasterData";
1785 vector<ossimRefPtr<ossimXmlNode> > xml_nodes;
1790 xpath =
"/Raster_Data/Data_Access/DATA_FILE_TILES";
1792 if (!readOneXmlNode(xmlDocument, xpath, nodeValue))
1801 xpath =
"/Raster_Data/Raster_Dimensions/NCOLS";
1803 if (!readOneXmlNode(xmlDocument, xpath, nodeValue))
1809 xpath =
"/Raster_Data/Raster_Dimensions/NROWS";
1811 if (!readOneXmlNode(xmlDocument, xpath, nodeValue))
1822 xpath =
"/Raster_Data/Raster_Dimensions/Tile_Set/NTILES";
1824 if (!readOneXmlNode(xmlDocument, xpath, nodeValue))
1835 xpath =
"/Raster_Data/Raster_Dimensions/Tile_Set/Regular_Tiling/NTILES_COUNT";
1837 xmlDocument->
findNodes(xpath, xml_nodes);
1838 if (xml_nodes.size() == 0)
1850 if (!xml_nodes[0]->getAttributeValue(value, attribute))
1852 attribute =
"ntiles_R";
1853 xml_nodes[0]->getAttributeValue(value, attribute);
1857 attribute =
"ntiles_y";
1858 if (!xml_nodes[0]->getAttributeValue(value, attribute))
1860 attribute =
"ntiles_C";
1861 xml_nodes[0]->getAttributeValue(value, attribute);
1879 xpath =
"/Raster_Data/Raster_Dimensions/Tile_Set/Regular_Tiling/NTILES_SIZE";
1881 xmlDocument->
findNodes(xpath, xml_nodes);
1882 if (xml_nodes.size() == 0)
1893 attribute =
"nrows";
1894 xml_nodes[0]->getAttributeValue(value, attribute);
1897 attribute =
"ncols";
1898 xml_nodes[0]->getAttributeValue(value, attribute);
1914 xpath =
"/Raster_Data/Raster_Dimensions/NBANDS";
1916 if (!readOneXmlNode(xmlDocument, xpath, nodeValue))
1931 xpath =
"/Raster_Data/Raster_Display/Band_Display_Order/RED_CHANNEL";
1933 xmlDocument->
findNodes(xpath, xml_nodes);
1934 if (xml_nodes.size() == 0)
1948 xpath =
"/Raster_Data/Raster_Display/Band_Display_Order/GREEN_CHANNEL";
1950 xmlDocument->
findNodes(xpath, xml_nodes);
1951 if (xml_nodes.size() == 0)
1963 xpath =
"/Raster_Data/Raster_Display/Band_Display_Order/BLUE_CHANNEL";
1965 xmlDocument->
findNodes(xpath, xml_nodes);
1966 if (xml_nodes.size() == 0)
1980 xpath =
"/Raster_Data/Raster_Display/Band_Display_Order/ALPHA_CHANNEL";
1982 xmlDocument->
findNodes(xpath, xml_nodes);
1983 if (xml_nodes.size() == 0)
2003 vector<ossimRefPtr<ossimXmlNode> > xml_nodes;
2006 xpath =
"/Geometric_Data/Use_Area/Located_Geometric_Values";
2008 xmlDocument->
findNodes(xpath, xml_nodes);
2009 if (xml_nodes.size() != 9 )
2019 std::vector<ossimRefPtr<ossimXmlNode> >::iterator node = xml_nodes.begin();
2020 while (node != xml_nodes.end())
2022 std::vector<ossimRefPtr<ossimXmlNode> > sub_nodes;
2027 xpath =
"Solar_Incidences/SUN_AZIMUTH";
2028 (*node)->findChildNodes(xpath, sub_nodes);
2029 if (sub_nodes.size() == 0)
2038 theSunAzimuth.push_back(sub_nodes[0]->getText().toDouble());
2044 xpath =
"Solar_Incidences/SUN_ELEVATION";
2045 (*node)->findChildNodes(xpath, sub_nodes);
2046 if (sub_nodes.size() == 0)
2061 xpath =
"Acquisition_Angles/INCIDENCE_ANGLE";
2062 (*node)->findChildNodes(xpath, sub_nodes);
2063 if (sub_nodes.size() == 0)
2078 xpath =
"Acquisition_Angles/VIEWING_ANGLE";
2079 (*node)->findChildNodes(xpath, sub_nodes);
2080 if (sub_nodes.size() == 0)
2095 xpath =
"Acquisition_Angles/AZIMUTH_ANGLE";
2096 (*node)->findChildNodes(xpath, sub_nodes);
2097 if (sub_nodes.size() == 0)
2124 vector<ossimRefPtr<ossimXmlNode> > xml_nodes;
2130 xpath =
"/Dataset_Sources/Source_Identification/Strip_Source/MISSION";
2132 if (!readOneXmlNode(xmlDocument, xpath, nodeValue))
2137 if (nodeValue !=
"SPOT")
2151 xpath =
"/Dataset_Sources/Source_Identification/Strip_Source/MISSION_INDEX";
2153 if (!readOneXmlNode(xmlDocument, xpath, nodeValue))
2158 if (nodeValue ==
"6")
2173 xpath =
"/Dataset_Sources/Source_Identification/Strip_Source/INSTRUMENT";
2183 xpath =
"/Dataset_Sources/Source_Identification/Strip_Source/INSTRUMENT_INDEX";
2194 xpath =
"/Dataset_Sources/Source_Identification/Strip_Source/IMAGING_DATE";
2196 if (!readOneXmlNode(xmlDocument, xpath, firstLineImagingDate))
2205 xpath =
"/Dataset_Sources/Source_Identification/Strip_Source/IMAGING_TIME";
2207 if (!readOneXmlNode(xmlDocument, xpath, firstLineImagingTime))
virtual const ossimDatum * create(const ossimString &code) const
create method
ossimGpt theRefGroundPoint
Center of frame on ground, if sub image it's the center of that.
void clear()
Erases the entire container.
ossimString getSensorID() const
virtual bool setValue(const ossimString &value)
std::vector< double > theSampDenCoeff
ossim_int32 theSampOffset
void getLrCorner(ossimGpt &pt) const
std::basic_ostringstream< char > ostringstream
Class for char output memory streams.
std::basic_stringstream< char > stringstream
Class for char mixed input and output memory streams.
static const char * IMAGE_DATE_KW
ossimString theSpectralProcessingString
double lond() const
Will convert the radian measure to degrees.
std::vector< double > theLineDenCoeff
Represents serializable keyword/value map.
ossimSpot6MetadataSubProfile theMetadataSubProfile
std::basic_ifstream< char > ifstream
Class for char input file streams.
std::vector< ossim_float64 > theAzimuthAngle
const char * find(const char *key) const
ossim_int64 fileSize() const
bool parseProductInformation(ossimRefPtr< ossimXmlDocument > xmlDocument)
Product Information:
ossimString theXmlDocumentRoot
void getLlCorner(ossimGpt &pt) const
bool contains(char aChar) const
void getRefImagePoint(ossimDpt &rp) const
zero base center point
virtual const ossimString & code() const
static ossimString toString(bool aValue)
Numeric to string methods.
void getIncidenceAngle(std::vector< ossim_float64 > &ia) const
void getUlCorner(ossimGpt &pt) const
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
Method to the load (recreate) the state of the object from a keyword list.
ossim_float64 hgt
Height in meters above the ellipsiod.
ossim_uint32 toUInt32() const
ossim_uint32 theNumberOfMegaTilesInCol
ossim_uint32 getNumberOfBands() const
ossimString theInstrument
double latd() const
Will convert the radian measure to degrees.
ossimString getAcquisitionDate() const
void getRefGroundPoint(ossimGpt &gp) const
Center of frame, sub image if there is one.
static const char * TYPE_KW
ossim_uint32 theNumberOfMegaTiles
bool parseProcessingInformation(ossimRefPtr< ossimXmlDocument > xmlDocument)
Processing Information:
ossimSpot6DIMAPVersion theDIMAPVersion
ossimString theAcquisitionDate
std::vector< ossim_float64 > theViewingAngle
const ossimDatum * datum() const
datum().
void getSunElevation(std::vector< ossim_float64 > &el) const
ossimString getInstrument() const
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Method to save the state of the object to a keyword list.
void getViewingAngle(std::vector< ossim_float64 > &va) const
ossim_int32 toInt32() const
virtual ~ossimSpot6DimapSupportData()
void add(const char *prefix, const ossimKeywordlist &kwl, bool overwrite=true)
ossimGpt createGround(const ossimString &s) const
bool parseDatasetIdentification(ossimRefPtr< ossimXmlDocument > xmlDocument)
Dataset Identification:
ossimString getInstrumentIndex() const
ossimSpot6DimapSupportData()
ossimString getImageID() const
bool parseRasterData(ossimRefPtr< ossimXmlDocument > xmlDocument)
std::vector< ossim_float64 > theSunAzimuth
virtual void clearErrorStatus() const
void getImageRect(ossimDrect &rect) const
Zero based image rectangle, sub image if there is one.
unsigned int ossim_uint32
bool parseGeometricData(ossimRefPtr< ossimXmlDocument > xmlDocument)
static ossimDatumFactory * instance()
bool parseQualityAssessment(ossimRefPtr< ossimXmlDocument > xmlDocument)
QualityAssessment:
std::vector< ossimString > theBandOrder
std::vector< double > theLineNumCoeff
static const char * NUMBER_BANDS_KW
bool parseRPCMetadata(ossimRefPtr< ossimXmlDocument > xmlDocument)
std::vector< ossim_float64 > theSolarIrradiance
static const char * AZIMUTH_ANGLE_KW
bool parseMetadataIdentificationDIMAPv2(ossimRefPtr< ossimXmlDocument > xmlDocument)
bool parseDatasetSources(ossimRefPtr< ossimXmlDocument > xmlDocument)
std::vector< double > theSampNumCoeff
bool setBooleanValue(bool value, ossimString &msg)
ossim_uint32 theNumberOfMegaTilesInRow
void getSunAzimuth(std::vector< ossim_float64 > &az) const
ossimString theProcessingLevelString
ossimString theInstrumentIndex
ossimDpt createDpt(const ossimString &s) const
bool parseDatasetContent(ossimRefPtr< ossimXmlDocument > xmlDocument)
Dataset Content:
bool parseRadiometricData(ossimRefPtr< ossimXmlDocument > xmlDocument)
ossimString theProductionDate
std::vector< ossim_float64 > thePhysicalBias
Calibration information for radiometric corrections.
ossim_int32 theLineOffset
virtual ossimErrorCode getErrorStatus() const
void getImageSize(ossimIpt &sz) const
std::vector< ossim_float64 > theIncidenceAngle
virtual void setErrorStatus() const
bool parseXmlFile(const ossimFilename &file)
std::vector< ossim_float64 > thePhysicalGain
const char * c_str() const
Returns a pointer to a null-terminated array of characters representing the string's contents...
bool parseGeoposition(ossimRefPtr< ossimXmlDocument > xmlDocument)
Geoposition:
bool read(std::istream &in)
ossimString getProcessingLevel() const
ossimBooleanProperty theMultiDataFile
void findNodes(const ossimString &xpath, std::vector< ossimRefPtr< ossimXmlNode > > &nodelist) const
Appends any matching nodes to the list supplied (should be empty):
std::basic_istringstream< char > istringstream
Class for char input memory streams.
static const char * ELEVATION_ANGLE_KW
std::vector< ossim_float64 > theSunElevation
bool parseCoordinateReferenceSystem(ossimRefPtr< ossimXmlDocument > xmlDocument)
Coordinate Reference System:
void printInfo(ostream &os) const
void getUrCorner(ossimGpt &pt) const
ossimString getProductionDate() const
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
std::basic_ostream< char > ostream
Base class for char output streams.
ossimIpt createIpt(const ossimString &s) const
ossimDpt theRefImagePoint
Zero based center of frame.
const std::string & string() const