OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimPolyArea2d.h
Go to the documentation of this file.
1 //*******************************************************************
2 //
3 // License: See top level LICENSE.txt file.
4 //
5 // Author: Garrett Potts
6 //*******************************************************************
7 //$Id: ossimPolyArea2d.h 23608 2015-10-28 13:51:35Z gpotts $
8 
9 #ifndef ossimPolyArea2d_HEADER
10 #define ossimPolyArea2d_HEADER 1
11 
12 #include <ossim/base/ossimDpt.h>
13 #include <ossim/base/ossimGpt.h>
17 #include <vector>
18 
19 class ossimDrect;
20 class ossimIrect;
22 
23 namespace geos
24 {
25  namespace geom
26  {
27  class Geometry;
28  }
29 }
30 
32 {
33 public:
34  friend class OssimPolyArea2dPrivate;
36 
38  ossimPolyArea2d(const vector<ossimGpt>& polygon);
39  ossimPolyArea2d(const vector<ossimDpt>& polygon);
40  ossimPolyArea2d(const ossimPolygon& shell, const vector<ossimPolygon>& holes);
41 
42  ossimPolyArea2d(const ossimDpt& p1,
43  const ossimDpt& p2,
44  const ossimDpt& p3,
45  const ossimDpt& p4);
46  ossimPolyArea2d(const ossimPolyArea2d& rhs);
47 
48  ossimPolyArea2d(const ossimIrect& rect);
49  ossimPolyArea2d(const ossimDrect& rect);
50  ossimPolyArea2d(const ossimPolygon& polygon);
51  ~ossimPolyArea2d();
52 
53  void clear()
54  {
55  clearPolygons();
56  }
57  const ossimPolyArea2d& operator =(const ossimPolyArea2d& rhs);
58  const ossimPolyArea2d& operator =(const ossimPolygon& rhs);
59  const ossimPolyArea2d& operator =(const ossimIrect& rect);
60  const ossimPolyArea2d& operator =(const ossimDrect& rect);
61  const ossimPolyArea2d& operator =(const vector<ossimGpt>& polygon);
62  const ossimPolyArea2d& operator =(const vector<ossimDpt>& polygon);
63  const ossimPolyArea2d& operator &=(const ossimPolyArea2d& rhs);
64  ossimPolyArea2d operator &(const ossimPolyArea2d& rhs)const;
66  const ossimPolyArea2d& operator +=(const ossimPolyArea2d& rhs);
68  const ossimPolyArea2d& operator -=(const ossimPolyArea2d& rhs);
69 
70  bool intersects(const ossimPolyArea2d& rhs)const;
71 
72  void add(const ossimPolyArea2d& rhs);
73  bool getVisiblePolygons(vector<ossimPolygon>& polyList)const;
74  bool getPolygonHoles(vector<ossimPolygon>& polyList)const;
75 
101  bool getCompletePolygons(vector<ossimPolyArea2d>& polyList)const;
102 
103  bool isEmpty()const;
104  bool isValid(bool displayValidationError = false)const;
105  bool isPointWithin(const ossimDpt& point)const;
106  bool isPointWithin(double x, double y)const;
107  void getBoundingRect(ossimDrect& rect);
108 
112  std::string toString()const;
113 
123  ossimPolyArea2d getBufferedShape(double distance=FLT_EPSILON) const;
124 
125  ossimPolyArea2d& setToBufferedShape(double distance=FLT_EPSILON);
126 
127  ossimPolyArea2d& toMultiPolygon();
128  bool saveState(ossimKeywordlist& kwl,
129  const char* prefix=0)const;
130  bool loadState(const ossimKeywordlist& kwl,
131  const char* prefix=0);
132 
133 protected:
134 
135  void clearPolygons();
136  void recurseVisibleGeometries(ossimPolygon::Vector& polyList,
137  const geos::geom::Geometry* geom) const;
138 
139  void recurseHoles(ossimPolygon::Vector& polyList,
140  const geos::geom::Geometry* geom) const;
141 
146  void recurseCompleteGeometries(std::vector<ossimPolyArea2d>& polyList,
147  const geos::geom::Geometry* geom) const;
148 
150 };
151 
152 #endif /* #ifndef ossimPolyArea2d_HEADER */
ossim_uint32 x
ossimRationalNumber operator-(ossim_int32 i, ossimRationalNumber &r)
Represents serializable keyword/value map.
ossim_uint32 y
ossimReferenced allows for shared object ref counting if the reference count ever gets to 0 or less i...
OssimPolyArea2dPrivate * m_privateData
ostream & operator<<(ostream &out, const ossimAxes &axes)
Definition: ossimAxes.h:88
#define FLT_EPSILON
std::vector< ossimPolygon > Vector
Definition: ossimPolygon.h:41
ossimReferenced & operator=(const ossimReferenced &)
#define OSSIM_DLL
float distance(double lat1, double lon1, double lat2, double lon2, int units)
ossimRationalNumber operator+(ossim_int32 i, ossimRationalNumber &r)
std::basic_ostream< char > ostream
Base class for char output streams.
Definition: ossimIosFwd.h:23