OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimNitfProjectionFactory.h
Go to the documentation of this file.
1 //---
2 // License: MIT
3 //
4 // Author: Matt Revelle
5 // David Burken
6 //
7 // Description:
8 //
9 // Contains class declaration for ossimNitfProjectionFactory.
10 //---
11 // $Id$
12 
13 #ifndef ossimNitfProjectionFactory_HEADER
14 #define ossimNitfProjectionFactory_HEADER 1
15 
16 #include <vector>
18 
19 class ossimProjection;
20 class ossimString;
21 class ossimGpt;
25 class ossimDpt;
26 
28 {
29 public:
30 
36  static ossimNitfProjectionFactory* instance();
37 
41  virtual ~ossimNitfProjectionFactory();
42 
52  virtual ossimProjection* createProjection(const ossimFilename& filename,
53  ossim_uint32 entryIdx)const;
54 
60  virtual ossimProjection* createProjection(const ossimString& name)const;
61 
62 
69  const char* prefix = 0)const;
70 
71  virtual ossimProjection* createProjection(ossimImageHandler* handler)const;
77  virtual ossimObject* createObject(const ossimString& typeName)const;
78 
84  virtual ossimObject* createObject(const ossimKeywordlist& kwl,
85  const char* prefix=0)const;
86 
94  virtual void getTypeNameList(std::vector<ossimString>& typeList)const;
95 
96 private:
97 
98  ossimProjection* createProjectionFromHeaders(
99  ossimNitfFileHeader* fileHeader,
100  ossimNitfImageHeader* imageHeader)const;
101 
102 
113  ossimProjection* makeGeographic(const ossimNitfImageHeader* hdr,
114  const ossimString& coordinateSysetm)const;//,
115  //const ossimFilename& filename) const;
116 
126  ossimProjection* makeUtm(const ossimNitfImageHeader* hdr,
127  const ossimString& coordinateSysetm)const;//,
128 
136  ossimProjection* makeEuiDistant(const ossimNitfImageHeader* hdr,
137  const std::vector<ossimGpt>& gpts) const;
138 
142  ossimProjection* makeBilinear(const ossimNitfImageHeader* hdr,
143  const std::vector<ossimGpt>& gpts) const;
144 
154  void parseGeographicString(const ossimString& geographicLocation,
155  std::vector<ossimGpt>& gpts) const;
156 
166  void parseDecimalDegreesString(const ossimString& geographicLocation,
167  std::vector<ossimGpt>& gpts) const;
168 
169  void parseUtmString(const ossimString& utmLocation,
170  ossim_uint32& zone,
171  std::vector<ossimDpt>& utmPoints)const;
172 
182  bool parseMgrsString(const ossimString& mgrsLocationString,
183  ossim_uint32& zone,
184  char& hemisphere,
185  std::vector<ossimDpt>& utmPoints) const;
186 
199  void computeScaleInDecimalDegrees(const ossimNitfImageHeader* hdr,
200  const std::vector<ossimGpt>& gpts,
201  ossimDpt& scale) const;
202 
215  void computeScaleInMeters(const ossimNitfImageHeader* hdr,
216  const std::vector<ossimDpt>& dpts,
217  ossimDpt& scale) const;
218 
222  bool isSkewed(const std::vector<ossimGpt>& gpts) const;
223 
227  bool isSkewed(const std::vector<ossimDpt>& gpts) const;
228 
237  bool getBlockaPoints(const ossimNitfImageHeader* hdr,
238  std::vector<ossimGpt>& gpts)const;
239 
248  bool getGeolobPoints(const ossimNitfImageHeader* hdr,
249  std::vector<ossimGpt>& gpts)const;
250 
255 
260 
265 
267 
268  bool isNitf(const ossimFilename& filename)const;
269 };
270 
271 #endif /* End of "#ifndef ossimNitfProjectionFactory_HEADER" */
#define OSSIMDLLEXPORT
Represents serializable keyword/value map.
virtual void getTypeNameList(std::vector< ossimString > &typeList) const =0
virtual ossimProjection * createProjection(const ossimFilename &filename, ossim_uint32 entryIdx) const =0
takes a filename.
static ossimNitfProjectionFactory * theInstance
unsigned int ossim_uint32
virtual ossimObject * createObject(const ossimString &typeName) const =0
This class defines an abstract Handler which all image handlers(loaders) should derive from...
ossimReferenced & operator=(const ossimReferenced &)