39 static ossimTrace traceDebug(
"ossimTerraSarProductDoc:debug");
59 if ( (s ==
"TSX-1") || (s ==
"TDX-1") )
70 static const char MODULE[] =
71 "ossimplugins::ossimTerraSarProductDoc::initPlatformPosition";
83 "/level1Product/platform/orbit/stateVec";
84 std::vector<ossimRefPtr<ossimXmlNode> > xnodes;
88 const std::vector<ossimRefPtr<ossimXmlNode> >::size_type COUNT =
91 std::vector<Ephemeris*> ev;
127 << MODULE <<
" ERROR:\nNode not found: " << path
142 << MODULE <<
" ERROR:\nNode not found: " << path
157 << MODULE <<
" ERROR:\nNode not found: " << path
172 << MODULE <<
" ERROR:\nNode not found: " << path
187 << MODULE <<
" ERROR:\nNode not found: " << path
202 << MODULE <<
" ERROR:\nNode not found: " << path
217 << MODULE <<
" ERROR:\nNode not found: " << path
231 if (result && ev.size())
234 for ( std::vector<Ephemeris*>::size_type evIdx = 0;
238 ephemeris[evIdx] = ev[evIdx];
243 <<
" DEBUG\nnbrData: " << nbrData <<
"\n";
245 pos->
setData(ephemeris, nbrData);
249 std::vector<Ephemeris*>::iterator evIdx = ev.begin();
250 while (evIdx != ev.end())
263 << MODULE <<
" ERROR:\nNodes not found: " << path << std::endl;
275 << MODULE <<
" exit status = " << (result?
"true\n":
"false\n");
291 if ( getNumberOfAzimuthLooks(xdoc, s) )
301 if ( getNumberOfRangeLooks(xdoc, s) )
311 if ( getCommonPrf(xdoc, s) )
321 if ( getRadarCenterFrequency(xdoc, s) )
323 const double CLUM = 2.99792458e+8 ;
324 double waveLength = CLUM / s.
toDouble();
332 if ( getLookDirection(xdoc, s) )
334 if (s.
upcase() ==
"RIGHT")
349 if ( getCommonRsf(xdoc, s) )
359 const double SEMI_MAJOR = 6378137.0;
360 const double SEMI_MINOR = 6356752.3142;
364 if ( isProductGeoreferenced(xdoc) )
366 if ( getOrbitDirection(xdoc, s) )
368 int orbitDirectionSign;
369 if ( s.
upcase() ==
"DESCENDING" )
371 orbitDirectionSign = 1 ;
375 orbitDirectionSign = -1 ;
378 if ( getImageDataStrartWith(xdoc, s) )
380 if (s==
"EARLYAZNEARRG")
385 else if (s==
"EARLYAZFARRG")
390 else if (s==
"LATEAZNEARRG")
395 else if (s==
"LATEAZFARRG") {
443 if ( getNumberOfColumns(xdoc, s) )
451 if ( getNumberOfRows(xdoc, s) )
468 <<
"ossimplugins::ossimTerraSarProductDoc::initImageSize DEBUG:\nimage size: " 470 <<
"\nexit status = " << (result?
"true":
"false")
486 if ( getProductVariant(xdoc, s) )
490 if ( getProjectedSpacingSlantRange(xdoc, s) )
498 if ( getProjectedSpacingAzimuth(xdoc, s) )
509 if ( getRowSpacing(xdoc, s) )
517 if ( getColumnSpacing(xdoc, s) )
540 <<
"ossimplugins::ossimTerraSarProductDoc::initGsd DEBUG:\ngsd: " 542 <<
"\nexit status = " << (result?
"true":
"false")
551 std::list<ossimGpt>& gcp,
552 std::list<ossimDpt>& icp)
const 554 static const char MODULE[] =
"ossimplugins::ossimTerraSarProductDoc::initTiePoints";
570 result = getSceneAverageHeight(xdoc, s);
577 result = getSceneCenterRefColumn(xdoc, s);
582 result = getSceneCenterRefRow(xdoc, s);
589 result = getSceneCenterLat(xdoc, s);
594 result = getSceneCenterLon(xdoc, s);
602 "/level1Product/productInfo/sceneInfo/sceneCornerCoord";
603 std::vector<ossimRefPtr<ossimXmlNode> > xnodes;
609 if (xnodes[i].valid())
628 <<
"dpt" << i <<
": " << dpt
649 <<
"gpt" << i <<
": " << gpt
675 << MODULE <<
" DEBUG: exit status = " << (result?
"true":
"false")
688 if ( getProjection(xdoc, s) )
690 result = (s ==
"GROUNDRANGE");
699 ossimString path =
"/level1Product/generalHeader/mission";
708 ossimString path =
"/level1Product/productInfo/imageDataInfo/numberOfLayers";
722 ossimString path =
"/level1Product/productComponents/imageData/file/location/path";
726 path =
"/level1Product/productComponents/imageData/file/location/filename";
741 ossimString path =
"/level1Product/productInfo/sceneInfo/sceneID";
748 ossimString path =
"/level1Product/productInfo/productVariantInfo/projection";
755 ossimString path =
"/level1Product/productInfo/productVariantInfo/productType";
762 ossimString path =
"/level1Product/productInfo/productVariantInfo/productVariant";
769 ossimString path =
"/level1Product/productInfo/productVariantInfo/radiometricCorrection";
777 ossimString path =
"/level1Product/productSpecific/projectedImageInfo/slantToGroundRangeProjection/referencePoint";
785 ossimString path =
"/level1Product/productSpecific/complexImageInfo";
786 std::vector<ossimRefPtr<ossimXmlNode> > xnodes;
792 if (xnodes[i].valid())
809 ossimString path =
"/level1Product/productInfo/missionInfo/orbitDirection";
817 "/level1Product/productInfo/acquisitionInfo/lookDirection";
825 "/level1Product/generalHeader/generationTime";
832 ossimString path =
"/level1Product/productInfo/sceneInfo/rangeTime/firstPixel";
839 ossimString path =
"/level1Product/productInfo/sceneInfo/rangeTime/lastPixel";
846 ossimString path =
"/level1Product/productInfo/sceneInfo/sceneCenterCoord/azimuthTimeUTC";
853 ossimString path =
"/level1Product/productInfo/sceneInfo/sceneCenterCoord/rangeTime";
860 ossimString path =
"/level1Product/productInfo/sceneInfo/sceneCenterCoord/refColumn";
867 ossimString path =
"/level1Product/productInfo/sceneInfo/sceneCenterCoord/refRow";
874 ossimString path =
"/level1Product/productInfo/sceneInfo/sceneCenterCoord/lat";
881 ossimString path =
"/level1Product/productInfo/sceneInfo/sceneCenterCoord/lon";
889 "/level1Product/productInfo/sceneInfo/sceneAverageHeight";
897 "/level1Product/instrument/radarParameters/centerFrequency";
905 "/level1Product/productInfo/sceneInfo/start/timeUTC";
913 ossimNotify(
ossimNotifyLevel_DEBUG)<<
"Node \"/level1Product/productInfo/sceneInfo/start/timeUTC\" invalid, trying \"/level1Product/instrument/settings/rxGainSetting/startTimeUTC\"...\n";
915 path =
"/level1Product/instrument/settings/rxGainSetting/startTimeUTC";
926 "/level1Product/productInfo/sceneInfo/stop/timeUTC";
934 ossimNotify(
ossimNotifyLevel_DEBUG)<<
"Node \"/level1Product/productInfo/sceneInfo/stop/timeUTC\" invalid, trying \"/level1Product/instrument/settings/rxGainSetting/stopTimeUTC\"...\n";
936 path =
"/level1Product/instrument/settings/settingRecord/dataSegment segmentID/stopTimeUTC";
948 "/level1Product/productInfo/sceneInfo/rangeTime/firstPixel";
959 "/level1Product/productInfo/sceneInfo/rangeTime/lastPixel";
972 ossimString path =
"/level1Product/productSpecific/complexImageInfo";
973 std::vector<ossimRefPtr<ossimXmlNode> > xnodes;
979 if (xnodes[i].valid())
997 ossimString path =
"/level1Product/productSpecific/complexImageInfo";
998 std::vector<ossimRefPtr<ossimXmlNode> > xnodes;
1000 if ( xnodes.size() )
1004 if (xnodes[i].valid())
1022 ossimString path =
"/level1Product/processing/processingParameter";
1023 std::vector<ossimRefPtr<ossimXmlNode> > xnodes;
1025 if ( xnodes.size() )
1029 if (xnodes[i].valid())
1047 ossimString path =
"/level1Product/processing/processingParameter";
1048 std::vector<ossimRefPtr<ossimXmlNode> > xnodes;
1050 if ( xnodes.size() )
1054 if (xnodes[i].valid())
1072 "/level1Product/productInfo/imageDataInfo/imageRaster/numberOfColumns";
1080 "/level1Product/productInfo/imageDataInfo/imageRaster/numberOfRows";
1088 "/level1Product/productInfo/imageDataInfo/imageRaster/columnSpacing";
1096 "/level1Product/productInfo/imageDataInfo/imageRaster/rowSpacing";
1104 "/level1Product/productSpecific/complexImageInfo/projectedSpacingRange/slantRange";
1112 "/level1Product/productSpecific/complexImageInfo/projectedSpacingAzimuth";
1120 "/level1Product/productInfo/acquisitionInfo/imagingMode";
1128 "/level1Product/productInfo/acquisitionInfo/sensor";
1135 "/level1Product/productInfo/acquisitionInfo/polarisationMode";
1142 "/level1Product/productInfo/acquisitionInfo/polarisationList/polLayer";
1149 "/level1Product/calibration/calibrationConstant/calFactor";
1156 "/level1Product/instrument/radarParameters/centerFrequency";
1228 static const char MODULE[] =
"ossimplugins::ossimTerraSarProductDoc::initSceneCoord";
1236 if ( xdoc && sceneCoord )
1240 ossimString path =
"/level1Product/productInfo/sceneInfo/sceneCenterCoord";
1241 std::vector<ossimRefPtr<ossimXmlNode> > xnodes;
1244 if ( (xnodes.size() == 1) && (xnodes[0].valid()) )
1265 ossimString path2 =
"/level1Product/productInfo/sceneInfo/sceneCornerCoord";
1266 std::vector<ossimRefPtr<ossimXmlNode> > xnodes2;
1269 if ( xnodes2.size() )
1271 std::vector<InfoSceneCoord> tabIsc;
1275 if (xnodes2[i].valid())
1294 tabIsc.push_back(isc2);
1314 static const char MODULE[] =
1315 "ossimplugins::ossimTerraSarProductDoc::initImageNoise";
1323 if ( xdoc && noise )
1326 "/level1Product/noise/numberOfNoiseRecords";
1329 std::vector<ImageNoise> tabImageNoise;
1330 tabImageNoise.clear();
1335 "/level1Product/noise/imageNoise";
1336 std::vector<ossimRefPtr<ossimXmlNode> > xnodes;
1338 if ( xnodes.size() )
1340 const std::vector<ossimRefPtr<ossimXmlNode> >::size_type COUNT =
1370 << MODULE <<
" ERROR:\nNode not found: " << path
1375 path =
"noiseEstimate/validityRangeMin";
1385 << MODULE <<
" ERROR:\nNode not found: " << path
1389 path =
"noiseEstimate/validityRangeMax";
1399 << MODULE <<
" ERROR:\nNode not found: " << path
1403 path =
"noiseEstimate/referencePoint";
1413 << MODULE <<
" ERROR:\nNode not found: " << path
1417 path =
"noiseEstimate/polynomialDegree";
1427 << MODULE <<
" ERROR:\nNode not found: " << path
1436 ossimXmlNode::ChildListType::const_iterator child_iter = nodelist.begin();
1437 std::vector<double> polynomialCoefficients;
1438 while(child_iter != nodelist.end())
1440 double coefficient = ((*child_iter)->getText()).toDouble() ;
1441 polynomialCoefficients.push_back(coefficient);
1446 tabImageNoise.push_back(ev);
1465 << MODULE <<
" exit status = " << (result?
"true\n":
"false\n");
bool initSensorParams(const ossimXmlDocument *xdoc, SensorParams *sp) const
Method to initialize SensorParams object from TerraSAR product xml file.
This class represent an ephemeris in Geographic coordinates system.
bool getSceneCenterLon(const ossimXmlDocument *xdoc, ossimString &s) const
longitude
void set_refRow(ossim_uint32 value)
bool initNoise(const ossimXmlDocument *xdoc, Noise *pos) const
Method to initialize Noise object from TerraSAR product xml file.
bool getSceneId(const ossimXmlDocument *xdoc, ossimString &s) const
bool getReferencePoint(const ossimXmlDocument *xdoc, ossimString &s) const
void set_sightDirection(SightDirection sight)
This class represents a date and time in the civil format.
static ossimString upcase(const ossimString &aString)
This class represents an InfoSceneCoord.
bool getProjection(const ossimXmlDocument *xdoc, ossimString &s) const
bool isTerraSarX(const ossimXmlDocument *xdoc) const
Checks for node /level1Product/generalHeader/mission containing "TSX-1".
This class represents Scence coordinate.
void findChildNodes(const ossimString &rel_xpath, ossimXmlNode::ChildListType &nodelist) const
ossimTerraSarProductDoc()
default constructor
bool getAzimuthStartTime(const ossimXmlDocument *xdoc, ossimString &s) const
bool getNumberOfRangeLooks(const ossimXmlDocument *xdoc, ossimString &s) const
bool isProductGeoreferenced(const ossimXmlDocument *xdoc) const
bool getPolLayerList(const ossimXmlDocument *xdoc, std::vector< ossimString > &s) const
bool getSceneAverageHeight(const ossimXmlDocument *xdoc, ossimString &s) const
bool getNumberOfAzimuthLooks(const ossimXmlDocument *xdoc, ossimString &s) const
void set_numberOfSceneCoord(const ossim_uint32 &numberOfSceneCoord)
bool getSceneCenterRefColumn(const ossimXmlDocument *xdoc, ossimString &s) const
one based
bool getProjectedSpacingAzimuth(const ossimXmlDocument *xdoc, ossimString &s) const
bool getRangeGateFirstPixel(const ossimXmlDocument *xdoc, ossimString &s) const
one based???
bool getImagingMode(const ossimXmlDocument *xdoc, ossimString &s) const
bool getSceneCenterRangeTime(const ossimXmlDocument *xdoc, ossimString &s) const
bool getCalFactor(const ossimXmlDocument *xdoc, std::vector< ossimString > &s) const
void set_lin_direction(int dir)
void set_refColumn(ossim_uint32 value)
void set_validityRangeMin(double value)
bool getRangeFirstPixelTime(const ossimXmlDocument *xdoc, ossimString &s) const
void set_validityRangeMax(double value)
void set_lat(double value)
bool getRangeGateLastPixel(const ossimXmlDocument *xdoc, ossimString &s) const
one based???
ossim_float64 hgt
Height in meters above the ellipsiod.
void set_imageNoise(const std::vector< ImageNoise > &image_noise)
ossim_uint32 toUInt32() const
bool getRadarCenterFrequency(const ossimXmlDocument *xdoc, ossimString &s) const
bool iso8601TimeStringToCivilDate(const std::string &dataString, CivilDateTime &outputDate)
Converts date string from ISO 8601 format to CivilDateTime.
This class handles the sensor parameters.
bool getPolarisationMode(const ossimXmlDocument *xdoc, ossimString &s) const
bool getProjectedSpacingSlantRange(const ossimXmlDocument *xdoc, ossimString &s) const
void set_centerSceneCoord(const InfoSceneCoord ¢erSceneCoord)
void set_semiMinorAxis(double value)
bool getRadiometricCorrection(const ossimXmlDocument *xdoc, ossimString &s) const
bool getLookDirection(const ossimXmlDocument *xdoc, ossimString &s) const
std::vector< ossimRefPtr< ossimXmlNode > > ChildListType
ossim_int32 toInt32() const
bool getMission(const ossimXmlDocument *xdoc, ossimString &s) const
bool getImageDataStrartWith(const ossimXmlDocument *xdoc, ossimString &s) const
bool initPlatformPosition(const ossimXmlDocument *xdoc, PlatformPosition *pos) const
Method to initialize PlatformPosition object from TerraSAR product xml file.
bool getAttributeValue(ossimString &value, const ossimString &name) const
This class represents an ephemeris.
bool geNumberOfLayers(const ossimXmlDocument *xdoc, ossimString &s) const
bool getProductVariant(const ossimXmlDocument *xdoc, ossimString &s) const
This class represents an ImageNoise.
void set_azimuthTimeUTC(ossimString value)
unsigned int ossim_uint32
void set_polynomialDegree(unsigned int value)
ossim_float64 toFloat64() const
void set_semiMajorAxis(double value)
bool initTiePoints(const ossimXmlDocument *xdoc, std::list< ossimGpt > &gcp, std::list< ossimDpt > &icp) const
Method to initialize image tie points from TerraSAR product xml file.
bool initSceneCoord(const ossimXmlDocument *xdoc, SceneCoord *pos) const
Method to initialize IncidenceAngles object from TerraSAR product xml file.
~ossimTerraSarProductDoc()
destructor
void set_lon(double value)
This class represents an Noise.
bool getCommonRsf(const ossimXmlDocument *xdoc, ossimString &s) const
range sampling rate
void set_nRangeLook(double look)
bool getCommonPrf(const ossimXmlDocument *xdoc, ossimString &s) const
bool getColumnSpacing(const ossimXmlDocument *xdoc, ossimString &s) const
bool initImageSize(const ossimXmlDocument *xdoc, ossimIpt &imageSize) const
Method to initialize image size from TerraSAR product xml file.
bool getNumberOfColumns(const ossimXmlDocument *xdoc, ossimString &s) const
bool getImageFile(const ossimXmlDocument *xdoc, ossimString &s) const
void set_timeUTC(const ossimString &value)
bool getSceneCenterLat(const ossimXmlDocument *xdoc, ossimString &s) const
latitude
bool getNumberOfRows(const ossimXmlDocument *xdoc, ossimString &s) const
bool getGenerationTime(const ossimXmlDocument *xdoc, ossimString &s) const
bool getRowSpacing(const ossimXmlDocument *xdoc, ossimString &s) const
bool findFirstNode(const ossimString &path, ossimRefPtr< ossimXmlNode > node, ossimString &s)
Finds from node with path from node and initializes string.
bool getSceneCenterRefRow(const ossimXmlDocument *xdoc, ossimString &s) const
one based
bool getAzimuthStopTime(const ossimXmlDocument *xdoc, ossimString &s) const
bool getAcquisitionSensor(const ossimXmlDocument *xdoc, ossimString &s) const
bool getOrbitDirection(const ossimXmlDocument *xdoc, ossimString &s) const
void set_nAzimuthLook(double look)
void set_cornersSceneCoord(const std::vector< InfoSceneCoord > &cornersSceneCoord)
bool getPath(const ossimString &path, const ossimXmlDocument *xdoc, ossimString &s)
Gets path from doc and initializes string.
void findNodes(const ossimString &xpath, std::vector< ossimRefPtr< ossimXmlNode > > &nodelist) const
Appends any matching nodes to the list supplied (should be empty):
void set_rangeTime(double value)
bool initGsd(const ossimXmlDocument *xdoc, ossimDpt &gsd) const
Method to initialize gsd from TerraSAR product xml file.
void set_col_direction(int dir)
This class represents a date.
void set_incidenceAngle(double value)
void set_referencePoint(double value)
void set_numberOfNoiseRecords(const ossim_int32 &numberOfNoiseRecords)
bool getProductType(const ossimXmlDocument *xdoc, ossimString &s) const
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
void set_polynomialCoefficients(const std::vector< double > &value)
bool getRadarFrequency(const ossimXmlDocument *xdoc, ossimString &s) const
bool getRangeLastPixelTime(const ossimXmlDocument *xdoc, ossimString &s) const
bool getSceneCenterAzimuthTime(const ossimXmlDocument *xdoc, ossimString &s) const