OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimChipProcTool.h
Go to the documentation of this file.
1 //**************************************************************************************************
2 //
3 // OSSIM Open Source Geospatial Data Processing Library
4 // See top level LICENSE.txt file for license information
5 //
6 //**************************************************************************************************
7 
8 #ifndef ossimChipProcUtil_HEADER
9 #define ossimChipProcUtil_HEADER 1
10 
12 #include <ossim/base/ossimRefPtr.h>
13 #include <ossim/base/ossimIrect.h>
14 #include <ossim/base/ossimGrect.h>
23 #include <ossim/util/ossimTool.h>
24 #include <map>
25 #include <vector>
26 
27 /**************************************************************************************************
28  * Base class for all utilities that process chips of image (or DEM) pixels.
29  *
30  * Many utilities share parameters in common, especially ROI (bounding box), input imagery,
31  * color look-up tables, DEM file specification, etc. This class does the following:
32  * * Consolidates the parsing of common parameters,
33  * * Provides for creating input chains with needed handlers and resamplers. The derived classes
34  * would finish populating the processing chain(s) according to their requirements.
35  * * Inserts the chipper filter at the end of the processing chain
36  * * Appends the appropriate writer
37  * * Provides a functional, default implementation of execute() and getChip()
38  *
39  * @note Almost all methods use throw for stack unwinding. This is not in
40  * method declarations to alleviate build errors on windows. Sorry...
41  **************************************************************************************************/
43  public ossimProcessInterface,
45 
46 {
47 public:
50 
52  virtual ~ossimChipProcTool();
53 
54  virtual void setUsage(ossimArgumentParser& ap);
55 
57  virtual void clear();
58 
64  virtual bool initialize(ossimArgumentParser& ap);
65 
79  virtual void initialize(const ossimKeywordlist& kwl);
80 
83  virtual bool execute();
84 
85  virtual void abort();
86 
90  virtual bool isChipProcessor() const { return true; }
91 
93  virtual ossimObject* getObject();
94  virtual const ossimObject* getObject() const;
95 
97  virtual ossimRefPtr<ossimImageData> getChip(const ossimIrect& img_rect);
98  virtual ossimRefPtr<ossimImageData> getChip(const ossimGrect& gnd_rect);
99  ossimRefPtr<ossimImageData> getChip(const ossimDrect& map_bounding_rect, const ossimDpt& gsd);
100 
106  ossimRefPtr<ossimImageData> getChip();
107 
108  const ossimFilename& getProductFilename() const { return m_productFilename; }
109 
110 protected:
114  void processRemainingArgs(ossimArgumentParser& ap);
115 
117  virtual void initProcessingChain() = 0;
118 
123  virtual void finalizeChain();
124 
128  virtual void loadImageFiles();
129 
131  virtual void loadDemFiles();
132 
139  ossimRefPtr<ossimSingleImageChain> createInputChain(const ossimFilename& image_file,
140  ossim_uint32 entry_index=0);
141 
144  void createOutputProjection();
145 
149  ossimRefPtr<ossimMapProjection> newIdentityProjection();
150 
153  ossimRefPtr<ossimMapProjection> newUtmProjection();
154 
157  virtual void initializeProjectionGsd();
158 
163  virtual void initializeAOI();
164 
169  bool getProjectionOrigin(ossimGpt& gpt);
170 
177 
180  void propagateGeometryToChains();
181 
185  combineLayers(std::vector< ossimRefPtr<ossimSingleImageChain> >& layers) const;
186 
188  void computeAdjustedViewFromGrect();
189 
191  void setAoiToInputs();
192 
197  void getBandList(ossim_uint32 image_idx, std::vector<ossim_uint32>& bandList ) const;
198 
201  void setReaderProps( ossimImageHandler* ih ) const;
202 
204  ossimChipProcTool( const ossimChipProcTool& obj );
205 
207  const ossimChipProcTool& operator=( const ossimChipProcTool& /*rhs*/ ) { return *this; }
208 
209  ossimRefPtr<ossimGeoPolygon> createClipPolygon()const;
210 
213  void findCenterGpt(ossimGpt& gpt);
214 
219  ossimRefPtr<ossimImageSource> mosaicDemSources();
220 
221  ossimRefPtr<ossimImageGeometry> m_geom; //> Product chip/image geometry
224  std::vector< ossimRefPtr<ossimSingleImageChain> > m_imgLayers;
225  std::vector< ossimFilename > m_demSources; //> Stores list of DEMs provided to the utility (versus pulled from the elevation database)
230  ossimDpt m_gsd; // meters
234  bool m_needCutRect; // True when a specific AOI, different from the input, was requested
235 };
236 
237 #endif /* #ifndef ossimChipProcUtil_HEADER */
ossimRefPtr< ossimImageGeometry > m_geom
virtual ossimListenerManager * getManager()
ossimGrect m_aoiGroundRect
Represents serializable keyword/value map.
virtual void clear()
Disconnects and clears the DEM and image layers.
Definition: ossimTool.cpp:28
ossimRefPtr< ossimImageChain > m_procChain
std::vector< ossimFilename > m_demSources
ossimFilename m_productFilename
virtual void setUsage(ossimArgumentParser &ap)
Initializes the aurgument parser with expected parameters and options.
Definition: ossimTool.cpp:41
unsigned int ossim_uint32
std::vector< ossimRefPtr< ossimSingleImageChain > > m_imgLayers
ossimRefPtr< ossimImageFileWriter > m_writer
virtual bool initialize(ossimArgumentParser &ap)
Initializes from command line arguments.
Definition: ossimTool.cpp:58
ossimScalarType
virtual ossimObject * getObject()=0
virtual bool execute()=0
This class defines an abstract Handler which all image handlers(loaders) should derive from...
ossimScalarType m_productScalarType
#define OSSIM_DLL
const ossimChipProcTool & operator=(const ossimChipProcTool &)
Hidden from use assignment operator.
const ossimFilename & getProductFilename() const
virtual bool isChipProcessor() const
Overrides base class implementation to indicate this class supports getChip() calls.
ossimRefPtr< ossimRectangleCutFilter > m_cutRectFilter