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; }