diff --git a/Code/IO/otbMapProjectionWrapper.cxx b/Code/IO/otbMapProjectionWrapper.cxx index 876af945777cb95273a4cb9efbfa52df5f03af4c..d2675c160571d3798a996c166ae61afe2931c3c0 100644 --- a/Code/IO/otbMapProjectionWrapper.cxx +++ b/Code/IO/otbMapProjectionWrapper.cxx @@ -102,25 +102,45 @@ bool MapProjectionWrapper::InstanciateProjection() bool projectionInformationAvailable = wktTranslator.toOssimKwl(m_ProjectionRefWkt, kwl); - if (!projectionInformationAvailable) + if (projectionInformationAvailable) { - otbMsgDevMacro(<< "WARNING: Impossible to create the projection from string: " << m_ProjectionRefWkt); - return false; - } - //we don't want to have a ossimEquDistCylProjection here: - //see discussion in May 2009 on ossim list; - //a better solution might be available... - std::string projectionString(kwl.find("type")); - if (projectionString.find("ossimEquDistCylProjection") != string::npos) - { - otbMsgDevMacro(<< "WARNING: Not instanciating a ossimEquDistCylProjection: " << projectionString); - otbMsgDevMacro(<< "Wkt was: " << kwl); - otbMsgDevMacro(<< "From RefWkt: " << m_ProjectionRefWkt); - return false; + //we don't want to have a ossimEquDistCylProjection here: + //see discussion in May 2009 on ossim list; + //a better solution might be available... + std::string projectionString(kwl.find("type")); + if (projectionString.find("ossimEquDistCylProjection") != string::npos) + { + otbMsgDevMacro(<< "WARNING: Not instanciating a ossimEquDistCylProjection: " << projectionString); + otbMsgDevMacro(<< "Wkt was: " << kwl); + otbMsgDevMacro(<< "From RefWkt: " << m_ProjectionRefWkt); + return false; + } + + m_MapProjection = ossimMapProjectionFactory::instance()->createProjection(kwl); + } + else + { + otbMsgDevMacro(<< "WARNING: Impossible to create the projection from Wkt: " << m_ProjectionRefWkt); + otbMsgDevMacro(<< "Trying with string as a string (ossimUtmProjection or Utm would qualify"); + // Trying directly with the m_ProjectionRefWkt (is + // ossimUtmProjection for example) + ossimString name(m_ProjectionRefWkt); + m_MapProjection = ossimMapProjectionFactory::instance()->createProjection(name); + if (m_MapProjection == NULL) + { + // Trying directly extending the m_ProjectionRefWkt (convert the + // Utm to ossimUtmProjection for example) + ossimString extendedName("ossim"); + extendedName += m_ProjectionRefWkt; + extendedName += "Projection"; + m_MapProjection = ossimMapProjectionFactory::instance()->createProjection(extendedName); + } + + if (m_MapProjection == NULL) return false; - m_MapProjection = ossimMapProjectionFactory::instance()->createProjection(kwl); + } this->reinstanciateProjection = false; return true;