38 static const char NUMBER_SRGR_COEFFICIENTS_KW[] =
"sr_gr_coeffs_count";
39 static const char LOAD_FROM_PRODUCT_FILE_KW[] =
"load_from_product_file_flag";
40 static const char PRODUCT_XML_FILE_KW[] =
"product_xml_filename";
41 static const char SR_GR_R0_KW[] =
"sr_gr_r0";
42 static const char SC_RT_KW[] =
"sc_rt";
43 static const char SR_GR_SF_KW[] =
"sc_gr_sf";
44 static const char ALT_SR_GR_COEFFICIENT0_KW[] =
"alt_sr_gr_coeff0";
45 static const char ALT_SR_GR_COEFFICIENT1_KW[] =
"alt_sr_gr_coeff1";
46 static const char ALT_SR_GR_COEFFICIENT2_KW[] =
"alt_sr_gr_coeff2";
47 static const char PRODUCT_TYPE[] =
"product_type";
48 static const char RADIOMETRIC_CORRECTION[] =
"radiometricCorrection";
49 static const char AZ_START_TIME[] =
"azimuth_start_time";
50 static const char AZ_STOP_TIME[] =
"azimuth_stop_time";
51 static const char RG_FIRST_TIME[] =
"range_first_time";
52 static const char RG_LAST_TIME[] =
"range_last_time";
53 static const char GENERATION_TIME[] =
"generation_time";
54 static const char ACQUISITION_INFO[] =
"acquisitionInfo.";
55 static const char IMAGING_MODE[] =
"imagingMode";
56 static const char SENSOR[] =
"sensor";
57 static const char LOOK_DIRECTION[] =
"lookDirection";
58 static const char POLARISATION_MODE[] =
"polarisationMode";
59 static const char POLARISATION_LIST[] =
"polarisationList";
60 static const char NUMBER_LAYERS[] =
"numberOfLayers";
61 static const char CALIBRATION_CALFACTOR[] =
"calibration.calibrationConstant.calFactor";
62 static const char RADAR_FREQUENCY[] =
"radarFrequency";
65 static ossimTrace traceDebug(
"ossimTerraSarModel:debug");
71 ossimGeometricSarSensorModel);
79 _sceneCenterRangeTime(0.0),
80 _SrToGr_scaling_factor(0.0),
83 _radiometricCorrection(),
88 _polLayer(
"UNDEFINED"),
106 _SrToGr_R0(rhs._SrToGr_R0),
107 _SrToGr_exponent(rhs._SrToGr_exponent),
108 _SrToGr_coeffs(rhs._SrToGr_coeffs),
109 _sceneCenterRangeTime(rhs._sceneCenterRangeTime),
110 _SrToGr_scaling_factor(rhs._SrToGr_scaling_factor),
111 _alt_srgr_coefset(rhs._alt_srgr_coefset),
112 _productType(rhs._productType),
113 _radiometricCorrection(rhs._radiometricCorrection),
114 _imagingMode(rhs._imagingMode),
115 _acquisitionSensor(rhs._acquisitionSensor),
116 _lookDirection(rhs._lookDirection),
117 _polarisationMode(rhs._polarisationMode),
118 _polLayer(rhs._polLayer),
119 _polLayerList(rhs._polLayerList),
122 _calFactor(rhs._calFactor),
123 _radarFrequency(rhs._radarFrequency),
124 _numberOfLayers(rhs._numberOfLayers),
125 _azStartTime(rhs._azStartTime),
126 _azStopTime(rhs._azStopTime),
127 _rgFirstPixelTime(rhs._rgFirstPixelTime),
128 _rgLastPixelTime(rhs._rgLastPixelTime),
129 _generationTime(rhs._generationTime)
171 const double c = 2.99792458e+8;
172 double tn = _alt_srgr_coefset[0] + _alt_srgr_coefset[1] * col + _alt_srgr_coefset[2] * col*col ;
178 static const char MODULE[] =
"ossimplugins::ossimTerraSarModel::open() -- ";
180 _imageFilename = file.
expand();
183 bool foundMetadataFile = findTSXLeader(file, xmlfile);
184 while (foundMetadataFile)
190 if ( !xdoc->
openFile(xmlfile) )
break;
198 if ( s.
upcase() ==
"MAP" )
break;
205 theImageClipRect =
ossimDrect(0, 0, theImageSize.x-1, theImageSize.y-1);
206 theSubImageOffset.x = 0.0;
207 theSubImageOffset.y = 0.0;
216 if (!tsDoc.
initGsd(xdoc.
get(), theGSD))
break;
217 theMeanGSD = (theGSD.x + theGSD.y)/2.0;
219 initSRGR(xdoc.
get(), tsDoc);
221 if (!initPlatformPosition(xdoc.
get(), tsDoc))
break;
222 if (!initSensorParams(xdoc.
get(), tsDoc))
break;
223 if (!initRefPoint(xdoc.
get(), tsDoc))
break;
226 if (!initAcquisitionInfo(xdoc.
get(), tsDoc))
break;
227 if (!initNoise(xdoc.
get(), tsDoc))
break;
228 if (!getPolLayerFromImageFile(xdoc.
get(), file))
break;
229 if (!initCalibration(xdoc.
get(), tsDoc))
break;
245 if (!initSceneCoord(xdoc.
get(), tsDoc))
break;
249 _productXmlFile = xmlfile;
257 lineSampleToWorld(theImageClipRect.ul(), ul);
258 lineSampleToWorld(theImageClipRect.ur(), ur);
259 lineSampleToWorld(theImageClipRect.lr(), lr);
260 lineSampleToWorld(theImageClipRect.ll(), ll);
261 setGroundRect(ul, ur, lr, ll);
265 <<
"> for image <"<<file<<
">."<<std::endl;
268 <<
"4 corners from Projection: " <<
"\n" 269 << ul <<
", " << ur <<
", " << lr <<
", " << ll <<
"\n";
273 if (!createReplacementOCG())
break;
283 const char* prefix)
const 285 static const char MODULE[] =
"ossimplugins::ossimTerraSarModel::saveState";
294 if ( (_alt_srgr_coefset.size() == 3) &&
295 ( _SrToGr_exponent.size() == _SrToGr_coeffs.size()) )
298 kwl.
add(prefix, SR_GR_R0_KW, _SrToGr_R0);
305 kwl.
add(prefix, NUMBER_SRGR_COEFFICIENTS_KW, COUNT);
312 kwl.
add(prefix, kw, _SrToGr_exponent[i]);
315 kwl.
add(prefix, kw, _SrToGr_coeffs[i]);
317 kwl.
add(prefix, SC_RT_KW, _sceneCenterRangeTime);
318 kwl.
add(prefix, SR_GR_SF_KW, _SrToGr_scaling_factor);
319 kwl.
add(prefix, ALT_SR_GR_COEFFICIENT0_KW, _alt_srgr_coefset[0]);
320 kwl.
add(prefix, ALT_SR_GR_COEFFICIENT1_KW, _alt_srgr_coefset[1]);
321 kwl.
add(prefix, ALT_SR_GR_COEFFICIENT2_KW, _alt_srgr_coefset[2]);
322 kwl.
add(prefix, PRODUCT_XML_FILE_KW, _productXmlFile.c_str());
336 kwl.
add(prefix, PRODUCT_TYPE, _productType.c_str());
338 kwl.
add(prefix, RADIOMETRIC_CORRECTION, _radiometricCorrection.c_str());
342 kwl.
add(prefix, kw2, _imagingMode.
c_str());
344 kwl.
add(prefix, kw2, _acquisitionSensor.
c_str());
345 kw2 = kw + LOOK_DIRECTION;
346 kwl.
add(prefix, kw2, _lookDirection.
c_str());
347 kw2 = kw + POLARISATION_MODE;
348 kwl.
add(prefix, kw2, _polarisationMode.
c_str());
349 kw2 = kw + POLARISATION_LIST;
355 kwl.
add(prefix, kw3, _polLayerList[i].c_str());
358 if( _polLayer !=
"UNDEFINED")
361 for(
ossim_uint32 idx = 0 ; idx < _polLayerList.size(); ++idx)
363 if(_polLayerList[idx] == _polLayer)
368 _noise[polLayerIdx].saveState(kwl,prefix);
374 _noise[i].saveState(kwl,prefix);
377 _sceneCoord->saveState(kwl,prefix);
384 kwl.
add(prefix, AZ_START_TIME, _azStartTime.c_str());
385 kwl.
add(prefix, AZ_STOP_TIME, _azStopTime.c_str());
386 kwl.
add(prefix, RG_FIRST_TIME, _rgFirstPixelTime.c_str());
387 kwl.
add(prefix, RG_LAST_TIME, _rgLastPixelTime.c_str());
389 kwl.
add(prefix, GENERATION_TIME, _generationTime.c_str());
394 << MODULE <<
" exit status = " << (result?
"true":
"false\n")
404 static const char MODULE[] =
"ossimplugins::ossimTerraSarModel::loadState";
411 const char* lookup = 0;
426 lookup = kwl.
find(prefix, PRODUCT_XML_FILE_KW);
430 _productXmlFile = lookup;
433 lookup = kwl.
find(prefix, LOAD_FROM_PRODUCT_FILE_KW);
440 return open(_productXmlFile);
450 theBoundGndPolygon.clear();
457 lookup = kwl.
find(prefix,SR_GR_R0_KW);
469 <<
"\nRequired keyword not found: " 470 << SR_GR_R0_KW <<
"\n";
476 lookup = kwl.
find(prefix, NUMBER_SRGR_COEFFICIENTS_KW);
488 <<
"\nRequired keyword not found: " 489 << NUMBER_SRGR_COEFFICIENTS_KW <<
"\n";
498 _SrToGr_exponent.resize(count);
499 _SrToGr_coeffs.resize(count);
513 lookup = kwl.
find(prefix, kw);
517 _SrToGr_exponent[i] = s.
toInt();
525 <<
"\nRequired keyword not found: " 534 lookup = kwl.
find(prefix, kw);
546 <<
"\nRequired keyword not found: " 555 lookup = kwl.
find(prefix, SC_RT_KW);
559 _sceneCenterRangeTime = s.
toDouble();
567 <<
"\nRequired keyword not found: " 573 lookup = kwl.
find(prefix, SR_GR_SF_KW);
577 _SrToGr_scaling_factor = s.
toDouble();
585 <<
"\nRequired keyword not found: " 586 << SR_GR_SF_KW <<
"\n";
591 lookup = kwl.
find(prefix, ALT_SR_GR_COEFFICIENT0_KW);
595 _alt_srgr_coefset[0] = s.
toDouble();
603 <<
"\nRequired keyword not found: " 604 << ALT_SR_GR_COEFFICIENT0_KW <<
"\n";
608 lookup = kwl.
find(prefix, ALT_SR_GR_COEFFICIENT1_KW);
612 _alt_srgr_coefset[1] = s.
toDouble();
620 <<
"\nRequired keyword not found: " 621 << ALT_SR_GR_COEFFICIENT1_KW <<
"\n";
625 lookup = kwl.
find(prefix, ALT_SR_GR_COEFFICIENT2_KW);
629 _alt_srgr_coefset[2] = s.
toDouble();
637 <<
"\nRequired keyword not found: " 638 << ALT_SR_GR_COEFFICIENT2_KW <<
"\n";
643 lookup = kwl.
find(prefix, PRODUCT_XML_FILE_KW);
646 _productXmlFile = lookup;
654 <<
"\nRequired keyword not found: " 655 << PRODUCT_XML_FILE_KW <<
"\n";
669 _noise =
new Noise();
671 if ( _noise->loadState(kwl, prefix) == false )
677 <<
"\n_noise->loadState failed!\n";
690 if ( _sceneCoord->loadState(kwl,prefix) == false )
696 <<
"\n__sceneCoord->loadState failed!\n";
701 lookup = kwl.
find(prefix, CALIBRATION_CALFACTOR);
709 _calFactor[idx] = tempValue.
toDouble();
719 <<
"\nRequired keyword not found: " 720 << CALIBRATION_CALFACTOR <<
"\n";
725 lookup = kwl.
find(prefix, RADAR_FREQUENCY);
737 <<
"\nRequired keyword not found: " 738 << RADAR_FREQUENCY <<
"\n";
743 lookup = kwl.
find(prefix, AZ_START_TIME);
746 _azStartTime = lookup;
754 <<
"\nRequired keyword not found: " 755 << AZ_START_TIME <<
"\n";
760 lookup = kwl.
find(prefix, AZ_STOP_TIME);
763 _azStopTime = lookup;
771 <<
"\nRequired keyword not found: " 772 << AZ_STOP_TIME <<
"\n";
777 lookup = kwl.
find(prefix, RG_FIRST_TIME);
780 _rgFirstPixelTime = lookup;
788 <<
"\nRequired keyword not found: " 789 << RG_FIRST_TIME <<
"\n";
794 lookup = kwl.
find(prefix, RG_LAST_TIME);
797 _rgLastPixelTime = lookup;
805 <<
"\nRequired keyword not found: " 806 << RG_LAST_TIME <<
"\n";
812 lookup = kwl.
find(prefix, GENERATION_TIME);
815 _generationTime = lookup;
823 <<
"\nRequired keyword not found: " 824 << GENERATION_TIME <<
"\n";
832 << MODULE <<
" exit status = " << (result?
"true":
"false\n")
841 static const char MODULE[] =
"ossimplugins::ossimTerraSarModel::print";
843 std::ios_base::fmtflags f = out.flags();
845 out << setprecision(15) << setiosflags(ios::fixed)
846 <<
"\nossimTerraSarModelclass data members:\n" 847 << SR_GR_R0_KW << _SrToGr_R0 <<
"\n";
852 for(i = 0; i < _SrToGr_exponent.size(); ++i)
858 out << kw << _SrToGr_exponent[i] <<
"\n";
861 kw1 =
"sr_gr_coeffs_";
862 for(i = 0; i < _SrToGr_coeffs.size(); ++i)
868 out << kw << _SrToGr_coeffs[i] <<
"\n";
871 out << SC_RT_KW <<
": " << _sceneCenterRangeTime <<
"\n" 872 << SR_GR_SF_KW <<
": " << _SrToGr_scaling_factor <<
"\n" 873 << ALT_SR_GR_COEFFICIENT0_KW <<
": " << _alt_srgr_coefset[0] <<
"\n" 874 << ALT_SR_GR_COEFFICIENT1_KW <<
": " <<_alt_srgr_coefset[1] <<
"\n" 875 << ALT_SR_GR_COEFFICIENT2_KW <<
": " <<_alt_srgr_coefset[2] <<
"\n" 876 << PRODUCT_XML_FILE_KW <<
": " << _productXmlFile.c_str() <<
"\n";
881 if ( !_noise[i].
print(out) )
887 <<
"\n_noise->print failed!\n";
892 if ( !_sceneCoord->print(out) )
898 <<
"\n_sceneCoord->print failed!\n";
902 out << NUMBER_LAYERS <<
": " << _numberOfLayers <<
"\n";
905 out << CALIBRATION_CALFACTOR <<
"["<< idx <<
"]: " << _calFactor[idx] <<
"\n";
907 out << RADAR_FREQUENCY <<
": " << _radarFrequency<<
"\n";
908 out << AZ_START_TIME <<
": " << _azStartTime <<
"\n";
909 out << AZ_STOP_TIME <<
": " << _azStopTime <<
"\n";
910 out << RG_FIRST_TIME <<
": " << _rgFirstPixelTime <<
"\n";
911 out << RG_LAST_TIME <<
": " << _rgLastPixelTime <<
"\n";
912 out << GENERATION_TIME <<
": " << _generationTime <<
"\n";
918 out << kw2 <<
": " << _imagingMode.
c_str()<<
"\n";
920 out << kw2<<
": " << _acquisitionSensor.
c_str()<<
"\n";
921 kw2 = kw + LOOK_DIRECTION;
922 out << kw2<<
": " << _lookDirection.
c_str()<<
"\n";
923 kw2 = kw + POLARISATION_MODE;
924 out << kw2<<
": " << _polarisationMode.
c_str()<<
"\n";
993 const char* central_freq_str = kwl.
find(prefix,
"central_freq");
994 double central_freq = atof(central_freq_str);
995 const char* fr_str = kwl.
find(prefix,
"fr");
996 double fr = atof(fr_str);
997 const char* fa_str = kwl.
find(prefix,
"fa");
998 double fa = atof(fa_str);
1006 const char* n_rnglok_str = kwl.
find(prefix,
"n_rnglok");
1007 double n_rnglok = atof(n_rnglok_str);
1010 const char* ellip_maj_str = kwl.
find(prefix,
"ellip_maj");
1011 double ellip_maj = atof(ellip_maj_str) * 1000.0;
1012 const char* ellip_min_str = kwl.
find(prefix,
"ellip_min");
1013 double ellip_min = atof(ellip_min_str) * 1000.0;
1024 if (_isProductGeoreferenced)
1026 const char* orbitDirection_str = kwl.
find(prefix,
"orbitDirection");
1027 std::string orbitDirection(orbitDirection_str) ;
1028 int orbitDirectionSign ;
1029 if (orbitDirection==
"DESCENDING") orbitDirectionSign = 1 ;
1030 else orbitDirectionSign = - 1 ;
1032 const char* imageDataStartWith_str = kwl.
find(prefix,
"imageDataStartWith");
1033 std::string imageDataStartWith(imageDataStartWith_str) ;
1034 if (imageDataStartWith==
"EARLYAZNEARRG") {
1035 _sensor->set_col_direction(orbitDirectionSign);
1036 _sensor->set_lin_direction(orbitDirectionSign);
1037 }
else if (imageDataStartWith==
"EARLYAZFARRG") {
1038 _sensor->set_col_direction(-orbitDirectionSign);
1039 _sensor->set_lin_direction(orbitDirectionSign);
1040 }
else if (imageDataStartWith==
"LATEAZNEARRG") {
1041 _sensor->set_col_direction(orbitDirectionSign);
1042 _sensor->set_lin_direction(-orbitDirectionSign);
1043 }
else if (imageDataStartWith==
"LATEAZFARRG") {
1044 _sensor->set_col_direction(-orbitDirectionSign);
1045 _sensor->set_lin_direction(-orbitDirectionSign);
1048 _sensor->set_col_direction(orbitDirectionSign);
1049 _sensor->set_lin_direction(orbitDirectionSign);
1054 _sensor->set_col_direction(1);
1055 _sensor->set_lin_direction(1);
1058 const char* lookDirection_str = kwl.
find(prefix,
"lookDirection");
1059 std::string lookDirection(lookDirection_str) ;
1060 if ((lookDirection ==
"Right")||(lookDirection ==
"RIGHT")) _sensor->set_sightDirection(
SensorParams::Right) ;
1063 _sensor->set_sf(fr);
1064 const double CLUM = 2.99792458e+8 ;
1065 double wave_length = CLUM / central_freq ;
1066 _sensor->set_rwl(wave_length);
1067 _sensor->set_nRangeLook(n_rnglok);
1068 _sensor->set_prf(fa) ;
1072 _sensor->set_semiMajorAxis(ellip_maj) ;
1073 _sensor->set_semiMinorAxis(ellip_min) ;
1084 const char* neph_str = kwl.
find(prefix,
"neph");
1085 int neph = atoi(neph_str);
1092 for (
int i=0;i<neph;i++)
1099 sprintf(name,
"eph%i_date",i);
1100 const char* date_str = kwl.
find(prefix,name);
1102 sprintf(name,
"eph%i_posX",i);
1103 const char* px_str = kwl.
find(prefix,name);
1104 pos[0] = atof(px_str);
1106 sprintf(name,
"eph%i_posY",i);
1107 const char* py_str = kwl.
find(prefix,name);
1108 pos[1] = atof(py_str);
1110 sprintf(name,
"eph%i_posZ",i);
1111 const char* pz_str = kwl.
find(prefix,name);
1112 pos[2] = atof(pz_str);
1115 sprintf(name,
"eph%i_velX",i);
1116 const char* vx_str = kwl.
find(prefix,name);
1117 vit[0] = atof(vx_str) ;
1119 sprintf(name,
"eph%i_velY",i);
1120 const char* vy_str = kwl.
find(prefix,name);
1121 vit[1] = atof(vy_str) ;
1123 sprintf(name,
"eph%i_velZ",i);
1124 const char* vz_str = kwl.
find(prefix,name);
1125 vit[2] = atof(vz_str) ;
1130 std::string utcString(date_str);
1144 if (_platformPosition != NULL)
1146 delete _platformPosition;
1153 for (
int i=0;i<neph;i++)
1155 delete ephemeris[i];
1164 const char* sc_lin_str = kwl.
find(prefix,
"sc_lin");
1165 double sc_lin = atof(sc_lin_str);
1167 const char* sc_pix_str = kwl.
find(prefix,
"sc_pix");
1168 double sc_pix = atof(sc_pix_str);
1170 const char* inp_sctim_str = kwl.
find(prefix,
"inp_sctim");
1171 std::string inp_sctim_string(inp_sctim_str) ;
1173 const char* sceneCenterRangeTime_str = kwl.
find(prefix,
"sc_rng");
1174 _sceneCenterRangeTime = atof(sceneCenterRangeTime_str);
1176 if(_refPoint == NULL)
1181 _refPoint->set_pix_col(sc_pix);
1182 _refPoint->set_pix_line(sc_lin);
1187 if(_platformPosition != NULL)
1190 if (ephemeris == NULL)
return false ;
1192 _refPoint->set_ephemeris(ephemeris);
1201 const double CLUM = 2.99792458e+8 ;
1202 double sceneCenterSlantRange = _sceneCenterRangeTime * CLUM / 2.0 ;
1204 _refPoint->set_distance(sceneCenterSlantRange);
1208 if (_isProductGeoreferenced) {
1209 double estimatedGroundRange = 0.0 ;
1210 for (
int i=0; i<static_cast<int>(_SrToGr_coeffs.size()); i++)
1212 estimatedGroundRange += _SrToGr_coeffs[i]*pow(_sceneCenterRangeTime-_SrToGr_R0,_SrToGr_exponent[i]);
1215 _SrToGr_scaling_factor = estimatedGroundRange / sc_pix ;
1216 _refPoint->set_distance(estimatedGroundRange);
1220 const char* nbCol_str = kwl.
find(prefix,
"nbCol");
1221 const char* nbLin_str = kwl.
find(prefix,
"nbLin");
1222 theImageSize.x = atoi(nbCol_str);
1223 theImageSize.y = atoi(nbLin_str);
1224 theImageClipRect =
ossimDrect(0, 0, theImageSize.x-1, theImageSize.y-1);
1226 if (_isProductGeoreferenced) {
1227 std::string azimuthStartTime(kwl.
find(
"azimuthStartTime"));
1228 std::string azimuthStopTime(kwl.
find(
"azimuthStopTime"));
1233 double acq_msec_first = (double) dateStart->get_second()+dateStart->get_decimal();
1236 double actualPRF = theImageSize.y/(acq_msec_last-acq_msec_first) ;
1237 _sensor->set_nAzimuthLook(_sensor->get_prf()/actualPRF);
1240 _sensor->set_nAzimuthLook(1.0);
1243 std::list<ossimGpt> groundGcpCoordinates ;
1244 std::list<ossimDpt> imageGcpCoordinates ;
1246 for (
int k=0 ; k<5 ; k++) {
1247 sprintf(name,
"cornersCol%i",k);
1248 const char* i_str = kwl.
find(name);
1249 int i = atoi(i_str);
1250 sprintf(name,
"cornersLin%i",k);
1251 const char* j_str = kwl.
find(name);
1252 int j = atoi(j_str);
1253 sprintf(name,
"cornersLon%i",k);
1254 const char* lon_str = kwl.
find(name);
1255 double lon = atof(lon_str);
1256 sprintf(name,
"cornersLat%i",k);
1257 const char* lat_str = kwl.
find(name);
1258 double lat = atof(lat_str);
1259 const char* height_str = kwl.
find(
"terrain_h");
1260 double height = atof(height_str) ;
1263 ossimGpt groundGCP(lat ,lon , height);
1264 groundGcpCoordinates.push_back(groundGCP) ;
1265 imageGcpCoordinates.push_back(imageGCP) ;
1269 optimizeModel(groundGcpCoordinates, imageGcpCoordinates) ;
1276 const char* rangeProjectionType_str = kwl.
find(prefix,
"rangeProjectionType");
1277 std::string rangeProjectionType(rangeProjectionType_str);
1279 _isProductGeoreferenced = (rangeProjectionType==
"GROUNDRANGE") ;
1282 const char* SrToGr_R0_str = kwl.
find(prefix,
"SrToGr_R0");
1283 _SrToGr_R0 = atof(SrToGr_R0_str);
1286 const char* SrToGr_coeffs_number_str = kwl.
find(prefix,
"SrToGr_coeffs_number");
1287 int srToGr_coeffs_number = atoi(SrToGr_coeffs_number_str);
1293 for(
int i=0;i<srToGr_coeffs_number;i++)
1295 sprintf(name,
"SrToGr_coeffs_%i",i);
1296 const char* coeff_str = kwl.
find(prefix,name);
1297 coeff = atof(coeff_str);
1298 _SrToGr_coeffs.push_back(coeff);
1299 sprintf(name,
"SrToGr_exps_%i",i);
1300 const char* exp_str = kwl.
find(prefix,name);
1301 exponent = atoi(exp_str);
1302 _SrToGr_exponent.push_back(exponent);
1308 std::string orbitDirection(kwl.
find(prefix,
"orbitDirection")) ;
1310 if (orbitDirection==
"DESCENDING") {
1311 t3 = atof(kwl.
find(
"start_rng"));
1312 t2 = atof(kwl.
find(
"sc_rng"));
1313 t1 = atof(kwl.
find(
"end_rng"));
1316 t1 = atof(kwl.
find(
"start_rng"));
1317 t2 = atof(kwl.
find(
"sc_rng"));
1318 t3 = atof(kwl.
find(
"end_rng"));
1323 double x2 = atof(kwl.
find(
"sc_pix"));
1324 double x3 = 2.0*(x2+1.0) -1.0 ;
1326 _alt_srgr_coefset[0] = t1;
1327 _alt_srgr_coefset[1] = ((t2-t1)/(x2*x2)+(t1-t3)/(x3*x3))/((1.0/x2)-(1.0/x3));
1328 _alt_srgr_coefset[2] = ((t2-t1)/x2 + (t1-t3)/x3)/(x2-x3);
1336 static const char MODULE[] =
"ossimplugins::ossimTerraSarModel::initSRGR";
1360 if (_isProductGeoreferenced)
1370 "/level1Product/productSpecific/projectedImageInfo/slantToGroundRangeProjection/coefficient";
1371 std::vector<ossimRefPtr<ossimXmlNode> > xnodes;
1374 if ( xnodes.size() )
1378 if (xnodes[i].valid())
1380 xnodes[i]->getAttributeValue(s, EXP);
1381 _SrToGr_exponent.push_back(s.
toInt32());
1382 _SrToGr_coeffs.push_back(xnodes[i]->getText().toDouble());
1395 bool desendingFlag = (s ==
"DESCENDING");
1396 double startRng = 0.0;
1397 double endRng = 0.0;
1461 <<
"startRng: " << startRng
1462 <<
"\nscRng: " << scRng
1463 <<
"\nendRng: " << endRng
1468 double x3 = 2.0*(x2+1.0) -1.0 ;
1470 _alt_srgr_coefset[0] = t1;
1471 _alt_srgr_coefset[1] =
1472 ((t2-t1)/(x2*x2)+(t1-t3)/(x3*x3))/((1.0/x2)-(1.0/x3));
1473 _alt_srgr_coefset[2] = ((t2-t1)/x2 + (t1-t3)/x3)/(x2-x3);
1486 static const char MODULE[] =
"ossimplugins::ossimTerraSarModel::initPlatformPosition";
1494 if (_platformPosition)
1496 delete _platformPosition;
1506 << MODULE <<
" exit status = " << (result?
"true":
"false\n")
1516 static const char MODULE[] =
"ossimplugins::ossimTerraSarModel::initSensorParams";
1535 <<
"result for tsDoc.initSensorParams " << result << endl;
1547 << MODULE <<
" exit status = " << (result?
"true":
"false\n")
1557 static const char MODULE[] =
"ossimplugins::ossimTerraSarModel::initRefPoint";
1564 if ( !_platformPosition )
1625 _refPoint->set_pix_col(theRefImgPt.x);
1626 _refPoint->set_pix_line(theRefImgPt.y);
1634 Ephemeris * ephemeris = _platformPosition->Interpolate(jdate);
1637 _refPoint->set_ephemeris(ephemeris);
1657 _sceneCenterRangeTime = s.
toDouble();
1659 const double CLUM = 2.99792458e+8;
1660 double sceneCenterSlantRange = _sceneCenterRangeTime * CLUM / 2.0;
1661 _refPoint->set_distance(sceneCenterSlantRange);
1674 if (_isProductGeoreferenced)
1676 double estimatedGroundRange = 0.0 ;
1677 for (
int i=0; i<static_cast<int>(_SrToGr_coeffs.size()); i++)
1679 estimatedGroundRange += _SrToGr_coeffs[i]*
1680 pow(_sceneCenterRangeTime - _SrToGr_R0, _SrToGr_exponent[i]);
1684 _SrToGr_scaling_factor = estimatedGroundRange / theRefImgPt.x;
1685 _refPoint->set_distance(estimatedGroundRange);
1714 double acq_msec_first = (double) dateStart.
get_second() +
1716 double acq_msec_last = (double) dateStop.
get_second() +
1719 double actualPRF = theImageSize.y/(acq_msec_last - acq_msec_first) ;
1720 _sensor->set_nAzimuthLook(_sensor->get_prf()/actualPRF);
1725 _sensor->set_nAzimuthLook(1.0);
1729 std::list<ossimGpt> groundGcpCoordinates;
1730 std::list<ossimDpt> imageGcpCoordinates;
1732 groundGcpCoordinates,
1733 imageGcpCoordinates) == false )
1738 << MODULE <<
"initTiePoint error! exiting\n";
1746 optimizeModel(groundGcpCoordinates, imageGcpCoordinates);
1752 << MODULE <<
" exit status = true\n";
1761 static const char MODULE[] =
"ossimplugins::ossimTerraSarModel::initAcquisitionInfo";
1771 if ( result ==
false )
1776 <<
"unable to get Number Of Layers \n";
1783 result = tsDoc.
getMission(xdoc, theSensorID);
1784 if ( result ==
false )
1789 <<
"unable to get theSensorID \n";
1796 if ( result ==
false )
1801 <<
"unable to get Imaging Mode \n";
1808 if ( result ==
false )
1813 <<
"unable to get Acquisition Sensor \n";
1819 if ( result ==
false )
1824 <<
"unable to get Look direction \n";
1830 if ( result ==
false )
1835 <<
"unable to get Polarisation Mode \n";
1841 if ( result ==
false )
1846 <<
"unable to get Polarisation Layer list \n";
1863 static const char MODULE[] =
"ossimplugins::ossimTerraSarModel::initSceneCoord";
1882 << MODULE <<
" exit status = " << (result?
"true":
"false\n")
1893 std::vector<ossimRefPtr<ossimXmlNode> > xml_nodes;
1894 std::vector<ossimRefPtr<ossimXmlNode> > sub_nodes;
1895 std::vector<ossimRefPtr<ossimXmlNode> >::iterator node;
1897 std::vector<ImageNoise> tabImageNoise;
1899 tabImageNoise.clear();
1901 static const char MODULE[] =
"ossimplugins::ossimTerraSarModel::getNoise";
1914 << MODULE <<
" DEBUG: one of the getNoise parameter of the method is NULL" << std::endl;
1920 xpath =
"numberOfNoiseRecords";
1922 if(xml_nodes.size() == 0)
1928 << MODULE <<
" DEBUG:" 1929 <<
"\nCould not find: " << xpath
1939 xpath =
"imageNoise";
1941 if(xml_nodes.size() == 0)
1947 << MODULE <<
" DEBUG:" 1948 <<
"\nCould not find: " << xpath
1954 node = xml_nodes.
begin();
1955 while (node != xml_nodes.end())
1959 (*node)->findChildNodes(xpath, sub_nodes);
1960 if (sub_nodes.size() == 0)
1966 << MODULE <<
" DEBUG:" 1967 <<
"\nCould not find: " << xpath
1975 xpath =
"noiseEstimate/validityRangeMin";
1976 (*node)->findChildNodes(xpath, sub_nodes);
1977 if (sub_nodes.size() == 0)
1983 << MODULE <<
" DEBUG:" 1984 <<
"\nCould not find: " << xpath
1992 xpath =
"noiseEstimate/validityRangeMax";
1993 (*node)->findChildNodes(xpath, sub_nodes);
1994 if (sub_nodes.size() == 0)
2000 << MODULE <<
" DEBUG:" 2001 <<
"\nCould not find: " << xpath
2009 xpath =
"noiseEstimate/referencePoint";
2010 (*node)->findChildNodes(xpath, sub_nodes);
2011 if (sub_nodes.size() == 0)
2017 << MODULE <<
" DEBUG:" 2018 <<
"\nCould not find: " << xpath
2026 xpath =
"noiseEstimate/polynomialDegree";
2027 (*node)->findChildNodes(xpath, sub_nodes);
2028 if (sub_nodes.size() == 0)
2034 << MODULE <<
" DEBUG:" 2035 <<
"\nCould not find: " << xpath
2044 (*node)->findChildNodes(
"noiseEstimate/coefficient",nodelist);
2045 ossimXmlNode::ChildListType::const_iterator child_iter = nodelist.begin();
2046 std::vector<double> polynomialCoefficients;
2047 while(child_iter != nodelist.end())
2049 double coefficient = ((*child_iter)->getText()).toDouble() ;
2050 polynomialCoefficients.push_back(coefficient);
2055 tabImageNoise.push_back(ev);
2076 std::vector<ossimRefPtr<ossimXmlNode> > xml_nodes;
2077 std::vector<ossimRefPtr<ossimXmlNode> > sub_nodes;
2078 std::vector<ossimRefPtr<ossimXmlNode> >::iterator node;
2081 static const char MODULE[] =
"ossimplugins::ossimTerraSarModel::initNoise";
2088 _noise.resize(_numberOfLayers);
2091 xpath =
"/level1Product/noise";
2093 xmlDocument->
findNodes(xpath, xml_nodes);
2094 if(xml_nodes.size() == 0)
2100 << MODULE <<
" DEBUG:" 2101 <<
"\nCould not find: " << xpath
2107 node = xml_nodes.
begin();
2108 while (node != xml_nodes.end())
2112 (*node)->findChildNodes(xpath, sub_nodes);
2113 if (sub_nodes.size() == 0)
2119 << MODULE <<
" DEBUG:" 2120 <<
"\nCould not find: " << xpath
2126 polLayerName = sub_nodes[0]->getText();
2129 bool polLayerIdxFound =
false;
2131 for(
ossim_uint32 idx = 0 ; idx < _polLayerList.size(); ++idx)
2133 if(_polLayerList[idx] == polLayerName)
2136 polLayerIdxFound =
true;
2140 if (!polLayerIdxFound)
2154 _noise[polLayerIdx].set_imagePolarisation(polLayerName);
2156 result = getNoiseAtGivenNode( (*node),_noise[polLayerIdx]);
2163 <<
" layer image" << std::endl;
2186 std::vector<ossimRefPtr<ossimXmlNode> > xml_nodes;
2187 std::vector<ossimRefPtr<ossimXmlNode> > sub_nodes;
2188 std::vector<ossimRefPtr<ossimXmlNode> >::iterator node;
2190 static const char MODULE[] =
"ossimplugins::ossimTerraSarModel::getPolLayerFromImageFile";
2198 xpath =
"/level1Product/productComponents/imageData";
2200 xmlDocument->
findNodes(xpath, xml_nodes);
2201 if(xml_nodes.size() == 0)
2207 << MODULE <<
" DEBUG:" 2208 <<
"\nCould not find: " << xpath
2214 node = xml_nodes.
begin();
2215 while (node != xml_nodes.end())
2219 (*node)->findChildNodes(xpath, sub_nodes);
2220 if (sub_nodes.size() == 0)
2226 << MODULE <<
" DEBUG:" 2227 <<
"\nCould not find: " << xpath
2232 polLayerName = sub_nodes[0]->getText();
2235 xpath =
"file/location/filename";
2236 (*node)->findChildNodes(xpath, sub_nodes);
2237 if (sub_nodes.size() == 0)
2243 << MODULE <<
" DEBUG:" 2244 <<
"\nCould not find: " << xpath
2249 polLayerFileName = sub_nodes[0]->getText();
2251 if (polLayerFileName == imageFilename.
file())
2253 _polLayer = polLayerName;
2271 std::vector<ossimRefPtr<ossimXmlNode> > xml_nodes;
2272 std::vector<ossimRefPtr<ossimXmlNode> > sub_nodes;
2273 std::vector<ossimRefPtr<ossimXmlNode> >::iterator node;
2275 static const char MODULE[] =
"ossimplugins::ossimTerraSarModel::initCalibration";
2282 _calFactor.resize(_numberOfLayers);
2285 xpath =
"/level1Product/calibration/calibrationConstant";
2287 xmlDocument->
findNodes(xpath, xml_nodes);
2288 if(xml_nodes.size() == 0)
2294 << MODULE <<
" DEBUG:" 2295 <<
"\nCould not find: " << xpath
2301 node = xml_nodes.
begin();
2302 while (node != xml_nodes.end())
2306 (*node)->findChildNodes(xpath, sub_nodes);
2307 if (sub_nodes.size() == 0)
2313 << MODULE <<
" DEBUG:" 2314 <<
"\nCould not find: " << xpath
2320 polLayerName = sub_nodes[0]->getText();
2323 bool polLayerIdxFound =
false;
2325 for(
ossim_uint32 idx = 0 ; idx < _polLayerList.size(); ++idx)
2327 if(_polLayerList[idx] == polLayerName)
2330 polLayerIdxFound =
true;
2334 if(!polLayerIdxFound)
2340 << MODULE <<
" DEBUG: Unable to found polLayer in polLayer List" << std::endl;
2346 xpath =
"calFactor";
2347 (*node)->findChildNodes(xpath, sub_nodes);
2348 if (sub_nodes.size() == 0)
2354 << MODULE <<
" DEBUG:" 2355 <<
"\nCould not find: " << xpath
2360 _calFactor[polLayerIdx] = sub_nodes[0]->getText().
toDouble();
2380 metadataFile = file;
2392 <<
"ossimplugins::ossimTerraSarModel::findTSXLeader " 2393 <<
" directory scan turned off. This is killing the factory open." 2394 <<
" We should never scan a directory. Need to resolve. " 2400 if (imagePath.
empty())
2404 std::vector<ossimFilename> vectName;
2408 bool goodFileFound =
false;
2409 unsigned int loop = 0;
2410 while(loop<vectName.size() && !goodFileFound)
2414 goodFileFound =
true;
2420 metadataFile = vectName[loop];
2433 <<
"ossimplugins::ossimTerraSarModel::findTSXLeader " 2434 <<
" exit status = " << (res?
"true":
"false\n")
2447 os <<
"\n----------------- General Info on TSX-1 Image -------------------" 2449 <<
"\n Sensor ID : " << theSensorID
2450 <<
"\n Imaging Mode : " << _imagingMode
2451 <<
"\n Acquisition Sensor : " << _acquisitionSensor
2452 <<
"\n Look direction : " << _lookDirection
2453 <<
"\n Polarisation Mode : " << _polarisationMode
2454 <<
"\n Number of Layers : " << _numberOfLayers
2455 <<
"\n Polarisation List Size : " << _polLayerList.size()
2457 <<
"\n------------------------------------------------------------------";
2458 for(
ossim_uint32 idx = 0 ; idx < _polLayerList.size(); ++idx)
2460 os <<
"\n----------------- Info on " << _polLayerList[idx] <<
" Layer Image -------------------" 2461 <<
"\n calFactor : " << _calFactor[idx]
2463 <<
"\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 clear()
Erases the entire container.
Class to encapsulate parsing TerraSAR product xml file.
bool getSceneId(const ossimXmlDocument *xdoc, ossimString &s) const
virtual ~ossimTerraSarModel()
Destructor.
bool getReferencePoint(const ossimXmlDocument *xdoc, ossimString &s) const
bool findTSXLeader(const ossimFilename &file, ossimFilename &metadataFile)
Method to find the metadata file TerraSAR file (image or xml).
This class represents a date and time in the civil format.
static ossimString upcase(const ossimString &aString)
bool getProjection(const ossimXmlDocument *xdoc, ossimString &s) const
static const ossimFilename NIL
This was taken from Wx widgets for performing touch and access date stamps.
virtual std::ostream & print(std::ostream &out) 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
bool getAzimuthStartTime(const ossimXmlDocument *xdoc, ossimString &s) const
RTTI_DEF1(ossimAlosPalsarModel, "ossimAlosPalsarModel", ossimGeometricSarSensorModel)
Represents serializable keyword/value map.
bool isProductGeoreferenced(const ossimXmlDocument *xdoc) const
bool getPolLayerList(const ossimXmlDocument *xdoc, std::vector< ossimString > &s) const
bool getNoiseAtGivenNode(const ossimRefPtr< ossimXmlNode > xmlDocument, ossimplugins::Noise &noise)
Method to get ImageNoise parameters from TerraSAR product xml file at a given node.
bool getSceneCenterRefColumn(const ossimXmlDocument *xdoc, ossimString &s) const
one based
const char * find(const char *key) const
ossimFilename expand() const
Method to do file name expansion.
virtual ossimObject * dup() const
Returns pointer to a new instance, copy of this.
bool getRangeGateFirstPixel(const ossimXmlDocument *xdoc, ossimString &s) const
one based???
bool getImagingMode(const ossimXmlDocument *xdoc, ossimString &s) const
This class handles the referential point.
bool getSceneCenterRangeTime(const ossimXmlDocument *xdoc, ossimString &s) const
static ossimString toString(bool aValue)
Numeric to string methods.
void set_validityRangeMin(double value)
ossimTerraSarModel()
default constructor
bool getRangeFirstPixelTime(const ossimXmlDocument *xdoc, ossimString &s) const
void set_validityRangeMax(double value)
This class allows for direct localisation and indirect localisation using the TerraSar sensor model...
bool getRangeGateLastPixel(const ossimXmlDocument *xdoc, ossimString &s) const
one based???
void set_imageNoise(const std::vector< ImageNoise > &image_noise)
ossim_uint32 toUInt32() const
std::ostream & print(H5::H5File *file, std::ostream &out)
Print method.
bool iso8601TimeStringToCivilDate(const std::string &dataString, CivilDateTime &outputDate)
Converts date string from ISO 8601 format to CivilDateTime.
void findAllFilesThatMatch(std::vector< ossimFilename > &result, const ossimString ®ularExpressionPattern, int flags=OSSIM_DIR_DEFAULT)
virtual double getSlantRangeFromGeoreferenced(double col) const
This function associates an image column number to a slant range when the image is georeferenced (gro...
This class handles the sensor parameters.
static const char * TYPE_KW
bool getPolarisationMode(const ossimXmlDocument *xdoc, ossimString &s) const
bool getRadiometricCorrection(const ossimXmlDocument *xdoc, ossimString &s) const
bool getLookDirection(const ossimXmlDocument *xdoc, ossimString &s) const
This class allows for direct localisation and indirect localisation using the geometric model of SAR ...
std::vector< ossimRefPtr< ossimXmlNode > > ChildListType
ossim_int32 toInt32() const
bool getMission(const ossimXmlDocument *xdoc, ossimString &s) const
void add(const char *prefix, const ossimKeywordlist &kwl, bool overwrite=true)
ossimFilename getCurrentWorkingDir() const
bool initPlatformPosition(const ossimXmlDocument *xdoc, PlatformPosition *pos) const
Method to initialize PlatformPosition object from TerraSAR product xml file.
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Method to save object state to a keyword list.
void add(const ossimFilename &f)
Add support data filename to the list:
This class represents an ephemeris.
bool geNumberOfLayers(const ossimXmlDocument *xdoc, ossimString &s) const
virtual bool InitSRGR(const ossimKeywordlist &kwl, const char *prefix)
Initializes the Slant Range to Ground Range data sets : _SrToGr_R0,_SrToGr_coeffs_number,_SrToGr_exponent,_SrToGr_coeffs,_nbCol.
bool initRefPoint(const ossimXmlDocument *xdoc, const ossimTerraSarProductDoc &rsDoc)
Method to initialize RefPoint object from TerraSAR product xml file.
bool openFile(const ossimFilename &filename)
This class represents an ImageNoise.
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
Method to the load (recreate) the state of the object from a keyword list.
std::string::size_type size() const
bool toBool() const
String to numeric methods.
std::string::iterator begin()
unsigned int ossim_uint32
void set_polynomialDegree(unsigned int value)
ossim_float64 toFloat64() const
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.
bool initPlatformPosition(const ossimXmlDocument *xdoc, const ossimTerraSarProductDoc &rsDoc)
bool initAcquisitionInfo(const ossimXmlDocument *xdoc, const ossimTerraSarProductDoc &tsDoc)
Method to initialize AcquisitionInfo parameters from TerraSAR product xml file.
bool initCalibration(const ossimXmlDocument *xmlDocument, const ossimTerraSarProductDoc &tsDoc)
Method to initialize Calibration parameters from TerraSAR product xml file.
static ossimString downcase(const ossimString &aString)
This class represents an Noise.
bool getPolLayerFromImageFile(const ossimXmlDocument *xmlDocument, const ossimFilename &imageFilename)
Method to find the polLayer from the image file.
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Method to save object state to a keyword list.
bool open(const ossimFilename &file)
Method to intantial model from a file.
bool initSRGR(const ossimXmlDocument *xdoc, const ossimTerraSarProductDoc &rsDoc)
bool initImageSize(const ossimXmlDocument *xdoc, ossimIpt &imageSize) const
Method to initialize image size from TerraSAR product xml file.
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
Method to the load (recreate) the state of the object from a keyword list.
virtual std::ostream & print(std::ostream &out) const
static ossimEnvironmentUtility * instance()
void set_timeUTC(const ossimString &value)
bool initSensorParams(const ossimXmlDocument *xdoc, const ossimTerraSarProductDoc &rsDoc)
bool getSceneCenterLat(const ossimXmlDocument *xdoc, ossimString &s) const
latitude
virtual ossimString getClassName() const
Method to return the class name.
bool getGenerationTime(const ossimXmlDocument *xdoc, ossimString &s) const
virtual bool InitSensorParams(const ossimKeywordlist &kwl, const char *prefix)
Initializes the Sensor Params from a projection keywordlist.
bool getSceneCenterRefRow(const ossimXmlDocument *xdoc, ossimString &s) const
one based
const char * getClassName(int idx)
bool getAzimuthStopTime(const ossimXmlDocument *xdoc, ossimString &s) const
bool getAcquisitionSensor(const ossimXmlDocument *xdoc, ossimString &s) const
ossimString beforePos(std::string::size_type pos) const
bool getOrbitDirection(const ossimXmlDocument *xdoc, ossimString &s) const
const char * c_str() const
Returns a pointer to a null-terminated array of characters representing the string's contents...
bool initNoise(const ossimXmlDocument *xmlDocument, const ossimTerraSarProductDoc &tsDoc)
Method to initialize ImageNoise parameters from TerraSAR product xml file.
ossimFilename file() const
virtual bool InitPlatformPosition(const ossimKeywordlist &kwl, const char *prefix)
Initializes the Platform Position from a projection keywordlist.
static ossimSupportFilesList * instance()
void printInfo(ostream &os) const
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.
bool initGsd(const ossimXmlDocument *xdoc, ossimDpt &gsd) const
Method to initialize gsd from TerraSAR product xml file.
This class represents a date.
void set_referencePoint(double value)
ossimFilename path() const
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 initSceneCoord(const ossimXmlDocument *xdoc, const ossimTerraSarProductDoc &tsDoc)
Method to initialize InfoIncidenceAngle parameters from TerraSAR product xml file.
bool getRadarFrequency(const ossimXmlDocument *xdoc, ossimString &s) const
std::basic_ostream< char > ostream
Base class for char output streams.
bool getRangeLastPixelTime(const ossimXmlDocument *xdoc, ossimString &s) const
SceneCoord * _sceneCoord
SceneCoord (SceneInfo node)
virtual bool InitRefPoint(const ossimKeywordlist &kwl, const char *prefix)
Initializes the Reference Point from a projection keywordlist.
bool getSceneCenterAzimuthTime(const ossimXmlDocument *xdoc, ossimString &s) const