45 static ossimTrace traceDebug(
"ossimRadarSat2ProductDoc:debug");
48 ossimRadarSat2ProductDoc::ossimRadarSat2ProductDoc()
52 ossimRadarSat2ProductDoc::~ossimRadarSat2ProductDoc()
62 getSatellite(xdoc, s);
63 if (s.
upcase() ==
"RADARSAT-2")
71 bool ossimRadarSat2ProductDoc::initPlatformPosition(
74 static const char MODULE[] =
75 "ossimRadarSat2ProductDoc::initPlatformPosition";
87 "/product/sourceAttributes/orbitAndAttitude/orbitInformation/stateVector";
88 std::vector<ossimRefPtr<ossimXmlNode> > xnodes;
92 const std::vector<ossimRefPtr<ossimXmlNode> >::size_type COUNT =
129 << MODULE <<
" ERROR:\nNode not found: " << path
144 << MODULE <<
" ERROR:\nNode not found: " << path
159 << MODULE <<
" ERROR:\nNode not found: " << path
174 << MODULE <<
" ERROR:\nNode not found: " << path
189 << MODULE <<
" ERROR:\nNode not found: " << path
204 << MODULE <<
" ERROR:\nNode not found: " << path
219 << MODULE <<
" ERROR:\nNode not found: " << path
237 <<
" DEBUG\nnbrData: " << nbrData <<
"\n";
239 pos->
setData(ephemeris, nbrData);
243 for (
int idx = 0; idx < nbrData; ++idx)
245 delete ephemeris[idx];
255 << MODULE <<
" ERROR:\nNodes not found: " << path << std::endl;
267 << MODULE <<
" exit status = " << (result?
"true\n":
"false\n");
283 if ( getNumberOfAzimuthLooks(xdoc, s) )
297 if ( getNominalPrf(xdoc, prf) )
308 if ( getAdcSamplingRate(xdoc, s) )
318 if ( getRadarCenterFrequency(xdoc, s) )
320 const double CLUM = 2.99792458e+8 ;
321 double waveLength = CLUM / s.
toDouble();
330 if ( getLineTimeOrdering(xdoc, s) )
347 if ( getPixelTimeOrdering(xdoc, s) )
364 if ( getAntennaPointing(xdoc, s) )
381 if ( getSemiMajorAxis(xdoc, s) )
391 if ( getSemiMinorAxis(xdoc, s) )
402 if ( getNumberOfRangeLooks(xdoc, s) )
428 if ( getNumberOfSamplesPerLine(xdoc, s) )
436 if ( getNumberOfLines(xdoc, s) )
453 <<
"ossimRadarSat2ProductDoc::initImageSize DEBUG:\nimage size: " 455 <<
"\nexit status = " << (result?
"true":
"false")
470 if ( getSampledPixelSpacing(xdoc, s) )
478 if ( getSampledLineSpacing(xdoc, s) )
495 <<
"ossimRadarSat2ProductDoc::initGsd DEBUG:\ngsd: " << gsd
496 <<
"\nexit status = " << (result?
"true":
"false")
504 std::list<ossimGpt>& gcp,
505 std::list<ossimDpt>& icp)
const 507 static const char MODULE[] =
"ossimRadarSat2ProductDoc::initTiePoints";
518 ossimString path =
"/product/imageAttributes/geographicInformation/geolocationGrid/imageTiePoint";
519 std::vector<ossimRefPtr<ossimXmlNode> > xnodes;
525 if (xnodes[i].valid())
551 <<
"dpt" << i <<
": " << dpt
590 <<
"gpt" << i <<
": " << gpt
618 << MODULE <<
" DEBUG: exit status = " << (result?
"true":
"false")
628 ossimString path =
"/product/imageAttributes/geographicInformation/rationalFunctions/satellite";
632 ossimString searchbiasError =
"/product/imageAttributes/geographicInformation/rationalFunctions/biasError";
633 ossimString searchrandomError =
"/product/imageAttributes/geographicInformation/rationalFunctions/randomError";
634 ossimString searchlineFitQuality =
"/product/imageAttributes/geographicInformation/rationalFunctions/lineFitQuality";
635 ossimString searchpixelFitQuality =
"/product/imageAttributes/geographicInformation/rationalFunctions/pixelFitQuality";
636 ossimString searchlineOffset =
"/product/imageAttributes/geographicInformation/rationalFunctions/lineOffset";
637 ossimString searchpixelOffset =
"/product/imageAttributes/geographicInformation/rationalFunctions/pixelOffset";
638 ossimString searchlatitudeOffset =
"/product/imageAttributes/geographicInformation/rationalFunctions/latitudeOffset";
639 ossimString searchlongitudeOffset =
"/product/imageAttributes/geographicInformation/rationalFunctions/longitudeOffset";
640 ossimString searchheightOffset =
"/product/imageAttributes/geographicInformation/rationalFunctions/heightOffset";
641 ossimString searchlineScale =
"/product/imageAttributes/geographicInformation/rationalFunctions/lineScale";
642 ossimString searchpixelScale =
"/product/imageAttributes/geographicInformation/rationalFunctions/pixelScale";
643 ossimString searchlatitudeScale =
"/product/imageAttributes/geographicInformation/rationalFunctions/latitudeScale";
644 ossimString searchlongitudeScale =
"/product/imageAttributes/geographicInformation/rationalFunctions/longitudeScale";
645 ossimString searchheightScale =
"/product/imageAttributes/geographicInformation/rationalFunctions/heightScale";
647 ossimString searchlineNumeratorCoefficients =
"/product/imageAttributes/geographicInformation/rationalFunctions/lineNumeratorCoefficients";
648 ossimString searchlineDenominatorCoefficients =
"/product/imageAttributes/geographicInformation/rationalFunctions/lineDenominatorCoefficients";
649 ossimString searchpixelNumeratorCoefficients =
"/product/imageAttributes/geographicInformation/rationalFunctions/pixelNumeratorCoefficients";
650 ossimString searchpixelDenominatorCoefficients =
"/product/imageAttributes/geographicInformation/rationalFunctions/pixelDenominatorCoefficients";
669 std::vector<ossimString> lineNumeratorCoefficientsStr;
670 std::vector<ossimString> lineDenominatorCoefficientsStr;
671 std::vector<ossimString> pixelNumeratorCoefficientsStr;
672 std::vector<ossimString> pixelDenominatorCoefficientsStr;
676 double biasError = 0;
677 double randomError = 0;
678 double lineFitQuality = 0;
679 double pixelFitQuality = 0;
680 double lineOffset = 0;
681 double pixelOffset = 0;
682 double latitudeOffset = 0;
683 double longitudeOffset = 0;
684 double heightOffset = 0;
685 double lineScale = 0;
686 double pixelScale = 0;
687 double latitudeScale = 0;
688 double longitudeScale = 0;
689 double heightScale = 0;
691 vector<double> lineNumeratorCoefficients = vector<double>(20,0);
692 vector<double> lineDenominatorCoefficients = vector<double>(20,0);
693 vector<double> pixelNumeratorCoefficients = vector<double>(20,0);
694 vector<double> pixelDenominatorCoefficients = vector<double>(20,0);
700 bool rs2Check = isRadarSat2(xdoc);
705 biasError = biasErrorStr.
toDouble();
709 randomError = randomErrorStr.
toDouble();
711 if (!
ossim::getPath(searchlineFitQuality, xdoc, lineFitQualityStr))
713 lineFitQuality = lineFitQualityStr.
toDouble();
715 if (!
ossim::getPath(searchpixelFitQuality, xdoc, pixelFitQualityStr))
717 pixelFitQuality = pixelFitQualityStr.
toDouble();
721 lineOffset = lineOffsetStr.
toDouble();
725 pixelOffset = pixelOffsetStr.
toDouble();
727 if (!
ossim::getPath(searchlatitudeOffset, xdoc, latitudeOffsetStr))
729 latitudeOffset = latitudeOffsetStr.
toDouble();
731 if (!
ossim::getPath(searchlongitudeOffset, xdoc, longitudeOffsetStr))
733 longitudeOffset = longitudeOffsetStr.
toDouble();
737 heightOffset = heightOffsetStr.
toDouble();
743 lineScale = lineScaleStr.
toDouble();
748 pixelScale = pixelScaleStr.
toDouble();
753 latitudeScale = latitudeScaleStr.
toDouble();
757 if (!
ossim::getPath(searchlongitudeScale, xdoc, longitudeScaleStr))
759 longitudeScale = longitudeScaleStr.
toDouble();
764 heightScale = heightScaleStr.
toDouble();
773 if (!
ossim::getPath(searchlineNumeratorCoefficients, xdoc, lineNumeratorCoefficientsStr))
777 string lineNumeratorCoefficientsStr_N = lineNumeratorCoefficientsStr[0];
781 for (
int i=0; i < 20; i ++)
784 lineNumeratorCoefficients[i] = val;
789 if (!
ossim::getPath(searchlineDenominatorCoefficients, xdoc, lineDenominatorCoefficientsStr))
793 string lineDenominatorCoefficientsStr_N = lineDenominatorCoefficientsStr[0];
798 for (
int i=0; i < 20; i ++)
801 lineDenominatorCoefficients[i] = val;
806 if (!
ossim::getPath(searchpixelNumeratorCoefficients, xdoc, pixelNumeratorCoefficientsStr))
809 string pixelNumeratorCoefficientsStr_N = pixelNumeratorCoefficientsStr[0];
814 for (
int i=0; i < 20; i ++)
817 pixelNumeratorCoefficients[i] = val;
822 if (!
ossim::getPath(searchpixelDenominatorCoefficients, xdoc, pixelDenominatorCoefficientsStr))
825 string pixelDenominatorCoefficientsStr_N = pixelDenominatorCoefficientsStr[0];
830 for (
int i=0; i < 20; i ++)
833 pixelDenominatorCoefficients[i] = val;
864 ossimString path =
"/product/sourceAttributes/satellite";
873 ossimString path =
"/product/sourceAttributes/sensor";
877 bool ossimRadarSat2ProductDoc::getBeamModeMnemonic(
880 ossimString path =
"/product/sourceAttributes/beamModeMnemonic";
887 ossimString path =
"/product/sourceAttributes/imageId";
897 ossimString path =
"/product/imageAttributes/fullResolutionImageData";
908 bool ossimRadarSat2ProductDoc::getAcquisitionType(
912 "/product/sourceAttributes/radarParameters/acquisitionType";
916 bool ossimRadarSat2ProductDoc::getRadarCenterFrequency(
920 "/product/sourceAttributes/radarParameters/radarCenterFrequency";
934 std::vector<ossimString> v;
935 if ( getPulseRepetitionFrequency(xdoc, v) )
940 std::vector<ossimString>::const_iterator i = v.begin();
943 d += (*i).toDouble();
953 <<
"ossimRadarSat2ProductDoc::getNominalPrf DEBUG:\nprf = " 954 << prf <<
"\nexit status = " << (result?
"true":
"false")
960 bool ossimRadarSat2ProductDoc::getPulseRepetitionFrequency(
964 "/product/sourceAttributes/radarParameters/pulseRepetitionFrequency";
968 bool ossimRadarSat2ProductDoc::getAntennaPointing(
972 "/product/sourceAttributes/radarParameters/antennaPointing";
976 bool ossimRadarSat2ProductDoc::getAdcSamplingRate(
980 "/product/sourceAttributes/radarParameters/adcSamplingRate";
984 bool ossimRadarSat2ProductDoc::getPassDirection(
988 "/product/sourceAttributes/orbitAndAttitude/orbitInformation/passDirection";
992 bool ossimRadarSat2ProductDoc::getProductType(
996 "/product/imageGenerationParameters/generalProcessingInformation/productType";
1000 bool ossimRadarSat2ProductDoc::getZeroDopplerTimeFirstLine(
1004 "/product/imageGenerationParameters/sarProcessingInformation/zeroDopplerTimeFirstLine";
1008 bool ossimRadarSat2ProductDoc::getNumberOfRangeLooks(
1012 "/product/imageGenerationParameters/sarProcessingInformation/numberOfRangeLooks";
1016 bool ossimRadarSat2ProductDoc::getNumberOfAzimuthLooks(
1020 "/product/imageGenerationParameters/sarProcessingInformation/numberOfAzimuthLooks";
1024 bool ossimRadarSat2ProductDoc::getSlantRangeNearEdge(
1028 "/product/imageGenerationParameters/sarProcessingInformation/slantRangeNearEdge";
1032 bool ossimRadarSat2ProductDoc::getZeroDopplerAzimuthTime(
1036 "/product/imageGenerationParameters/slantRangeToGroundRange/zeroDopplerAzimuthTime";
1040 bool ossimRadarSat2ProductDoc::getGroundRangeOrigin(
1044 "/product/imageGenerationParameters/slantRangeToGroundRange/groundRangeOrigin";
1048 bool ossimRadarSat2ProductDoc::getGroundToSlantRangeCoefficients(
1052 "/product/imageGenerationParameters/slantRangeToGroundRange/groundToSlantRangeCoefficients";
1056 bool ossimRadarSat2ProductDoc::getSemiMajorAxis(
1060 "/product/imageAttributes/geographicInformation/referenceEllipsoidParameters/semiMajorAxis";
1064 bool ossimRadarSat2ProductDoc::getSemiMinorAxis(
1068 "/product/imageAttributes/geographicInformation/referenceEllipsoidParameters/semiMinorAxis";
1072 bool ossimRadarSat2ProductDoc::getNumberOfSamplesPerLine(
1076 "/product/imageAttributes/rasterAttributes/numberOfSamplesPerLine";
1080 bool ossimRadarSat2ProductDoc::getNumberOfLines(
1084 "/product/imageAttributes/rasterAttributes/numberOfLines";
1088 bool ossimRadarSat2ProductDoc::getSampledPixelSpacing(
1092 "/product/imageAttributes/rasterAttributes/sampledPixelSpacing";
1096 bool ossimRadarSat2ProductDoc::getSampledLineSpacing(
1100 "/product/imageAttributes/rasterAttributes/sampledLineSpacing";
1104 bool ossimRadarSat2ProductDoc::getLineTimeOrdering(
1108 "/product/imageAttributes/rasterAttributes/lineTimeOrdering";
1112 bool ossimRadarSat2ProductDoc::getPixelTimeOrdering(
1116 "/product/imageAttributes/rasterAttributes/pixelTimeOrdering";
1120 bool ossimRadarSat2ProductDoc::getIncidenceAngleNearRange(
1124 "/product/imageGenerationParameters/sarProcessingInformation/incidenceAngleNearRange";
1128 bool ossimRadarSat2ProductDoc::getIncidenceAngleFarRange(
1132 "/product/imageGenerationParameters/sarProcessingInformation/incidenceAngleFarRange ";
1136 bool ossimRadarSat2ProductDoc::getSatelliteHeight(
1140 "/product/imageGenerationParameters/sarProcessingInformation/satelliteHeight";
1144 bool ossimRadarSat2ProductDoc::getGeodeticTerrainHeight(
1148 "/product/imageAttributes/geographicInformation/referenceEllipsoidParameters/geodeticTerrainHeight";
This class represent an ephemeris in Geographic coordinates system.
void set_sightDirection(SightDirection sight)
This class represents a date and time in the civil format.
static ossimString upcase(const ossimString &aString)
std::basic_stringstream< char > stringstream
Class for char mixed input and output memory streams.
void set_lin_direction(int dir)
ossim_float64 hgt
Height in meters above the ellipsiod.
vector< double > pixelNumeratorCoefficients
bool iso8601TimeStringToCivilDate(const std::string &dataString, CivilDateTime &outputDate)
Converts date string from ISO 8601 format to CivilDateTime.
This class handles the sensor parameters.
const ossimRefPtr< ossimXmlNode > & findFirstNode(const ossimString &rel_xpath) const
void set_semiMinorAxis(double value)
This class represents an ephemeris.
unsigned int ossim_uint32
ossim_float64 toFloat64() const
void set_semiMajorAxis(double value)
static ossimString downcase(const ossimString &aString)
void set_nRangeLook(double look)
vector< double > lineNumeratorCoefficients
vector< double > pixelDenominatorCoefficients
vector< double > lineDenominatorCoefficients
bool findFirstNode(const ossimString &path, ossimRefPtr< ossimXmlNode > node, ossimString &s)
Finds from node with path from node and initializes string.
void set_nAzimuthLook(double look)
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_col_direction(int dir)
This class represents a date.
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)