OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Attributes | List of all members
ossimImageGeometryFactory Class Reference

#include <ossimImageGeometryFactory.h>

Inheritance diagram for ossimImageGeometryFactory:
ossimImageGeometryFactoryBase ossimBaseObjectFactory ossimObjectFactory ossimObject ossimReferenced

Public Member Functions

virtual ossimImageGeometrycreateGeometry (const ossimString &typeName) const
 
virtual ossimImageGeometrycreateGeometry (const ossimKeywordlist &kwl, const char *prefix=0) const
 
virtual ossimImageGeometrycreateGeometry (const ossimFilename &filename, ossim_uint32 entryIdx) const
 
virtual bool extendGeometry (ossimImageHandler *handler) const
 
virtual void getTypeNameList (std::vector< ossimString > &typeList) const
 
virtual ossim2dTo2dTransformcreateTransform (ossimImageHandler *handler) const
 This is a utility method used by crateGeoemtry that takes an image handler. More...
 
virtual ossimProjectioncreateProjection (ossimImageHandler *handler) const
 Utility method to create a projection from an image handler. More...
 
- Public Member Functions inherited from ossimImageGeometryFactoryBase
virtual ossimObjectcreateObject (const ossimString &typeName) const
 Creates an object given a type name. More...
 
virtual ossimObjectcreateObject (const ossimKeywordlist &kwl, const char *prefix=0) const
 Creates and object given a keyword list. More...
 
- Public Member Functions inherited from ossimBaseObjectFactory
 ossimBaseObjectFactory ()
 
virtual ~ossimBaseObjectFactory ()
 
- Public Member Functions inherited from ossimObjectFactory
virtual ~ossimObjectFactory ()
 
- Public Member Functions inherited from ossimObject
 ossimObject ()
 
virtual ~ossimObject ()
 
virtual ossimObjectdup () const
 
virtual ossimString getShortName () const
 
virtual ossimString getLongName () const
 
virtual ossimString getDescription () const
 
virtual ossimString getClassName () const
 
virtual RTTItypeid getType () const
 
virtual bool canCastTo (ossimObject *obj) const
 
virtual bool canCastTo (const RTTItypeid &id) const
 
virtual bool canCastTo (const ossimString &parentClassName) const
 
virtual bool saveState (ossimKeywordlist &kwl, const char *prefix=0) const
 
virtual bool loadState (const ossimKeywordlist &kwl, const char *prefix=0)
 
virtual std::ostream & print (std::ostream &out) const
 Generic print method. More...
 
virtual bool isEqualTo (const ossimObject &obj, ossimCompareType compareType=OSSIM_COMPARE_FULL) const
 
virtual void accept (ossimVisitor &visitor)
 
- Public Member Functions inherited from ossimReferenced
 ossimReferenced ()
 
 ossimReferenced (const ossimReferenced &)
 
ossimReferencedoperator= (const ossimReferenced &)
 
void ref () const
 increment the reference count by one, indicating that this object has another pointer which is referencing it. More...
 
void unref () const
 decrement the reference count by one, indicating that a pointer to this object is referencing it. More...
 
void unref_nodelete () const
 decrement the reference count by one, indicating that a pointer to this object is referencing it. More...
 
int referenceCount () const
 

Static Public Member Functions

static ossimImageGeometryFactoryinstance ()
 
- Static Public Member Functions inherited from ossimBaseObjectFactory
static ossimBaseObjectFactoryinstance ()
 

Protected Member Functions

 ossimImageGeometryFactory ()
 
virtual ossim2dTo2dTransformcreateTransformFromNitf (ossimNitfTileSource *handler) const
 
- Protected Member Functions inherited from ossimReferenced
virtual ~ossimReferenced ()
 

Static Protected Attributes

static ossimImageGeometryFactorym_instance = 0
 

Detailed Description

Definition at line 20 of file ossimImageGeometryFactory.h.

Constructor & Destructor Documentation

◆ ossimImageGeometryFactory()

ossimImageGeometryFactory::ossimImageGeometryFactory ( )
protected

