Example #1
0
ossimProjection*
ossimNitfProjectionFactory::createProjection(const ossimFilename& filename,
                                             ossim_uint32 entryIdx)const
{
   static const char MODULE[]="ossimNitfProjectionFactory::createProjection";
   if (traceDebug())
   {
      ossimNotify(ossimNotifyLevel_DEBUG)
         << MODULE << " DEBUG:"
         << "\nfilename:  " << filename
         << "\nentryIdx:  " << entryIdx
         << std::endl;
   }

   // See if there is an external geomtry.
   ossimProjection* result = createProjectionFromGeometryFile(filename,
                                                              entryIdx);
   if (result)
   {
      return result;
   }

   if(!isNitf(filename))
   {
      return result; // result is NULL
   }

   ossimRefPtr<ossimNitfFile> nitf = new ossimNitfFile();
   if (!nitf->parseFile(filename))
   {
      return result; // result is NULL
   }

   long imageIndex = static_cast<long>(entryIdx);
   if ( imageIndex > (nitf->getHeader()->getNumberOfImages()-1) )
   {
      return result;
   }

   ossimRefPtr<ossimNitfImageHeader> imageHeader = nitf->getNewImageHeader(imageIndex);
   {
      if (!imageHeader)
      {
         return result;
      }
   }

   result = createProjectionFromHeaders(nitf->getHeader(),
                                        imageHeader.get());
   if (traceDebug())
   {
      ossimString coordinateSystem   = imageHeader->getCoordinateSystem();
      ossimNotify(ossimNotifyLevel_DEBUG)
         << MODULE << " DEBUG:"
         << "\ncoordinateSysetm:       " << coordinateSystem
         << std::endl;
   }

   return result;
}
ossimProjection* ossimNitfProjectionFactory::createProjection(ossimImageHandler* handler)const
{
   ossimNitfTileSource* nitfTileSource = dynamic_cast<ossimNitfTileSource*> (handler);
   ossimProjection* result = 0;
   if(nitfTileSource)
   {
      if(!result)
      {
         ossimNitfImageHeader* imageHeader = nitfTileSource->getCurrentImageHeader();
         if(imageHeader)
         {
            result = createProjectionFromHeaders(nitfTileSource->getFileHeader(),imageHeader);
         }
      }
   }
   else if(isNitf(handler->getFilename()))
   {
      result =  createProjection(handler->getFilename(), handler->getCurrentEntry());
   }
   return result;
}