From 08f347a1abb13d1f317c65f28c667709dc55b2bf Mon Sep 17 00:00:00 2001 From: Emmanuel Christophe <emmanuel.christophe@orfeo-toolbox.org> Date: Sat, 26 Mar 2011 11:20:21 -0700 Subject: [PATCH] ENH: add more flexibility to the MapProjectionWrapper --- Code/IO/otbMapProjectionWrapper.cxx | 50 ++++++++++++++++++++--------- 1 file changed, 35 insertions(+), 15 deletions(-) diff --git a/Code/IO/otbMapProjectionWrapper.cxx b/Code/IO/otbMapProjectionWrapper.cxx index 876af94577..d2675c1605 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; -- GitLab