Definition at line 26 of file ossimImageGeometryFactory.cpp.

References m_instance.

Referenced by instance().

27 {
28  m_instance = this;
29 }
static ossimImageGeometryFactory * m_instance

Member Function Documentation

◆ createGeometry() [1/3]

ossimImageGeometry * ossimImageGeometryFactory::createGeometry ( const ossimString typeName) const
virtual

Implements ossimImageGeometryFactoryBase.

Definition at line 41 of file ossimImageGeometryFactory.cpp.

Referenced by createGeometry().

43 {
44  if(typeName == "ossimImageGeometry")
45  {
46  return new ossimImageGeometry();
47  }
48 
49  return 0;
50 }
Container class that holds both 2D transform and 3D projection information for an image Only one inst...

◆ createGeometry() [2/3]

ossimImageGeometry * ossimImageGeometryFactory::createGeometry ( const ossimKeywordlist kwl,
const char *  prefix = 0 
) const
virtual

Implements ossimImageGeometryFactoryBase.

Definition at line 52 of file ossimImageGeometryFactory.cpp.

References createGeometry(), ossimString::empty(), ossimKeywordlist::find(), ossimImageGeometry::loadState(), ossimRefPtr< T >::release(), ossimKeywordNames::TYPE_KW, and ossimRefPtr< T >::valid().

54 {
56  ossimString type = kwl.find(prefix, ossimKeywordNames::TYPE_KW);
57  if(!type.empty())
58  {
59  result = createGeometry(type);
60  if(result.valid()&&!result->loadState(kwl, prefix))
61  {
62  result = 0;
63  }
64  }
65 
66  return result.release();
67 }
virtual ossimImageGeometry * createGeometry(const ossimString &typeName) const
bool valid() const
Definition: ossimRefPtr.h:75
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
Attempts to initialize a transform and a projection given the KWL.
const char * find(const char *key) const
static const char * TYPE_KW
T * release()
Definition: ossimRefPtr.h:93
bool empty() const
Definition: ossimString.h:411

◆ createGeometry() [3/3]

ossimImageGeometry * ossimImageGeometryFactory::createGeometry ( const ossimFilename filename,
ossim_uint32  entryIdx 
) const
virtual

Implements ossimImageGeometryFactoryBase.

Definition at line 69 of file ossimImageGeometryFactory.cpp.

71 {
72  // currently don't support this option just yet by this factory
73  return 0;
74 }

◆ createProjection()

ossimProjection * ossimImageGeometryFactory::createProjection ( ossimImageHandler handler) const
virtual

Utility method to create a projection from an image handler.

Parameters
handlerThe image handler to create projection from.
Returns
Pointer to an ossimProjection on success, null on error.

Definition at line 130 of file ossimImageGeometryFactory.cpp.

References ossimProjectionFactoryRegistry::createProjection(), ossimProjectionFactoryRegistry::instance(), and ossimRefPtr< T >::release().

Referenced by extendGeometry().

132 {
135 
136  return result.release();
137 }
ossimProjection * createProjection(const ossimFilename &filename, ossim_uint32 entryIdx) const
T * release()
Definition: ossimRefPtr.h:93
static ossimProjectionFactoryRegistry * instance()

◆ createTransform()

ossim2dTo2dTransform * ossimImageGeometryFactory::createTransform ( ossimImageHandler handler) const
virtual

This is a utility method used by crateGeoemtry that takes an image handler.

Definition at line 113 of file ossimImageGeometryFactory.cpp.

References createTransformFromNitf(), and ossimRefPtr< T >::release().

Referenced by extendGeometry().

115 {
116  // Currently nothing to do...
117 
119 
120  ossimNitfTileSource* nitf = dynamic_cast<ossimNitfTileSource*> (handler);
121 
122  if(nitf)
123  {
124  result = createTransformFromNitf(nitf);
125  }
126 
127  return result.release();
128 }
T * release()
Definition: ossimRefPtr.h:93
virtual ossim2dTo2dTransform * createTransformFromNitf(ossimNitfTileSource *handler) const

