HydroCouple  2.0.0
HydroCouple Interface Definitions
hydrocouplespatial.h
Go to the documentation of this file.
1 
24 #ifndef HYDROCOUPLESPATIAL_H
25 #define HYDROCOUPLESPATIAL_H
26 
27 #include "hydrocouple.h"
28 
29 using namespace std;
30 
31 namespace HydroCouple
32 {
36  namespace Spatial
37  {
38  class IEdge;
39  class IRasterBand;
40  class IPolygon;
41  class IPolyhedralSurface;
42 
48  {
53 
58 
63  };
64 
69  {
70 
71  public:
72 
76  virtual ~ISpatialReferenceSystem() = 0;
77 
83  virtual int authSRID() const = 0;
84 
88  virtual string authName() const = 0;
89 
93  virtual string srText() const = 0;
94  };
95 
99  class IEnvelope
100  {
101  public:
102 
106  virtual ~IEnvelope() = 0;
107 
112  virtual double minX() const = 0;
113 
118  virtual double maxX() const = 0;
119 
124  virtual double minY() const = 0;
125 
130  virtual double maxY() const = 0;
131 
136  virtual double minZ() const = 0;
137 
142  virtual double maxZ() const = 0;
143  };
144 
148  class IGeometry
149  {
150  public:
155  {
156  Geometry = 0,
157  Point = 1,
158  LineString = 2,
159  Polygon = 3,
160  Triangle = 17,
161  MultiPoint = 4,
162  MultiLineString = 5,
163  MultiPolygon = 6,
164  GeometryCollection = 7,
165  CircularString = 8,
166  CompoundCurve = 9,
167  CurvePolygon = 10,
168  MultiCurve = 11,
169  MultiSurface = 12,
170  Curve = 13,
171  Surface = 14,
172  PolyhedralSurface = 15,
173  TIN = 16,
174 
175  GeometryZ = 1000,
176  PointZ = 1001,
177  LineStringZ = 1002,
178  PolygonZ = 1003,
179  TriangleZ = 1017,
180  MultiPointZ = 1004,
181  MultiLineStringZ = 1005,
182  MultiPolygonZ = 1006,
183  GeometryCollectionZ = 1007,
184  CircularStringZ = 1008,
185  CompoundCurveZ = 1009,
186  CurvePolygonZ = 1010,
187  MultiCurveZ = 1011,
188  MultiSurfaceZ = 1012,
189  CurveZ = 1013,
190  SurfaceZ = 1014,
191  PolyhedralSurfaceZ = 1015,
192  TINZ = 1016,
193 
194  GeometryM = 2000,
195  PointM = 2001,
196  LineStringM = 2002,
197  PolygonM = 2003,
198  TriangleM = 2017,
199  MultiPointM = 2004,
200  MultiLineStringM = 2005,
201  MultiPolygonM = 2006,
202  GeometryCollectionM = 2007,
203  CircularStringM = 2008,
204  CompoundCurveM = 2009,
205  CurvePolygonM = 2010,
206  MultiCurveM = 2011,
207  MultiSurfaceM = 2012,
208  CurveM = 2013,
209  SurfaceM = 2014,
210  PolyhedralSurfaceM = 2015,
211  TINM = 2016,
212 
213  GeometryZM = 3000,
214  PointZM = 3001,
215  LineStringZM = 3002,
216  PolygonZM = 3003,
217  TriangleZM = 3017,
218  MultiPointZM = 3004,
219  MultiLineStringZM = 3005,
220  MultiPolygonZM = 3006,
221  GeometryCollectionZM = 3007,
222  CircularStringZM = 3008,
223  CompoundCurveZM = 3009,
224  CurvePolygonZM = 3010,
225  MultiCurveZM = 3011,
226  MultiSurfaceZM = 3012,
227  CurveZM = 3013,
228  SurfaceZM = 3014,
229  PolyhedralSurfaceZM = 3015,
230  TINZM = 3016,
231  };
232 
236  virtual ~IGeometry() = 0;
237 
242  virtual string id() const = 0;
243 
248  virtual unsigned int index() const = 0;
249 
257  virtual int dimension() const = 0;
258 
264  virtual int coordinateDimension() const = 0;
265 
274  virtual GeometryType geometryType() const = 0;
275 
280 
285  virtual IEnvelope *envelope() const = 0;
286 
291  virtual string getWKT() const = 0;
292 
296  virtual unsigned char *getWKB(int &size) const = 0;
297 
302  virtual bool isEmpty() const = 0;
303 
311  virtual bool isSimple() const = 0;
312 
316  virtual bool is3D() const = 0;
317 
321  virtual bool isMeasured() const = 0;
322 
332  virtual IGeometry *boundary() const = 0;
333 
338 
342  virtual bool equals(const IGeometry &geom) const = 0;
343 
347  virtual bool disjoint(const IGeometry &geom) const = 0;
348 
352  virtual bool intersects(const IGeometry &geom) const = 0;
353 
357  virtual bool touches(const IGeometry &geom) const = 0;
358 
362  virtual bool crosses(const IGeometry &geom) const = 0;
363 
367  virtual bool within(const IGeometry &geom) const = 0;
368 
372  virtual bool contains(const IGeometry &geom) const = 0;
373 
377  virtual bool overlaps(const IGeometry &geom) const = 0;
378 
388  virtual bool relate(const IGeometry &geom) const = 0;
389 
393  virtual IGeometry *locateAlong(double value) const = 0;
394 
398  virtual IGeometry *locateBetween(double mStart, double mEnd) const = 0;
399 
401 
415  virtual double distance(const IGeometry &geom) const = 0;
416 
424  virtual IGeometry *buffer(double bufferDistance) const = 0;
425 
432  virtual IGeometry *convexHull() const = 0;
433 
437  virtual IGeometry *intersection(const IGeometry &geom) const = 0;
438 
442  virtual IGeometry *unionG(const IGeometry &geom) const = 0;
443 
447  virtual IGeometry *difference(const IGeometry &geom) const = 0;
448 
452  virtual IGeometry *symmetricDifference(const IGeometry &geom) const = 0;
453 
455  };
456 
470  class IGeometryCollection : public virtual IGeometry
471  {
472 
473  public:
474 
478  virtual ~IGeometryCollection() = 0;
479 
484  virtual int geometryCount() const = 0;
485 
491  virtual IGeometry *geometry(int index) const = 0;
492  };
493 
504  class IPoint : public virtual IGeometry
505  {
506  public:
507 
511  virtual ~IPoint() = 0;
512 
516  virtual double x() const = 0;
517 
521  virtual double y() const = 0;
522 
526  virtual double z() const = 0;
527 
531  virtual double m() const = 0;
532  };
533 
547  class IMultiPoint : public virtual IGeometryCollection
548  {
549 
550  public:
551 
555  virtual ~IMultiPoint() = 0;
556 
560  virtual IPoint *point(int index) const = 0;
561  };
562 
566  class IVertex : public virtual IPoint
567  {
568  public:
569 
573  virtual ~IVertex() = 0;
574 
580  virtual IEdge *edge() const = 0;
581  };
582 
606  class ICurve : public virtual IGeometry
607  {
608 
609  public:
610 
614  virtual ~ICurve() = 0;
615 
619  virtual double length() const = 0;
620 
624  virtual IPoint *startPoint() const = 0;
625 
629  virtual IPoint *endPoint() const = 0;
630 
634  virtual bool isClosed() const = 0;
635 
640  virtual bool isRing() const = 0;
641  };
642 
664  class IMultiCurve : public virtual IGeometryCollection
665  {
666  public:
667  virtual ~IMultiCurve() = 0;
668 
673  virtual bool isClosed() const = 0;
674 
679  virtual double length() const = 0;
680  };
681 
686  class ILineString : public virtual ICurve
687  {
688  public:
689 
693  virtual ~ILineString() = 0;
694 
698  virtual int pointCount() const = 0;
699 
703  virtual IPoint *point(int index) const = 0;
704  };
705 
709  class IMultiLineString : public virtual IMultiCurve
710  {
711  public:
712 
716  virtual ~IMultiLineString() = 0;
717 
719  virtual ILineString *lineString(int index) const = 0;
720  };
721 
725  class ILine : public virtual ILineString
726  {
727  public:
728 
732  virtual ~ILine() = 0;
733  };
734 
738  class ILinearRing : public virtual ILineString
739  {
740  public:
741 
745  virtual ~ILinearRing() = 0;
746  };
747 
754  class IEdge
755  {
756  public:
757 
761  virtual ~IEdge() = 0;
762 
767  virtual unsigned int index() const = 0;
768 
773  virtual IVertex *orig() = 0;
774 
779  virtual IVertex *dest() = 0;
780 
786  virtual IPolygon *left() = 0;
787 
793  virtual IPolygon *right() = 0;
794 
799  virtual IPolygon *face() = 0;
800 
806  virtual IEdge *rot() = 0;
807 
813  virtual IEdge *invRot() = 0;
814 
820  virtual IEdge *sym() = 0;
821 
827  virtual IEdge *origNext() = 0;
828 
834  virtual IEdge *origPrev() = 0;
835 
841  virtual IEdge *destNext() = 0;
842 
848  virtual IEdge *destPrev() = 0;
849 
855  virtual IEdge *leftNext() = 0;
856 
862  virtual IEdge *leftPrev() = 0;
863 
869  virtual IEdge *rightNext() = 0;
870 
876  virtual IEdge *rightPrev() = 0;
877  };
878 
901  class ISurface : public virtual IGeometry
902  {
903  public:
904 
908  virtual ~ISurface() = 0;
909 
914  virtual double area() const = 0;
915 
920  virtual IPoint *centroid() const = 0;
921 
925  virtual IPoint *pointOnSurface() const = 0;
926 
931  virtual IMultiCurve *boundaryMultiCurve() const = 0;
932  };
933 
938  class IMultiSurface : public virtual IGeometryCollection
939  {
940 
941  public:
942 
946  virtual ~IMultiSurface() = 0;
947 
952  virtual double area() const = 0;
953 
958  virtual IPoint *centroid() const = 0;
959 
964  virtual IPoint *pointOnSurface() const = 0;
965  };
966 
1004  class IPolygon : public virtual ISurface
1005  {
1006  public:
1007 
1011  virtual ~IPolygon() = 0;
1012 
1016  virtual ILineString *exteriorRing() const = 0;
1017 
1021  virtual int interiorRingCount() const = 0;
1022 
1026  virtual ILineString *interiorRing(int index) const = 0;
1027 
1033  virtual IEdge *edge() const = 0;
1034 
1040  };
1041 
1045  class IMultiPolygon : public virtual IMultiSurface
1046  {
1047 
1048  public:
1049  virtual ~IMultiPolygon() = 0;
1050 
1054  virtual IPolygon *polygon(int index) const = 0;
1055  };
1056 
1061  class ITriangle : public virtual IPolygon
1062  {
1063  public:
1064 
1068  virtual ~ITriangle() = 0;
1069 
1073  virtual IVertex *p1() const = 0;
1074 
1078  virtual IVertex *p2() const = 0;
1079 
1083  virtual IVertex *p3() const = 0;
1084  };
1085 
1089  class INetwork : public virtual IIdentity
1090  {
1091  public:
1095  virtual ~INetwork() = 0;
1096 
1101  virtual int edgeCount() const = 0;
1102 
1108  virtual IEdge *edge(int index) const = 0;
1109 
1114  virtual int vertexCount() const = 0;
1115 
1121  virtual IVertex *vertex(int index) const = 0;
1122  };
1123 
1158  class IPolyhedralSurface : public virtual ISurface
1159  {
1160  public:
1161 
1165  virtual ~IPolyhedralSurface() = 0;
1166 
1171  virtual int patchCount() const = 0;
1172 
1177  virtual IPolygon *patch(int index) const = 0;
1178 
1183  virtual int vertexCount() const = 0;
1184 
1190  virtual IVertex *vertex(int index) const = 0;
1191 
1196  virtual IMultiPolygon *boundingPolygons(const IPolygon *polygon) const = 0;
1197 
1202  virtual bool isClosed() const = 0;
1203  };
1204 
1209  class ITIN : public virtual IPolyhedralSurface
1210  {
1211  public:
1212 
1216  virtual ~ITIN() = 0;
1217 
1221  virtual ITriangle *triangle(int index) const = 0;
1222  };
1223 
1227  class IRaster : public virtual IIdentity
1228  {
1229 
1230  public:
1235  {
1259  CFloat64
1260  };
1261 
1265  virtual ~IRaster() = 0;
1266 
1270  virtual int xSize() const = 0;
1271 
1275  virtual int ySize() const = 0;
1276 
1280  virtual int rasterBandCount() const = 0;
1281 
1285  virtual void addRasterBand(RasterDataType dataType) = 0;
1286 
1291 
1300  virtual void geoTransformation(double *transformationMatrix) = 0;
1301 
1305  virtual IRasterBand *getRasterBand(int bandIndex) const = 0;
1306  };
1307 
1311  class IRasterBand : public virtual IIdentity
1312  {
1313 
1314  public:
1318  virtual ~IRasterBand() = 0;
1319 
1321  virtual int xSize() const = 0;
1322 
1324  virtual int ySize() const = 0;
1325 
1327  virtual IRaster *raster() const = 0;
1328 
1330  virtual IRaster::RasterDataType dataType() const = 0;
1331 
1340  virtual void read(int xOffset, int yOffset, int xSize, int ySize, void *image) const = 0;
1341 
1350  virtual void write(int xOffset, int yOffset, int xSize, int ySize, const void *image) = 0;
1351 
1355  virtual double noData() const = 0;
1356  };
1357 
1362  {
1368  Curvilinear
1369  };
1370 
1374  class IRegularGrid2D : public virtual IIdentity
1375  {
1376  public:
1377 
1381  virtual ~IRegularGrid2D() = 0;
1382 
1387  virtual RegularGridType gridType() const = 0;
1388 
1393  virtual int numXNodes() const = 0;
1394 
1399  virtual int numYNodes() const = 0;
1400 
1407  virtual double xNodeLocation(int xNodeIndex, int yNodeIndex) const = 0;
1408 
1415  virtual double yNodeLocation(int xNodeIndex, int yNodeIndex) const = 0;
1416 
1423  virtual bool isActive(int xCellIndex, int yCellIndex) const = 0;
1424  };
1425 
1429  class IRegularGrid3D : public virtual IIdentity
1430  {
1431  public:
1432 
1436  virtual ~IRegularGrid3D() = 0;
1437 
1442  virtual RegularGridType gridType() const = 0;
1443 
1448  virtual int numXNodes() const = 0;
1449 
1454  virtual int numYNodes() const = 0;
1455 
1460  virtual int numZNodes() const = 0;
1461 
1468  virtual double xNodeLocation(int xNodeIndex, int yNodeIndex) const = 0;
1469 
1476  virtual double yNodeLocation(int xNodeIndex, int yNodeIndex) const = 0;
1477 
1485  virtual double zNodeLocation(int xNodeIndex, int yNodeIndex, int zNodeIndex) const = 0;
1486 
1494  virtual bool isActive(int xCellIndex, int yCellIndex, int zCellIndex) const = 0;
1495  };
1496 
1501  {
1502  using IComponentDataItem::getValue;
1503  using IComponentDataItem::setValue;
1504 
1505  public:
1506 
1511 
1517 
1522  virtual int geometryCount() const = 0;
1523 
1529  virtual IGeometry *geometry(int geometryIndex) const = 0;
1530 
1536 
1542 
1548  virtual void getValue(int geometryDimensionIndex, void *data) const = 0;
1549 
1556  virtual void getValues(int geometryDimensionIndex, int stride, void *data) const = 0;
1557 
1563  virtual void setValue(int geometryDimensionIndex, const void *data) = 0;
1564 
1571  virtual void setValues(int geometryDimensionIndex, int stride, const void *data) = 0;
1572  };
1573 
1578  {
1579  using IComponentDataItem::getValue;
1580  using IComponentDataItem::setValue;
1581 
1582  public:
1584 
1589  virtual INetwork *network() const = 0;
1590 
1595  virtual MeshDataType meshDataType() const = 0;
1596 
1601  virtual IDimension *edgeDimension() const = 0;
1602 
1607  virtual IDimension *nodeDimension() const = 0;
1608 
1615  virtual void getValue(int edgeDimensionIndex, int nodeDimensionIndex, void *data) const = 0;
1616 
1623  virtual void setValue(int edgeDimensionIndex, int nodeDimensionIndex, const void *data) = 0;
1624  };
1625 
1630  {
1631  using IComponentDataItem::getValue;
1632  using IComponentDataItem::setValue;
1633 
1634  public:
1635 
1640 
1645  virtual MeshDataType meshDataType() const = 0;
1646 
1651 
1656  virtual IDimension *cellDimension() const = 0;
1657 
1662  virtual IDimension *edgeDimension() const = 0;
1663 
1668  virtual IDimension *nodeDimension() const = 0;
1669 
1677  virtual void getValue(int cellDimensionIndex, int edgeDimensionIndex, int nodeDimensionIndex, void *data) const = 0;
1678 
1686  virtual void setValue(int cellDimensionIndex, int edgeDimensionIndex, int nodeDimensionIndex, const void *data) = 0;
1687  };
1688 
1694  {
1695  public:
1696 
1700  virtual ~ITINComponentDataItem() = 0;
1701 
1705  virtual ITIN *TIN() const = 0;
1706  };
1707 
1712  {
1715 
1716  public:
1717 
1722 
1726  virtual IRaster *raster() const = 0;
1727 
1731  virtual IDimension *xDimension() const = 0;
1732 
1736  virtual IDimension *yDimension() const = 0;
1737 
1741  virtual IDimension *bandDimension() const = 0;
1742 
1750  virtual void getValue(int xIndex, int yIndex, int band, void *data) const = 0;
1751 
1761  virtual void getValues(int xIndex, int yIndex, int band, int xStride, int yStride, void *data) const = 0;
1762 
1770  virtual void setValue(int xIndex, int yIndex, int band, const void *data) = 0;
1771 
1781  virtual void setValues(int xIndex, int yIndex, int band, int xStride, int yStride, const void *data) = 0;
1782  };
1783 
1788  {
1789 
1790  using IComponentDataItem::getValue;
1791  using IComponentDataItem::setValue;
1792 
1793  public:
1798 
1802  virtual IRegularGrid2D *grid() const = 0;
1803 
1808  virtual MeshDataType meshDataType() const = 0;
1809 
1813  virtual IDimension *xCellDimension() const = 0;
1814 
1818  virtual IDimension *yCellDimension() const = 0;
1819 
1824  virtual IDimension *cellEdgeDimension() const = 0;
1825 
1830  virtual IDimension *cellNodeDimension() const = 0;
1831 
1840  virtual void getValue(int xCellIndex, int yCellIndex, int cellEdgeIndex, int cellNodeIndex, void *data) const = 0;
1841 
1850  virtual void setValue(int xCellIndex, int yCellIndex, int cellEdgeIndex, int cellNodeIndex, const void *data) = 0;
1851  };
1852 
1857  {
1858 
1859  using IComponentDataItem::getValue;
1860  using IComponentDataItem::setValue;
1861 
1862  public:
1863 
1868 
1872  virtual IRegularGrid3D *grid() const = 0;
1873 
1878  virtual MeshDataType meshDataType() const = 0;
1879 
1883  virtual IDimension *xCellDimension() const = 0;
1884 
1888  virtual IDimension *yCellDimension() const = 0;
1889 
1893  virtual IDimension *zCellDimension() const = 0;
1894 
1899  virtual IDimension *cellFaceDimension() const = 0;
1900 
1905  virtual IDimension *cellNodeDimension() const = 0;
1906 
1916  virtual void getValue(int xCellIndex, int yCellIndex, int zCellIndex,
1917  int cellFaceIndex, int cellNodeIndex, void *data) const = 0;
1918 
1928  virtual void setValue(int xCellIndex, int yCellIndex, int zCellIndex,
1929  int cellFaceIndex, int cellNodeIndex, const void *data) = 0;
1930  };
1931 
1936  {
1937  using IComponentDataItem::getValue;
1938  using IComponentDataItem::setValue;
1939 
1940  public:
1945 
1950  virtual int locationsCount() const = 0;
1951 
1957  virtual IPoint *location(int locationIndex) const = 0;
1958 
1963  virtual IDimension *locationsDimension() const = 0;
1964 
1970  virtual IDimension *spatialDimension() const = 0;
1971 
1978  virtual void getValue(int locationIndex, int spatialDimensionIndex, void *data) const = 0;
1979 
1988  virtual void getValues(int locationIndex, int spatialDimensionIndex,
1989  int locationStride, int spatialDimensionStride, void *data) const = 0;
1996  virtual void setValue(int locationIndex, int spatialDimensionIndex, const void *data) = 0;
1997 
2006  virtual void setValues(int locationIndex, int spatialDimensionIndex,
2007  int locationStride, int spatialDimensionStride, const void *data) = 0;
2008  };
2009  }
2010 }
2011 
2012 
2013 #endif // HYDROCOUPLESPATIAL_H
IComponentItem is a fundamental unit of data for a component.
Definition: hydrocouple.h:1069
virtual void setValue(const vector< int > &dimensionIndexes, const void *data)=0
Sets a multi-dimensional array of values for given dimension indexes.
virtual void getValue(const vector< int > &dimensionIndexes, void *data) const =0
Gets a multi-dimensional array of value for given dimension indexes. IndexArray = x + y * InSizeX + z...
IDimension provides the properties of the dimensions of a variable.
Definition: hydrocouple.h:863
IIdentity interface class defines a method to get the Id of an HydroCouple entity.
Definition: hydrocouple.h:169
A Curve is a 1-dimensional geometric object usually stored as a sequence of IPoints,...
Definition: hydrocouplespatial.h:607
virtual ~ICurve()=0
ICurve destructor.
virtual bool isClosed() const =0
virtual double length() const =0
The length of this ICurve in its associated ISpatialReferenceSystem.
virtual bool isRing() const =0
virtual IPoint * endPoint() const =0
The end IPoint of this ICurve.
virtual IPoint * startPoint() const =0
The start IPoint of this ICurve.
A directed edge from one vertex to another, adjacent to two faces. Based on Dani Lischinski's code fr...
Definition: hydrocouplespatial.h:755
virtual IEdge * leftPrev()=0
The ccw edge around the left face before this edge.
virtual unsigned int index() const =0
unique index identifier
virtual IEdge * rot()=0
The dual of this edge, directed from its right to its left.
virtual IPolygon * right()=0
The right face of this edge.
virtual IEdge * origPrev()=0
The next cw edge around (from) the origin of this edge.
virtual IEdge * origNext()=0
The next ccw edge around (from) the origin of this IEdge.
virtual IVertex * dest()=0
The destination IVertex of this IEdge.
virtual IEdge * destPrev()=0
The next cw edge around (into) the destination of this edge.
virtual IEdge * rightNext()=0
The edge around the right face ccw following this edge.
virtual IPolygon * left()=0
The left face of this edge.
virtual IEdge * rightPrev()=0
The IEdge around the right face ccw before this IEdge.
virtual IEdge * sym()=0
The IEdge from the destination to the origin of this IEdge.
virtual IEdge * leftNext()=0
The ccw edge around the left face following this edge.
virtual IVertex * orig()=0
The origin IVertex of this IEdge.
virtual ~IEdge()=0
IEdge destructor.
virtual IEdge * destNext()=0
The next ccw edge around (into) the destination of this edge.
virtual IEdge * invRot()=0
The dual of this IEdge, directed from its left to its right.
virtual IPolygon * face()=0
The target face of this edge, if dual. Otherwise null if not dual.
The IEnvelope class.
Definition: hydrocouplespatial.h:100
virtual double maxZ() const =0
maxZ The maximum z-coordinate value for this IEnvelope.
virtual double minZ() const =0
minZ The minimum z-coordinate value for this IEnvelope.
virtual double maxY() const =0
maxY The maximum y-coordinate value for this IEnvelope.
virtual double minX() const =0
minX The minimum x-coordinate value for this IEnvelope.
virtual double minY() const =0
minY The minimum y-coordinate value for this IEnvelope.
virtual ~IEnvelope()=0
The minimum x-coordinate value for this IEnvelope.
virtual double maxX() const =0
maxX The maximum x-coordinate value for this IEnvelope.
An IGeometryCollection is a geometric object that is a collection of some number of IGeometry objects...
Definition: hydrocouplespatial.h:471
virtual int geometryCount() const =0
The number of geometries in this IGeometryCollection.
virtual ~IGeometryCollection()=0
IGeometryCollection destructor.
virtual IGeometry * geometry(int index) const =0
The IGeometry object associated with a specified index.
IGeometryComponentItem represents IGeometryCollection IComponentItem. This class must be implemented ...
Definition: hydrocouplespatial.h:1501
virtual IGeometry * geometry(int geometryIndex) const =0
geometry
virtual void setValues(int geometryDimensionIndex, int stride, const void *data)=0
Sets a multi-dimensional array of values for given geometry dimension index and size for a hyperslab.
virtual IGeometry::GeometryType geometryType() const =0
geometryType
virtual HydroCouple::Spatial::IEnvelope * envelope() const =0
envelope
virtual ~IGeometryComponentDataItem()=0
IGeometryComponentItem destructor.
virtual HydroCouple::IDimension * geometryDimension() const =0
virtual int geometryCount() const =0
geometryCount
virtual void getValues(int geometryDimensionIndex, int stride, void *data) const =0
Gets a multi-dimensional array of values for given geometry dimension index and size for a hyperslab.
virtual void getValue(int geometryDimensionIndex, void *data) const =0
Gets value for given geometry dimension index.
virtual void setValue(int geometryDimensionIndex, const void *data)=0
Sets value for given geometry dimension index.
IGeometry is the root class of the geometry hierarchy.
Definition: hydrocouplespatial.h:149
virtual bool is3D() const =0
virtual bool touches(const IGeometry &geom) const =0
virtual double distance(const IGeometry &geom) const =0
Returns the shortest distance between any two Points in the two geometric objects as calculated in th...
virtual bool intersects(const IGeometry &geom) const =0
virtual string id() const =0
id of the geometry.
virtual IGeometry * difference(const IGeometry &geom) const =0
virtual bool equals(const IGeometry &geom) const =0
virtual IGeometry * symmetricDifference(const IGeometry &geom) const =0
virtual bool overlaps(const IGeometry &geom) const =0
virtual IGeometry * convexHull() const =0
virtual bool relate(const IGeometry &geom) const =0
virtual bool isEmpty() const =0
If true, then this geometric object represents the empty point set ∅ for the coordinate space.
virtual IGeometry * intersection(const IGeometry &geom) const =0
virtual IGeometry * unionG(const IGeometry &geom) const =0
virtual unsigned char * getWKB(int &size) const =0
Exports this geometric object to a specific Well-known byte Representation of Geometry.
virtual bool disjoint(const IGeometry &geom) const =0
virtual IGeometry * boundary() const =0
Returns the closure of the combinatorial boundary of this geometric object (Reference [1],...
virtual IEnvelope * envelope() const =0
The minimum bounding box for this Geometry, returned as a IGeometry. Recalculated at the time of the ...
virtual IGeometry * locateBetween(double mStart, double mEnd) const =0
virtual string getWKT() const =0
Exports this geometric object to a specific Well-known Text Representation of Geometry.
virtual int dimension() const =0
The inherent dimension of this geometric object, which must be less than or equal to the coordinate d...
virtual bool isSimple() const =0
Returns true if this geometric object has no anomalous geometric points, such as self intersection or...
GeometryType
The type of IGeometry.
Definition: hydrocouplespatial.h:155
virtual ISpatialReferenceSystem * spatialReferenceSystem() const =0
Spatial reference system of geometric object.
virtual bool crosses(const IGeometry &geom) const =0
virtual IGeometry * locateAlong(double value) const =0
virtual IGeometry * buffer(double bufferDistance) const =0
Returns a geometric object that represents all Points whose distance from this geometric object is le...
virtual ~IGeometry()=0
The type of IGeometry.
virtual bool isMeasured() const =0
virtual unsigned int index() const =0
index of the geometry if it is part of a collection.
virtual bool within(const IGeometry &geom) const =0
virtual bool contains(const IGeometry &geom) const =0
virtual GeometryType geometryType() const =0
Get the dimension of the coordinates in this object.
virtual int coordinateDimension() const =0
Get the dimension of the coordinates in this object.
The ILine class is an ILineString with exactly 2 IPoints.
Definition: hydrocouplespatial.h:726
virtual ~ILine()=0
ILine destructor.
An ILineString is a Curve with linear interpolation between Points. Each consecutive pair of Points d...
Definition: hydrocouplespatial.h:687
virtual IPoint * point(int index) const =0
virtual int pointCount() const =0
The number of IPoints in this ILineString.
virtual ~ILineString()=0
ILineString destructor.
An ILinearRing is an ILineString that is both isClosed() and isSimple().
Definition: hydrocouplespatial.h:739
virtual ~ILinearRing()=0
ILinearRing destructor.
An IMultiCurve is a 1-dimensional IGeometryCollection whose elements are ICurves.
Definition: hydrocouplespatial.h:665
virtual bool isClosed() const =0
virtual double length() const =0
The Length of this IMultiCurve which is equal to the sum of the lengths of the element ICurves.
An IMultiLineString is an IMultiCurve whose elements are ILineStrings.
Definition: hydrocouplespatial.h:710
virtual ~IMultiLineString()=0
IMultiLineString destructor.
virtual ILineString * lineString(int index) const =0
Returns the ILineString at index.
An IMultiPoint is a 0-dimensional IGeometryCollection.
Definition: hydrocouplespatial.h:548
virtual ~IMultiPoint()=0
IMultiPoint destructor.
virtual IPoint * point(int index) const =0
An IMultiPolygon is an IMultiSurface whose elements are IPolygons.
Definition: hydrocouplespatial.h:1046
virtual IPolygon * polygon(int index) const =0
A MultiSurface is a 2-dimensional GeometryCollection whose elements are Surfaces, all using coordinat...
Definition: hydrocouplespatial.h:939
virtual IPoint * centroid() const =0
The mathematical centroid for this ISurface as an IPoint. The result is not guaranteed to be on this ...
virtual double area() const =0
The area of this ISurface, as measured in the spatial reference system of this ISurface.
virtual IPoint * pointOnSurface() const =0
The mathematical centroid for this ISurface as an IPoint. The result is not guaranteed to be on this ...
virtual ~IMultiSurface()=0
IMultiSurface destructor.
The INetworkComponentDataItem class.
Definition: hydrocouplespatial.h:1578
virtual MeshDataType meshDataType() const =0
meshDataType represents the type of mesh data.
virtual IDimension * nodeDimension() const =0
nodeDimension represents the dimension for the nodes.
virtual IDimension * edgeDimension() const =0
edgeDimension represents the dimension for the edges.
virtual void getValue(int edgeDimensionIndex, int nodeDimensionIndex, void *data) const =0
getValue for given edge dimension index and node dimension index.
virtual void setValue(int edgeDimensionIndex, int nodeDimensionIndex, const void *data)=0
setValue for given edge dimension index and node dimension index.
virtual INetwork * network() const =0
network associated with this INetworkComponentDataItem.
The INetwork class.
Definition: hydrocouplespatial.h:1090
virtual int edgeCount() const =0
edgeCount represents the number of all the edges in the network.
virtual IVertex * vertex(int index) const =0
vertex
virtual int vertexCount() const =0
vertexCount
virtual IEdge * edge(int index) const =0
edge
virtual ~INetwork()=0
~Network destructor.
An IPoint is a 0-dimensional geometric object and represents a single location in coordinate space.
Definition: hydrocouplespatial.h:505
virtual double m() const =0
The x-coordinate value for this IPoint. Returns NIL otherwise.
virtual double y() const =0
The y-coordinate value for this IPoint.
virtual double x() const =0
The x-coordinate value for this IPoint.
virtual ~IPoint()=0
IPoint destructor.
virtual double z() const =0
The x-coordinate value for this IPoint. Returns NIL otherwise.
A IPolygon is a planar ISurface defined by 1 exterior boundary and 0 or more interior boundaries.
Definition: hydrocouplespatial.h:1005
virtual ILineString * exteriorRing() const =0
virtual ILineString * interiorRing(int index) const =0
virtual int interiorRingCount() const =0
virtual ~IPolygon()=0
IPolygon destructor.
virtual IPolyhedralSurface * polyhydralSurface() const =0
polyhydralSurface
virtual IEdge * edge() const =0
An arbitrary adjacent edge for this IPolygon.
IPolyhedralSurfaceComponentItem represents IPolyhedralSurface IComponentItem.
Definition: hydrocouplespatial.h:1630
virtual IDimension * nodeDimension() const =0
nodeDimension represents the dimension for the nodes.
virtual ~IPolyhedralSurfaceComponentDataItem()=0
IPolyhedralSurfaceComponentItem destructor.
virtual void setValue(int cellDimensionIndex, int edgeDimensionIndex, int nodeDimensionIndex, const void *data)=0
setValues for given cell dimension index, edge dimension index, and node dimension index.
virtual IDimension * cellDimension() const =0
cellDimension represents the dimension for the cells.
virtual IDimension * edgeDimension() const =0
edgeDimension represents the dimension for the edges.
virtual MeshDataType meshDataType() const =0
meshDataType represents the type of mesh data.
virtual IPolyhedralSurface * polyhedralSurface() const =0
virtual void getValue(int cellDimensionIndex, int edgeDimensionIndex, int nodeDimensionIndex, void *data) const =0
getValue for given cell dimension index, edge dimension index, and node dimension index.
An IPolyhedralSurface is a contiguous collection of polygons, which share common boundary segments.
Definition: hydrocouplespatial.h:1159
virtual int vertexCount() const =0
vertexCount represents the number of all the vertices shared by the patches.
virtual int patchCount() const =0
The number of polygons in this surface.
virtual ~IPolyhedralSurface()=0
IPolyhedralSurface destructor.
virtual IMultiPolygon * boundingPolygons(const IPolygon *polygon) const =0
virtual IPolygon * patch(int index) const =0
virtual IVertex * vertex(int index) const =0
vertex of the network with the specified index.
IRasterBand is a single raster band for an IRaster.
Definition: hydrocouplespatial.h:1312
virtual IRaster::RasterDataType dataType() const =0
Raster data type.
virtual int ySize() const =0
Number of pixels in y direction.
virtual void read(int xOffset, int yOffset, int xSize, int ySize, void *image) const =0
Reads data into the image block.
virtual int xSize() const =0
Number of pixels in the x direction.
virtual ~IRasterBand()=0
IRasterBand destructor.
virtual double noData() const =0
virtual void write(int xOffset, int yOffset, int xSize, int ySize, const void *image)=0
Writes image into the raster band.
virtual IRaster * raster() const =0
Parent IRaster of this IRasterBand.
An IRasterComponentDataItem represents an IRaster IComponentItem.
Definition: hydrocouplespatial.h:1712
virtual IRaster * raster() const =0
IRaster associated with this IRasterComponentDataItem.
virtual IDimension * yDimension() const =0
IDimension for yDirection.
virtual void setValues(int xIndex, int yIndex, int band, int xStride, int yStride, const void *data)=0
Sets a multi-dimensional array of values for given dimension for a hyperslab.
virtual IDimension * xDimension() const =0
IDimension for xDirection.
virtual void getValues(int xIndex, int yIndex, int band, int xStride, int yStride, void *data) const =0
Gets a multi-dimensional array of values for given dimension for a hyperslab.
virtual ~IRasterComponentDataItem()=0
IRasterComponentItem destructor.
virtual void getValue(int xIndex, int yIndex, int band, void *data) const =0
getValue for given x dimension index, y dimension index, and band dimension index.
virtual void setValue(int xIndex, int yIndex, int band, const void *data)=0
setValue for given x dimension index, y dimension index, and band dimension index.
virtual IDimension * bandDimension() const =0
IDimension for IRasterBands.
A Raster spatial feature.
Definition: hydrocouplespatial.h:1228
virtual void geoTransformation(double *transformationMatrix)=0
Fetches the affine transformation coefficients. It is an array of size 6.
virtual int rasterBandCount() const =0
Number of raster bands.
virtual ~IRaster()=0
IRaster destructor.
virtual ISpatialReferenceSystem * spatialReferenceSystem() const =0
The ISpatialReferenceSystem represents the spatial reference system of goemetric object.
virtual int xSize() const =0
Number of pixels in the x direction.
virtual void addRasterBand(RasterDataType dataType)=0
Adds a new IRasterBand.
RasterDataType
The data type associated with a raster.
Definition: hydrocouplespatial.h:1235
@ Byte
Eight bit unsigned integer.
Definition: hydrocouplespatial.h:1239
@ UInt16
Sixteen bit unsigned integer.
Definition: hydrocouplespatial.h:1241
@ CFloat32
Complex Float32.
Definition: hydrocouplespatial.h:1257
@ UInt32
Thirty two bit unsigned integer.
Definition: hydrocouplespatial.h:1245
@ Float32
Thirty two bit floating point.
Definition: hydrocouplespatial.h:1249
@ Unknown
Unknown or unspecified type.
Definition: hydrocouplespatial.h:1237
@ Int16
Sixteen bit signed integer.
Definition: hydrocouplespatial.h:1243
@ Float64
Sixty four bit floating point.
Definition: hydrocouplespatial.h:1251
@ CInt32
Complex Int32.
Definition: hydrocouplespatial.h:1255
@ Int32
Thirty two bit signed integer.
Definition: hydrocouplespatial.h:1247
@ CInt16
Complex Int16.
Definition: hydrocouplespatial.h:1253
virtual int ySize() const =0
Number of pixels in y direction.
virtual IRasterBand * getRasterBand(int bandIndex) const =0
Gets the IRasterBand for the band with index bandIndex.
An IRegularGrid2DComponentDataItem represents an IRegularGrid2D IComponentItem.
Definition: hydrocouplespatial.h:1788
virtual void getValue(int xCellIndex, int yCellIndex, int cellEdgeIndex, int cellNodeIndex, void *data) const =0
getValue for given x cell index, y cell index, edge index, and node index.
virtual IDimension * yCellDimension() const =0
Number of Y cells IDimension.
virtual IDimension * cellNodeDimension() const =0
cellNodeDimension. Node indices start from the bottom left and go in a counter clockwise order.
virtual IDimension * cellEdgeDimension() const =0
cellEdgeDimension. Edge indices start from the bottom and go in a counter clockwise order.
virtual MeshDataType meshDataType() const =0
meshDataType
virtual IRegularGrid2D * grid() const =0
IRegularGrid2D grid associated with this IRegularGrid2DComponentItem.
virtual ~IRegularGrid2DComponentDataItem()=0
~IRegularGrid2DComponentItem.
virtual IDimension * xCellDimension() const =0
Number of X cells IDimension.
virtual void setValue(int xCellIndex, int yCellIndex, int cellEdgeIndex, int cellNodeIndex, const void *data)=0
setValue for given x cell index, y cell index, edge index, and node index.
The IRegularGrid2D class.
Definition: hydrocouplespatial.h:1375
virtual ~IRegularGrid2D()=0
IRegularGrid2D destructor.
virtual RegularGridType gridType() const =0
gridType
virtual double xNodeLocation(int xNodeIndex, int yNodeIndex) const =0
xNodeLocation provides the x location coordinate for the x-node and y-node indexes.
virtual int numYNodes() const =0
numYNodes represents the number of nodes in the y direction.
virtual bool isActive(int xCellIndex, int yCellIndex) const =0
isActive is a bool indicating whether a cell is active.
virtual double yNodeLocation(int xNodeIndex, int yNodeIndex) const =0
yNodeLocation provides the x location coordinate for the x-node and y-node indexes.
virtual int numXNodes() const =0
numXNodes represents the number of nodes in the x direction.
An IRegularGrid3DComponentItem represents an IRegularGrid3D IComponentItem.
Definition: hydrocouplespatial.h:1857
virtual ~IRegularGrid3DComponentDataItem()=0
~IRegularGrid3DComponentItem.
virtual IDimension * cellFaceDimension() const =0
cellFaceDimension 0 = Top , 1 = Bottom, 2 = left , 3 = Right, Up = 4, Down = 5
virtual void setValue(int xCellIndex, int yCellIndex, int zCellIndex, int cellFaceIndex, int cellNodeIndex, const void *data)=0
setValue for given x cell index, y cell index, z cell index, face index, and node index.
virtual IRegularGrid3D * grid() const =0
IRegularGrid3D grid associated with this IRegularGrid3DComponentItem.
virtual MeshDataType meshDataType() const =0
meshDataType
virtual IDimension * zCellDimension() const =0
Number of Z cells IDimension.
virtual void getValue(int xCellIndex, int yCellIndex, int zCellIndex, int cellFaceIndex, int cellNodeIndex, void *data) const =0
getValue for given x cell index, y cell index, z cell index, face index, and node index.
virtual IDimension * xCellDimension() const =0
Number of X cells IDimension.
virtual IDimension * yCellDimension() const =0
Number of Y cells IDimension.
virtual IDimension * cellNodeDimension() const =0
cellNodeDimension Node indices start from the bottom left and go in a counter clockwise order.
The IRegularGrid3D class.
Definition: hydrocouplespatial.h:1430
virtual ~IRegularGrid3D()=0
IRegularGrid3D destructor.
virtual double yNodeLocation(int xNodeIndex, int yNodeIndex) const =0
yNodeLocation provides the x location coordinate for the x-node and y-node indexes.
virtual int numZNodes() const =0
numZNodes represents the number of nodes in the z direction.
virtual int numXNodes() const =0
numXNodes represents the number of nodes in the x direction.
virtual double zNodeLocation(int xNodeIndex, int yNodeIndex, int zNodeIndex) const =0
zNodeLocation provides the z location coordinate for the x-node, y-node, and z-node indexes.
virtual bool isActive(int xCellIndex, int yCellIndex, int zCellIndex) const =0
isActive is a bool indicating whether a cell is active.
virtual double xNodeLocation(int xNodeIndex, int yNodeIndex) const =0
xNodeLocation provides the x location coordinate for the x-node and y-node indexes.
virtual RegularGridType gridType() const =0
gridType
virtual int numYNodes() const =0
numYNodes represents the number of nodes in the y direction.
Spatial Reference System.
Definition: hydrocouplespatial.h:69
virtual int authSRID() const =0
Returns the Spatial Reference System ID (SRID) for a geometric object. This will normally be a foreig...
virtual string authName() const =0
The Authority Specific Spatial Reference System Identifier.
virtual ~ISpatialReferenceSystem()=0
The Well-known Text Representation of the Spatial Reference System.
A ISurface is a 2-dimensional IGeometry object.
Definition: hydrocouplespatial.h:902
virtual double area() const =0
The area of this ISurface, as measured in the spatial reference system of this ISurface.
virtual ~ISurface()=0
ISurface destructor.
virtual IPoint * centroid() const =0
The mathematical centroid for this ISurface as a Point. The result is not guaranteed to be on this IS...
virtual IPoint * pointOnSurface() const =0
A Point guaranteed to be on this Surface.
virtual IMultiCurve * boundaryMultiCurve() const =0
boundaryMultiCurve
ITINComponentDataItem represents ITIN IComponentDataItem.
Definition: hydrocouplespatial.h:1694
virtual ~ITINComponentDataItem()=0
ITINComponentDataItem destructor.
An ITIN is a triangulated irregular network IPolyhedralSurface consisting only of ITriangle patches.
Definition: hydrocouplespatial.h:1210
virtual ~ITIN()=0
ITIN destructor.
virtual ITriangle * triangle(int index) const =0
An ITriangle is a IPolygon with 3 distinct, non-collinear vertices and no interior boundary.
Definition: hydrocouplespatial.h:1062
virtual ~ITriangle()=0
ITriangle destructor.
virtual IVertex * p2() const =0
The second vertex of this ITriangle.
virtual IVertex * p3() const =0
The third vertex of this ITriangle.
virtual IVertex * p1() const =0
The first vertex of this ITriangle.
The IVectorComponentDataItem class.
Definition: hydrocouplespatial.h:1936
virtual void setValue(int locationIndex, int spatialDimensionIndex, const void *data)=0
setValue for given location index and spatial dimension index.
virtual IDimension * locationsDimension() const =0
locationsDimension represents the dimension for the locations.
virtual IPoint * location(int locationIndex) const =0
location returns the IPoint at the given location index.
virtual void getValues(int locationIndex, int spatialDimensionIndex, int locationStride, int spatialDimensionStride, void *data) const =0
getValues for given location index and spatial dimension index.
virtual IDimension * spatialDimension() const =0
dataTypeDimension alway has a length of 3. 0 = x-direction value, 1 = y-direction,...
virtual void getValue(int locationIndex, int spatialDimensionIndex, void *data) const =0
getValue for given location index and spatial dimension index.
virtual void setValues(int locationIndex, int spatialDimensionIndex, int locationStride, int spatialDimensionStride, const void *data)=0
setValues for given location index and spatial dimension index.
virtual ~IVectorComponentDataItem()=0
~IVectorComponentDataItem
virtual int locationsCount() const =0
locationCount represents the number of locations.
The IVertex class is an IPoint of a topologically aware IGeometry.
Definition: hydrocouplespatial.h:567
virtual IEdge * edge() const =0
An arbitrary outgoing IEdge from this vertex.
virtual ~IVertex()=0
IVertex destructor.
MeshDataType
The MeshDataType enum describes the part of the geometry of the mesh that data corresponds to.
Definition: hydrocouplespatial.h:48
@ Node
The data corresponds to the nodes of the mesh.
Definition: hydrocouplespatial.h:52
@ Face
The data corresponds to the edges of the mesh.
Definition: hydrocouplespatial.h:57
@ Centroid
The data corresponds to the edges of the mesh.
Definition: hydrocouplespatial.h:62
RegularGridType
The types of regular grids.
Definition: hydrocouplespatial.h:1362
@ Rectilinear
Rectilinear grid.
Definition: hydrocouplespatial.h:1366
@ Curvilinear
Curvilinear grid.
Definition: hydrocouplespatial.h:1368
@ Cartesian
Cartesian grid.
Definition: hydrocouplespatial.h:1364
HydroCouple namespace contains the core interface specifications for the HydroCouple component-based ...
Definition: hydrocouple.h:50
The Point struct.
Definition: hydrocouplespatialwkb.h:37
The PointM struct.
Definition: hydrocouplespatialwkb.h:56
The PointZ struct.
Definition: hydrocouplespatialwkb.h:46
The PointZM struct.
Definition: hydrocouplespatialwkb.h:66