//***************************************************************************** // CONSTRUCTOR: ossimIkonosRpcModel // // Constructs given filenames for metadata and RPC data. // //***************************************************************************** ossimIkonosRpcModel::ossimIkonosRpcModel(const ossimFilename& metadata, const ossimFilename& rpcdata) : ossimRpcModel(), theSupportData(0) { if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimIkonosRpcModel Constructor #2: entering..." << std::endl; theSupportData = new ossimIkonosMetaData(); parseMetaData(metadata); parseRpcData (rpcdata); finishConstruction(); //*** // Save current state in RPC model format: //*** ossimString drivePart; ossimString pathPart; ossimString filePart; ossimString extPart; metadata.split(drivePart, pathPart, filePart, extPart); ossimFilename init_rpc_geom; init_rpc_geom.merge(drivePart, pathPart, INIT_RPC_GEOM_FILENAME, ""); // (metadata.path().dirCat(ossimRpcModel::INIT_RPC_GEOM_FILENAME)); ossimKeywordlist kwl (init_rpc_geom); saveState(kwl); if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimIkonosRpcModel Constructor #2: returning..." << std::endl; }
bool ossimIkonosRpcModel::parseTiffFile(const ossimFilename& filename) { bool result = false; ossimRefPtr<ossimTiffTileSource> tiff = new ossimTiffTileSource(); if ( tiff->open(filename) ) { if ( !theSupportData ) { theSupportData = new ossimIkonosMetaData(); } if ( theSupportData->open(filename) == false ) { if(traceDebug()) { // Currently not required by model so we will not error out here. ossimNotify(ossimNotifyLevel_DEBUG) << "WARNING: ossimIkonosMetaData::open returned false.\n" << std::endl; } } else { // copy ossimIkonosMetada-sensor into ossimIkonosRpcModel-sensorId theSensorID = theSupportData->getSensorID(); } //convert file to rpc filename and hdr filename so we can get some info ossimFilename rpcfile = filename.noExtension(); rpcfile += "_rpc.txt"; ossimFilename hdrfile = filename; hdrfile.setExtension(ossimString("hdr")); if( parseHdrData(hdrfile) ) { // parseRpcData sets the error status on error. parseRpcData (rpcfile); if ( !getErrorStatus() ) //check for errors in parsing rpc data { finishConstruction(); //--- // Save current state in RPC model format: //--- ossimString drivePart; ossimString pathPart; ossimString filePart; ossimString extPart; filename.split(drivePart, pathPart, filePart, extPart); ossimFilename init_rpc_geom; init_rpc_geom.merge(drivePart, pathPart, INIT_RPC_GEOM_FILENAME, ""); ossimKeywordlist kwl (init_rpc_geom); saveState(kwl); // If we get here set the return status to true. result = true; } // matches: if ( !getErrorStatus() ) } // matches: if( parseHdrData(hdrfile) ) } // matches: if ( tiff->open(filename) ) if ( traceExec() ) { ossimNotify(ossimNotifyLevel_DEBUG) << "return status: " << (result?"true\n":"false\n") << "DEBUG ossimIkonosRpcModel parseTiffFile: returning..." << std::endl; } return result; }
//***************************************************************************** // CONSTRUCTOR: ossimIkonosRpcModel // // Constructs given a geometry file that specifies the filenames for the // metadata and RPC data files. // //***************************************************************************** ossimIkonosRpcModel::ossimIkonosRpcModel(const ossimFilename& geom_file) : ossimRpcModel(), theSupportData(0) { if (traceExec()) { ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimIkonosRpcModel Constructor #1: entering..." << std::endl; } theSupportData = new ossimIkonosMetaData(); ossimKeywordlist kwl(geom_file); const char* value; //*** // Assure this keywordlist contains correct type info: //*** value = kwl.find(ossimKeywordNames::TYPE_KW); if (!value || (strcmp(value, "ossimIkonosRpcModel"))) { if (traceDebug()) { ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimIkonosRpcModel Constructor #1:" << "\nFailed attempt to construct. sensor type \""<<value << "\" does not match \"ossimIkonosRpcModel\"." << std::endl; } theErrorStatus++; if (traceExec()) { ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimIkonosRpcModel Constructor #1: returning..." << std::endl; } return; } //*** // Read meta data filename from geom file: //*** value = kwl.find(META_DATA_FILE); if (!value) { theErrorStatus++; if (traceExec()) { ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimIkonosRpcModel Constructor #1: returning..." << std::endl; } return; } ossimFilename metadata (value); //*** // Read RPC data filename from geom file: //*** value = kwl.find(RPC_DATA_FILE); if (!value) { theErrorStatus++; if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimIkonosRpcModel Constructor #1: returning..." << std::endl; return; } ossimFilename rpcdata (value); parseMetaData(metadata); parseRpcData (rpcdata); finishConstruction(); ossimString drivePart; ossimString pathPart; ossimString filePart; ossimString extPart; geom_file.split(drivePart, pathPart, filePart, extPart); if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG returning..." << std::endl; return; }