◆ createTransformFromNitf()

ossim2dTo2dTransform * ossimImageGeometryFactory::createTransformFromNitf ( ossimNitfTileSource handler) const
protectedvirtual

Definition at line 139 of file ossimImageGeometryFactory.cpp.

References ossimRefPtr< T >::get(), ossimNitfTileSource::getCurrentImageHeader(), ossimNitfImageHeader::getIMode(), ossimNitfImageHeader::getNumberOfPixelsPerBlockHoriz(), ossimNitfImageHeader::getNumberOfPixelsPerBlockVert(), ossimNitfStdidcTag::getStartColumn(), ossimNitfStdidcTag::getStartRow(), ossimNitfImageHeader::getTagData(), ossimNitfIchipbTag::newTransform(), PTR_CAST, ossimString::toInt32(), ossimRefPtr< T >::valid(), ossimDpt::x, and ossimDpt::y.

Referenced by createTransform().

140 {
141  ossim2dTo2dTransform* result = 0;
142 
143  ossimRefPtr<ossimNitfImageHeader> hdr = nitf->getCurrentImageHeader();
144  if (!hdr)
145  {
146  return result;
147  }
148 
149  //---
150  // Test for the ichipb tag and set the sub image if needed.
151  //
152  // NOTE # 1:
153  //
154  // There are nitf writers that set the ichipb offsets and only have
155  // IGEOLO field present. For these it has been determined
156  // (but still in question) that we should not apply the sub image offset.
157  //
158  // See trac # 1578
159  // http://trac.osgeo.org/ossim/ticket/1578
160  //
161  // NOTE # 2:
162  //
163  // Let the ICHIPB have precedence over the STDIDC tag as we could have a
164  // chip of a segment.
165  //---
167  hdr->getTagData(ossimString("ICHIPB"));
168  if (tag.valid())
169  {
171  if (ichipb)
172  {
173 // const ossimRefPtr<ossimNitfRegisteredTag> blocka =
174 // hdr->getTagData(ossimString("BLOCKA"));
175 // const ossimRefPtr<ossimNitfRegisteredTag> rpc00a =
176 // hdr->getTagData(ossimString("RPC00A"));
177 // const ossimRefPtr<ossimNitfRegisteredTag> rpc00b =
178 // hdr->getTagData(ossimString("RPC00B"));
179 
180  //---
181  // If any of these tags are present we will use the sub image from
182  // the ichipb tag.
183  //---
184 // if ( blocka.get() || rpc00a.get() || rpc00b.get() )
185 
186  // ************************* THERE ARE PROBLEMS NOT SETTING THIS AT SITE. GO AHEAD AND ALWAYS INIT THE SHIFT
187  {
188  result = ichipb->newTransform();
189  }
190  }
191  }
192 
193  if ( !result)
194  {
195  //---
196  // Look for the STDIDC tag for a sub image (segment) offset.
197  //
198  // See: STDI-002 Table 7.3 for documentation.
199  //---
200  tag = hdr->getTagData(ossimString("STDIDC"));
201  if (tag.valid() && (hdr->getIMode() == "B") )
202  {
203  ossimDpt shift;
205  if (stdidc)
206  {
207  ossim_int32 startCol = stdidc->getStartColumn().toInt32();
208  ossim_int32 startRow = stdidc->getStartRow().toInt32();
209  if ( (startCol > 0) && (startRow > 0) )
210  {
211 
212  // field are one based; hence, the - 1.
213  shift.x = (startCol-1) * hdr->getNumberOfPixelsPerBlockHoriz();
214  shift.y = (startRow-1) * hdr->getNumberOfPixelsPerBlockVert();
215  }
216  if(shift.x > 0 ||
217  shift.y > 0)
218  {
219  result = new ossim2dTo2dShiftTransform(shift);
220  }
221  }
222  }
223  }
224 
225  return result;
226 }
ossimString getStartRow() const
virtual ossimString getIMode() const =0
bool valid() const
Definition: ossimRefPtr.h:75
double y
Definition: ossimDpt.h:165
ossim_int32 toInt32() const
#define PTR_CAST(T, p)
Definition: ossimRtti.h:321
virtual ossim_int32 getNumberOfPixelsPerBlockVert() const =0
double x
Definition: ossimDpt.h:164
ossimRefPtr< ossimNitfRegisteredTag > getTagData(const ossimString &tagName)
ossim2dTo2dTransform * newTransform() const
ossimString getStartColumn() const
virtual ossim_int32 getNumberOfPixelsPerBlockHoriz() const =0
int ossim_int32

