Skip to content
Snippets Groups Projects
Commit f5505f4a authored by Emmanuel Christophe's avatar Emmanuel Christophe
Browse files

ENH: correct ERS to find the leader file from the data file

parent 808a7e29
No related branches found
No related tags found
No related merge requests found
......@@ -135,6 +135,7 @@ bool ossimErsSarModel::open(const ossimFilename& file)
}
bool result = false;
ossimFilename leaFilename = file;
/*
* Creation of the class allowing to store Leader file metadata
......@@ -147,9 +148,14 @@ bool ossimErsSarModel::open(const ossimFilename& file)
_ErsSarleader = new ErsSarLeader();
if ( file.exists() )
if ( leaFilename.exists() )
{
result = isErsLeader(file);
result = isErsLeader(leaFilename);
if (result == false)
{
leaFilename = findErsLeader(file);
}
result = isErsLeader(leaFilename);
if (result == true)
{
......@@ -161,7 +167,7 @@ bool ossimErsSarModel::open(const ossimFilename& file)
/*
* Leader file data reading
*/
std::ifstream leaderFile(file, ios::in|ios::binary);
std::ifstream leaderFile(leaFilename, ios::in|ios::binary);
leaderFile>>*_ErsSarleader;
leaderFile.close();
......@@ -519,7 +525,7 @@ bool ossimErsSarModel::InitSRGR(const ossimKeywordlist &kwl, const char *prefix)
return true;
}
bool ossimErsSarModel::isErsLeader(const ossimFilename& file)
bool ossimErsSarModel::isErsLeader(const ossimFilename& file) const
{
std::ifstream candidate(file, ios::in | ios::binary);
char ersFileName[16];
......@@ -550,5 +556,26 @@ bool ossimErsSarModel::isErsLeader(const ossimFilename& file)
}
}
ossimFilename ossimErsSarModel::findErsLeader(const ossimFilename& file) const
{
ossimFilename leaFile = file;
ossimString datString("DAT_01");
ossimString nulString("NUL_DAT");
ossimString vdfString("VDF_DAT");
ossimString leaString("LEA_01");
if ((file.fileNoExtension() == datString)
|| (file.fileNoExtension() == nulString)
|| (file.fileNoExtension() == leaString))
{
leaFile.setFile(leaString);
if (leaFile.exists())
{
return leaFile;
}
}
return file;
}
}
......@@ -103,7 +103,8 @@ private:
*/
virtual bool InitSRGR(const ossimKeywordlist &kwl, const char *prefix);
virtual bool isErsLeader(const ossimFilename& file);
virtual bool isErsLeader(const ossimFilename& file) const;
virtual ossimFilename findErsLeader(const ossimFilename& file) const;
TYPE_DATA
......
......@@ -64,6 +64,20 @@ ossimProjection* ossimPluginProjectionFactory::createProjection(const ossimFilen
}
}
if ( !result )
{
ossimErsSarModel* model = new ossimErsSarModel();
if ( model->open(filename) )
{
result = model;
}
else
{
delete model;
model = 0;
}
}
return result;
}
......@@ -94,10 +108,10 @@ ossimProjection* ossimPluginProjectionFactory::createProjection(
{
return new ossimTerraSarModel();
}
// else if (name == STATIC_TYPE_NAME(ossimErsSarModel))
// {
// return new ossimErsSarModel;
// }
else if (name == STATIC_TYPE_NAME(ossimErsSarModel))
{
return new ossimErsSarModel;
}
return 0;
}
......@@ -129,6 +143,15 @@ ossimProjection* ossimPluginProjectionFactory::createProjection(
result = 0;
}
}
else if (type == "ossimErsSarModel")
{
result = new ossimErsSarModel();
if ( !result->loadState(kwl, prefix) )
{
delete result;
result = 0;
}
}
}
return result;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment