OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimChipperUtil.h
Go to the documentation of this file.
1 //----------------------------------------------------------------------------
2 //
3 // File: ossimChipperUtil.h
4 //
5 // License: MIT
6 //
7 // See LICENSE.txt file in the top level directory for more details.
8 //
9 // Author: David Burken
10 //
11 // Description:
12 //
13 // Utility class to for chipping out images. Orthorectifying imagery with an
14 // added slant toward doing digital elevation model(DEM) operations.
15 //
16 //----------------------------------------------------------------------------
17 // $Id: ossimChipperUtil.h 23423 2015-07-13 19:07:38Z dburken $
18 
19 #ifndef ossimChipperUtil_HEADER
20 #define ossimChipperUtil_HEADER 1
21 
24 #include <ossim/base/ossimRefPtr.h>
29 
30 #include <map>
31 #include <vector>
32 
33 // Forward class declarations:
36 class ossimDpt;
37 class ossimFilename;
38 class ossimGeoPolygon;
39 class ossimGpt;
40 class ossimImageData;
42 class ossimImageGeometry;
44 class ossimIrect;
45 class ossimKeywordlist;
46 
62 {
63 public:
64 
67  {
68  OSSIM_CHIPPER_OP_UNKNOWN = 0,
69  OSSIM_CHIPPER_OP_HILL_SHADE = 1,
70  OSSIM_CHIPPER_OP_COLOR_RELIEF = 2,
71  OSSIM_CHIPPER_OP_ORTHO = 3,
72  OSSIM_CHIPPER_OP_2CMV = 4, // two color multiview
73  OSSIM_CHIPPER_OP_CHIP = 5, // image space
74  OSSIM_CHIPPER_OP_PSM = 6 // pan sharpened multispectral
75  };
76 
79  {
80  OSSIM_CHIPPER_PROJ_UNKNOWN = 0,
81  OSSIM_CHIPPER_PROJ_GEO = 1,
82  OSSIM_CHIPPER_PROJ_GEO_SCALED = 2,
83  OSSIM_CHIPPER_PROJ_INPUT = 3,
84  OSSIM_CHIPPER_PROJ_UTM = 4
85  };
86 
89 
91  virtual ~ossimChipperUtil();
92 
96  void clear();
97 
105  bool initialize(ossimArgumentParser& ap);
106 
107 
113  void initialize(const ossimKeywordlist& kwl);
114 
119  void execute();
120 
121  void abort();
122 
129 // ossimRefPtr<ossimImageData> getChip();
130 
144  ossimRefPtr<ossimImageData> getChip(const ossimKeywordlist& optionsKwl= ossimKeywordlist());
145 
150  void getOutputFilename(ossimFilename& f) const;
151 
152 private:
153 
159  void initialize();
160 
166  ossimRefPtr<ossimImageSource> initializeChain( ossimIrect& aoi );
167 
168  void setOptionsToChain( ossimIrect& aoi, const ossimKeywordlist& kwl );
169 
174  ossimRefPtr<ossimImageSource> initializeColorReliefChain();
175 
180  ossimRefPtr<ossimImageSource> initializeBumpShadeChain();
181 
186  ossimRefPtr<ossimImageSource> initialize2CmvChain();
187 
192  ossimRefPtr<ossimImageSource> initializePsmChain();
193 
198  void initializeOutputProjection();
199 
201  void addDemSources();
202 
208  void addDemSource(const ossimFilename& file,
209  ossim_uint32 entryIndex);
210 
215  void addDemSource(const ossimSrcRecord& rec);
216 
218  void addImgSources();
219 
225  void addImgSource(const ossimFilename& file,
226  ossim_uint32 entryIndex);
227 
232  void addImgSource(const ossimSrcRecord& rec);
233 
243  ossimRefPtr<ossimSingleImageChain> createChain(const ossimFilename& file,
244  ossim_uint32 entryIndex,
245  bool isDemSource) const;
246 
255  ossimRefPtr<ossimSingleImageChain> createChain(const ossimSrcRecord& rec,
256  bool isDemSource) const;
257 
262  void createOutputProjection();
263 
270  void createIdentityProjection();
271 
280  ossimRefPtr<ossimMapProjection> getFirstInputProjection();
281 
286  ossimRefPtr<ossimMapProjection> getNewGeoProjection();
287 
295  ossimRefPtr<ossimMapProjection> getNewGeoScaledProjection();
296 
301  ossimRefPtr<ossimMapProjection> getNewProjectionFromSrsCode(
302  const std::string& code );
303 
308  ossimRefPtr<ossimMapProjection> getNewUtmProjection();
309 
320  ossimRefPtr<ossimMapProjection> getMapProjection();
321 
326  void intiailizeProjectionTiePoint();
327 
335  void initializeProjectionGsd();
336 
344  void initializeIvtScale();
345 
350  void getTiePoint(ossimGpt& tie);
351 
358  void getTiePoint(ossimSingleImageChain* chain, ossimGpt& tie);
359 
364  void getTiePoint(ossimDpt& tie);
365 
372  void getTiePoint(ossimSingleImageChain* chain, ossimDpt& tie);
373 
378  void getMetersPerPixel(ossimDpt& gsd);
379 
386  void getMetersPerPixel(ossimSingleImageChain* chain, ossimDpt& gsd);
387 
395  ossim_float64 getCentralMeridian() const;
396 
404  ossim_float64 getOriginLatitude() const;
405 
411  void getSceneCenter(ossimGpt& gpt);
412 
419  void getSceneCenter(ossimSingleImageChain* chain, ossimGpt& gpt);
420 
432  ossimRefPtr<ossimImageFileWriter> createNewWriter() const;
433 
438  void propagateOutputProjectionToChains();
439 
444  ossimRefPtr<ossimImageSource> combineLayers(
445  std::vector< ossimRefPtr<ossimSingleImageChain> >& layers) const;
446 
448  ossimRefPtr<ossimImageSource> combineLayers();
449 
456  ossimRefPtr<ossimImageSource> addIndexToRgbLutFilter(
457  ossimRefPtr<ossimImageSource> &source) const;
458 
466  ossimRefPtr<ossimImageSource> addScalarRemapper(
468  ossimScalarType scalar) const;
469 
475  ossimRefPtr<ossimImageSource> addAnnotations(
476  ossimRefPtr<ossimImageSource> &source) const;
477 
483  void addCrossHairAnnotation(
485  const std::string& prefix ) const;
486 
492  bool setupChainHistogram( ossimRefPtr<ossimSingleImageChain>& chain,
493  std::shared_ptr<ossimSrcRecord> srcRecordPtr=0) const;
494 
501  bool setChainEntry( ossimRefPtr<ossimSingleImageChain>& chain,
502  ossim_uint32 entryIndex ) const;
503 
515  void getAreaOfInterest( ossimImageSource* source, ossimIrect& rect ) const;
516 
523  bool getIrect( const std::string& s, ossimIrect& rect ) const;
524 
535  bool getIrect( ossimRefPtr<ossimSingleImageChain>& chain,
536  const std::string& s, ossimIrect& rect ) const;
537 
547  bool getIrect( ossimRefPtr<ossimSingleImageChain>& chain,
548  ossimIrect& rect ) const;
549 
562  void initializeThumbnailProjection(const ossimIrect& originalRect,
563  ossimIrect& adjustedRect);
564 
566  bool hasBandSelection() const;
567 
576  void getBandList( std::vector<ossim_uint32>& bandList ) const;
577 
579  bool hasAnnotations() const;
580 
582  bool hasLutFile() const;
583 
585  bool hasBrightnesContrastOperation() const;
586 
588  bool hasGeoPolyCutterOption()const;
589 
594  bool hasBumpShadeArg() const;
595 
597  bool hasThumbnailResolution() const;
598 
600  bool hasHistogramOperation() const;
601 
603  bool isDemFile(const ossimFilename& file) const;
604 
606  bool isSrcFile(const ossimFilename& file) const;
607 
609  void initializeSrcKwl();
610 
615  ossim_uint32 getNumberOfInputs() const;
616 
624  ossimChipperOutputProjection getOutputProjectionType() const;
625 
633  ossimScalarType getOutputScalarType() const;
634 
636  bool scaleToEightBit() const;
637 
639  bool snapTieToOrigin() const;
640 
653  void getImageSpaceScale(ossimDpt &imageSpaceScale) const;
654 
666  void getImageSpacePivot(ossimDpt &imageSpacePivot) const;
667 
676  ossim_float64 getRotation() const;
677 
679  bool hasRotation() const;
680 
682  bool upIsUp() const;
683 
685  bool northUp() const;
686 
688  bool isChipMode() const;
689 
691  bool keyIsTrue( const std::string& key ) const;
692 
697  ossim_uint32 getEntryNumber() const;
698 
703  ossim_int32 getZone() const;
704 
709  std::string getHemisphere() const;
710 
715  bool hasSensorModelInput();
716 
720  bool hasCutBoxWidthHeight() const;
721 
725  bool hasWmsBboxCutWidthHeight() const;
726 
730  bool hasScaleOption() const;
731 
735  bool isThreeBandOut() const;
736 
740  bool padThumbnail() const;
741 
746  void setReaderProps( ossimImageHandler* ih ) const;
747 
752  void addArguments(ossimArgumentParser& ap);
753 
754  void getClipPolygon(ossimGeoPolygon& polygon)const;
763  ossim_float64 getBrightness() const;
764 
773  ossim_float64 getContrast() const;
774 
782  std::string getSharpenMode() const;
783 
784  int getHistoMode() const;
785 
787  void usage(ossimArgumentParser& ap);
788 
790  ossimChipperUtil( const ossimChipperUtil& obj );
791 
793  const ossimChipperUtil& operator=( const ossimChipperUtil& rhs );
794 
795  ossimRefPtr<ossimImageSource> createCombiner()const;
796 
799 
802 
805 
812 
818 
820  std::vector< ossimRefPtr<ossimSingleImageChain> > m_demLayer;
821 
823  std::vector< ossimRefPtr<ossimSingleImageChain> > m_imgLayer;
824 
829 
835 
836 };
837 
838 #endif /* #ifndef ossimChipperUtil_HEADER */
Class used for parsing the command line *.src files.
void usage()
Represents serializable keyword/value map.
ossimReferenced allows for shared object ref counting if the reference count ever gets to 0 or less i...
ossimRefPtr< ossimImageFileWriter > m_writer
We need access to the writer so we can support aborting.
Pure virtual base class for image file writers.
ossimRefPtr< ossimKeywordlist > m_srcKwl
Hold contents of src file if –src is used.
Single image chain class.
std::vector< ossimRefPtr< ossimSingleImageChain > > m_imgLayer
Array of image source chains.
double ossim_float64
unsigned int ossim_uint32
ossimChipperOutputProjection
emumerated output projections
ossimRefPtr< ossimKeywordlist > m_kwl
Hold all options passed into intialize.
ossimChipperUtil class.
ossimRefPtr< ossimImageGeometry > m_geom
The image geometry.
Container class that holds both 2D transform and 3D projection information for an image Only one inst...
ossimScalarType
ossimChipperOperation m_operation
Enumerated operation to perform.
ossimRefPtr< ossimImageSource > m_source
We need to support changing clips without doing a full initilization.
ossimRefPtr< ossimImageViewAffineTransform > m_ivt
Image view transform(IVT).
This class defines an abstract Handler which all image handlers(loaders) should derive from...
ossimReferenced & operator=(const ossimReferenced &)
#define OSSIM_DLL
ossimChipperOperation
emumerated operations
int ossim_int32
std::vector< ossimRefPtr< ossimSingleImageChain > > m_demLayer
Array of dem chains.