◆ extendGeometry()

bool ossimImageGeometryFactory::extendGeometry ( ossimImageHandler handler) const
virtual

Implements ossimImageGeometryFactoryBase.

Definition at line 76 of file ossimImageGeometryFactory.cpp.

References createProjection(), createTransform(), ossimImageHandler::getImageGeometry(), ossimImageGeometry::getProjection(), ossimImageGeometry::getTransform(), ossimImageGeometry::hasProjection(), ossimImageGeometry::hasTransform(), ossimImageGeometry::setProjection(), ossimImageGeometry::setTransform(), and ossimRefPtr< T >::valid().

77 {
78  bool result = false;
79  if (handler)
80  {
81  bool add2D = true;
83  if(geom.valid())
84  {
85  if(!geom->getProjection())
86  {
87  geom->setProjection(createProjection(handler));
88  result = geom->hasProjection();
89  }
90  if(geom->getProjection())
91  {
92  if( !(dynamic_cast<ossimSensorModel*>(geom->getProjection())))
93  {
94  add2D = false;
95  }
96  }
97  if(!geom->getTransform()&&add2D)
98  {
99  geom->setTransform(createTransform(handler));
100  result |= geom->hasTransform();
101  }
102  }
103  }
104  return result;
105 }
void setProjection(ossimProjection *projection)
Sets the projection to be used for local-to-world coordinate transformation.
bool valid() const
Definition: ossimRefPtr.h:75
virtual ossimRefPtr< ossimImageGeometry > getImageGeometry()
Returns the image geometry object associated with this tile source or NULL if non defined...
const ossimProjection * getProjection() const
Access methods for projection (may be NULL pointer).
void setTransform(ossim2dTo2dTransform *transform)
Sets the transform to be used for local-to-full-image coordinate transformation.
virtual ossim2dTo2dTransform * createTransform(ossimImageHandler *handler) const
This is a utility method used by crateGeoemtry that takes an image handler.
const ossim2dTo2dTransform * getTransform() const
Access methods for transform (may be NULL pointer).
bool hasProjection() const
Returns TRUE if valid projection defined.
bool hasTransform() const
Returns TRUE if valid transform defined.
virtual ossimProjection * createProjection(ossimImageHandler *handler) const
Utility method to create a projection from an image handler.

◆ getTypeNameList()

void ossimImageGeometryFactory::getTypeNameList ( std::vector< ossimString > &  typeList) const
virtual

This should return the type name of all objects in all factories. This is the name used to construct the objects dynamially and this name must be unique.

Reimplemented from ossimBaseObjectFactory.

Definition at line 107 of file ossimImageGeometryFactory.cpp.

109 {
110  typeList.push_back("ossimImageGeometry");
111 }

◆ instance()

ossimImageGeometryFactory * ossimImageGeometryFactory::instance ( )
static

Definition at line 31 of file ossimImageGeometryFactory.cpp.

References m_instance, and ossimImageGeometryFactory().

Referenced by ossimImageGeometryRegistry::instance().

32 {
33  if(!m_instance)
34  {
36  }
37 
38  return m_instance;
39 }
static ossimImageGeometryFactory * m_instance

Member Data Documentation

◆ m_instance

ossimImageGeometryFactory * ossimImageGeometryFactory::m_instance = 0
staticprotected

Definition at line 50 of file ossimImageGeometryFactory.h.

Referenced by instance(), and ossimImageGeometryFactory().


The documentation for this class was generated from the following files: