HydroCouple  2.0.0
HydroCouple Interface Definitions
Loading...
Searching...
No Matches
hydrocouplespatial.h
Go to the documentation of this file.
1
23#ifndef HYDROCOUPLESPATIAL_H
24#define HYDROCOUPLESPATIAL_H
25
26#include "hydrocouple.h"
27
28using namespace std;
29
30namespace HydroCouple
31{
35 namespace Spatial
36 {
37 class IEdge;
38 class IRasterBand;
39 class IPolygon;
41
47 {
48
53
58
63
68 };
69
74 {
79
83 Edge,
84 };
85
100
105 {
107 Scalar,
111 Vector,
113 Tensor,
114 };
115
128
133 {
134
135 public:
139 virtual ~ISpatialReferenceSystem() = default;
140
146 virtual int authSRID() const = 0;
147
151 virtual string authName() const = 0;
152
156 virtual string srText() const = 0;
157
162 };
163
168 {
169 public:
173 virtual ~IEnvelope() = default;
174
179 virtual double minX() const = 0;
180
185 virtual double maxX() const = 0;
186
191 virtual double minY() const = 0;
192
197 virtual double maxY() const = 0;
198
203 virtual double minZ() const = 0;
204
209 virtual double maxZ() const = 0;
210 };
211
216 {
217 public:
222 {
224 Point = 1,
237 Curve = 13,
240 TIN = 16,
241
242 GeometryZ = 1000,
243 PointZ = 1001,
245 PolygonZ = 1003,
246 TriangleZ = 1017,
256 CurveZ = 1013,
257 SurfaceZ = 1014,
259 TINZ = 1016,
260
261 GeometryM = 2000,
262 PointM = 2001,
264 PolygonM = 2003,
265 TriangleM = 2017,
275 CurveM = 2013,
276 SurfaceM = 2014,
278 TINM = 2016,
279
281 PointZM = 3001,
283 PolygonZM = 3003,
294 CurveZM = 3013,
295 SurfaceZM = 3014,
297 TINZM = 3016,
298 };
299
303 virtual ~IGeometry() = default;
304
309 virtual string id() const = 0;
310
315 virtual unsigned int index() const = 0;
316
324 virtual int dimension() const = 0;
325
331 virtual int coordinateDimension() const = 0;
332
341 virtual GeometryType geometryType() const = 0;
342
347
352 virtual IEnvelope *envelope() const = 0;
353
358 virtual string getWKT() const = 0;
359
363 virtual unsigned char *getWKB(int &size) const = 0;
364
369 virtual bool isEmpty() const = 0;
370
378 virtual bool isSimple() const = 0;
379
383 virtual bool is3D() const = 0;
384
388 virtual bool isMeasured() const = 0;
389
399 virtual IGeometry *boundary() const = 0;
400
405
409 virtual bool equals(const IGeometry &geom) const = 0;
410
414 virtual bool disjoint(const IGeometry &geom) const = 0;
415
419 virtual bool intersects(const IGeometry &geom) const = 0;
420
424 virtual bool touches(const IGeometry &geom) const = 0;
425
429 virtual bool crosses(const IGeometry &geom) const = 0;
430
434 virtual bool within(const IGeometry &geom) const = 0;
435
439 virtual bool contains(const IGeometry &geom) const = 0;
440
444 virtual bool overlaps(const IGeometry &geom) const = 0;
445
455 virtual bool relate(const IGeometry &geom) const = 0;
456
460 virtual IGeometry *locateAlong(double value) const = 0;
461
465 virtual IGeometry *locateBetween(double mStart, double mEnd) const = 0;
466
468
482 virtual double distance(const IGeometry &geom) const = 0;
483
491 virtual IGeometry *buffer(double bufferDistance) const = 0;
492
499 virtual IGeometry *convexHull() const = 0;
500
504 virtual IGeometry *intersection(const IGeometry &geom) const = 0;
505
509 virtual IGeometry *unionG(const IGeometry &geom) const = 0;
510
514 virtual IGeometry *difference(const IGeometry &geom) const = 0;
515
519 virtual IGeometry *symmetricDifference(const IGeometry &geom) const = 0;
520
522 };
523
537 class IGeometryCollection : public virtual IGeometry
538 {
539
540 public:
544 virtual ~IGeometryCollection() = default;
545
550 virtual int geometryCount() const = 0;
551
557 virtual IGeometry *geometry(int index) const = 0;
558 };
559
570 class IPoint : public virtual IGeometry
571 {
572 public:
576 virtual ~IPoint() = default;
577
581 virtual double x() const = 0;
582
586 virtual double y() const = 0;
587
591 virtual double z() const = 0;
592
596 virtual double m() const = 0;
597 };
598
612 class IMultiPoint : public virtual IGeometryCollection
613 {
614
615 public:
619 virtual ~IMultiPoint() = default;
620
624 virtual IPoint *point(int index) const = 0;
625 };
626
630 class IVertex : public virtual IPoint
631 {
632 public:
636 virtual ~IVertex() = default;
637
642 virtual unsigned int index() const = 0;
643
649 virtual IEdge *edge() const = 0;
650 };
651
675 class ICurve : public virtual IGeometry
676 {
677
678 public:
682 virtual ~ICurve() = default;
683
687 virtual double length() const = 0;
688
692 virtual IPoint *startPoint() const = 0;
693
697 virtual IPoint *endPoint() const = 0;
698
702 virtual bool isClosed() const = 0;
703
708 virtual bool isRing() const = 0;
709 };
710
732 class IMultiCurve : public virtual IGeometryCollection
733 {
734 public:
735 virtual ~IMultiCurve() = default;
736
741 virtual bool isClosed() const = 0;
742
747 virtual double length() const = 0;
748 };
749
754 class ILineString : public virtual ICurve
755 {
756 public:
760 virtual ~ILineString() = default;
761
765 virtual int pointCount() const = 0;
766
770 virtual IPoint *point(int index) const = 0;
771 };
772
776 class IMultiLineString : public virtual IMultiCurve
777 {
778 public:
782 virtual ~IMultiLineString() = default;
783
785 virtual ILineString *lineString(int index) const = 0;
786 };
787
791 class ILine : public virtual ILineString
792 {
793 public:
797 virtual ~ILine() = default;
798 };
799
803 class ILinearRing : public virtual ILineString
804 {
805 public:
809 virtual ~ILinearRing() = default;
810 };
811
818 class IEdge
819 {
820 public:
824 virtual ~IEdge() = default;
825
830 virtual unsigned int index() const = 0;
831
836 virtual IVertex *orig() = 0;
837
842 virtual IVertex *dest() = 0;
843
849 virtual IPolygon *left() = 0;
850
856 virtual IPolygon *right() = 0;
857
862 virtual IPolygon *face() = 0;
863
869 virtual IEdge *rot() = 0;
870
876 virtual IEdge *invRot() = 0;
877
883 virtual IEdge *sym() = 0;
884
890 virtual IEdge *origNext() = 0;
891
897 virtual IEdge *origPrev() = 0;
898
904 virtual IEdge *destNext() = 0;
905
911 virtual IEdge *destPrev() = 0;
912
918 virtual IEdge *leftNext() = 0;
919
925 virtual IEdge *leftPrev() = 0;
926
932 virtual IEdge *rightNext() = 0;
933
939 virtual IEdge *rightPrev() = 0;
940 };
941
964 class ISurface : public virtual IGeometry
965 {
966 public:
970 virtual ~ISurface() = default;
971
976 virtual double area() const = 0;
977
982 virtual IPoint *centroid() const = 0;
983
987 virtual IPoint *pointOnSurface() const = 0;
988
993 virtual IMultiCurve *boundaryMultiCurve() const = 0;
994 };
995
1000 class IMultiSurface : public virtual IGeometryCollection
1001 {
1002
1003 public:
1007 virtual ~IMultiSurface() = default;
1008
1013 virtual double area() const = 0;
1014
1019 virtual IPoint *centroid() const = 0;
1020
1025 virtual IPoint *pointOnSurface() const = 0;
1026 };
1027
1065 class IPolygon : public virtual ISurface
1066 {
1067 public:
1071 virtual ~IPolygon() = default;
1072
1076 virtual ILineString *exteriorRing() const = 0;
1077
1081 virtual int interiorRingCount() const = 0;
1082
1086 virtual ILineString *interiorRing(int index) const = 0;
1087
1093 virtual IEdge *edge() const = 0;
1094
1100 };
1101
1105 class IMultiPolygon : public virtual IMultiSurface
1106 {
1107
1108 public:
1109 virtual ~IMultiPolygon() = default;
1110
1114 virtual IPolygon *polygon(int index) const = 0;
1115 };
1116
1121 class ITriangle : public virtual IPolygon
1122 {
1123 public:
1127 virtual ~ITriangle() = default;
1128
1132 virtual IVertex *vertex1() const = 0;
1133
1137 virtual IVertex *vertex2() const = 0;
1138
1142 virtual IVertex *vertex3() const = 0;
1143
1147 virtual IVertex *vertex(int index) const = 0;
1148 };
1149
1153 class INetwork : public virtual IIdentity
1154 {
1155 public:
1159 virtual ~INetwork() = default;
1160
1165 virtual int edgeCount() const = 0;
1166
1172 virtual IEdge *edge(int index) const = 0;
1173
1178 virtual int vertexCount() const = 0;
1179
1185 virtual IVertex *vertex(int index) const = 0;
1186 };
1187
1222 class IPolyhedralSurface : public virtual ISurface
1223 {
1224 public:
1228 virtual ~IPolyhedralSurface() = default;
1229
1234 virtual int patchCount() const = 0;
1235
1240 virtual IPolygon *patch(int index) const = 0;
1241
1246 virtual int vertexCount() const = 0;
1247
1253 virtual IVertex *vertex(int index) const = 0;
1254
1259 virtual IMultiPolygon *boundingPolygons(const IPolygon *polygon) const = 0;
1260
1265 virtual bool isClosed() const = 0;
1266 };
1267
1272 class ITIN : public virtual IPolyhedralSurface
1273 {
1274 public:
1278 virtual ~ITIN() = default;
1279
1283 virtual ITriangle *triangle(int index) const = 0;
1284 };
1285
1289 class IRaster : public virtual IIdentity
1290 {
1291
1292 public:
1327
1331 virtual ~IRaster() = 0;
1332
1336 virtual int xSize() const = 0;
1337
1341 virtual int ySize() const = 0;
1342
1346 virtual int rasterBandCount() const = 0;
1347
1351 virtual void addRasterBand(RasterDataType dataType) = 0;
1352
1357
1366 virtual void geoTransformation(double *transformationMatrix) = 0;
1367
1371 virtual IRasterBand *getRasterBand(int bandIndex) const = 0;
1372 };
1373
1377 class IRasterBand : public virtual IIdentity
1378 {
1379
1380 public:
1384 virtual ~IRasterBand() = default;
1385
1387 virtual int xSize() const = 0;
1388
1390 virtual int ySize() const = 0;
1391
1393 virtual IRaster *raster() const = 0;
1394
1397
1406 virtual void read(int xOffset, int yOffset, int xSize, int ySize, void *image) const = 0;
1407
1416 virtual void write(int xOffset, int yOffset, int xSize, int ySize, const void *image) = 0;
1417
1421 virtual double noData() const = 0;
1422 };
1423
1427 class IRegularGrid2D : public virtual IIdentity
1428 {
1429 public:
1433 virtual ~IRegularGrid2D() = default;
1434
1439
1444 virtual RegularGridType gridType() const = 0;
1445
1450 virtual int numXNodes() const = 0;
1451
1456 virtual int numYNodes() const = 0;
1457
1464 virtual double xNodeLocation(int xNodeIndex, int yNodeIndex) const = 0;
1465
1472 virtual double yNodeLocation(int xNodeIndex, int yNodeIndex) const = 0;
1473
1480 virtual bool isActive(int xCellIndex, int yCellIndex) const = 0;
1481 };
1482
1486 class IRegularGrid3D : public virtual IIdentity
1487 {
1488 public:
1492 virtual ~IRegularGrid3D() = default;
1493
1498
1503 virtual RegularGridType gridType() const = 0;
1504
1509 virtual int numXNodes() const = 0;
1510
1515 virtual int numYNodes() const = 0;
1516
1521 virtual int numZNodes() const = 0;
1522
1529 virtual double xNodeLocation(int xNodeIndex, int yNodeIndex) const = 0;
1530
1537 virtual double yNodeLocation(int xNodeIndex, int yNodeIndex) const = 0;
1538
1546 virtual double zNodeLocation(int xNodeIndex, int yNodeIndex, int zNodeIndex) const = 0;
1547
1555 virtual bool isActive(int xCellIndex, int yCellIndex, int zCellIndex) const = 0;
1556 };
1557
1562 {
1563
1564 public:
1569
1573 virtual ~IGeometryComponentDataItem() = default;
1574
1580
1585 virtual int geometryCount() const = 0;
1586
1592 virtual IGeometry *geometry(int geometryIndex) const = 0;
1593
1599
1605
1612 virtual void getValue(
1613 hydrocouple_variant &data,
1614 int geometryDimensionIndex,
1615 const initializer_list<int> &dimensionIndexes = {}) const = 0;
1616
1626 virtual void getValues(
1627 hydrocouple_variant *data,
1628 int geometryDimensionIndex,
1629 const initializer_list<int> &dimensionIndexes = {},
1630 int geometryDimensionLength = 1,
1631 const initializer_list<int> &dimensionLength = {}) const = 0;
1632
1639 virtual void setValue(
1640 const hydrocouple_variant *data,
1641 int geometryDimensionIndex,
1642 const initializer_list<int> &dimensionIndexes = {}) = 0;
1643
1653 virtual void setValues(
1654 const hydrocouple_variant *data,
1655 int geometryDimensionIndex,
1656 const initializer_list<int> &dimensionIndexes = {},
1657 int geometryDimensionLength = 1,
1658 const initializer_list<int> &dimensionLengths = {}) = 0;
1659 };
1660
1665 {
1666
1667 public:
1672
1676 virtual ~INetworkComponentDataItem() = default;
1677
1682 virtual INetwork *network() const = 0;
1683
1689
1695
1700 virtual IDimension *edgeDimension() const = 0;
1701
1706 virtual IDimension *vertexDimension() const = 0;
1707
1715 virtual void getValue(
1716 hydrocouple_variant &data,
1717 int edgeDimensionIndex,
1718 int vertexDimensionIndex,
1719 const initializer_list<int> &dimensionIndexes = {}) const = 0;
1720
1732 virtual void getValues(
1733 hydrocouple_variant *data,
1734 int edgeDimensionIndex,
1735 int vertexDimensionIndex,
1736 const initializer_list<int> &dimensionIndexes = {},
1737 int edgeDimensionIndexLength = 1,
1738 int vertexDimensionIndexLength = 1,
1739 const initializer_list<int> &dimensionLengths = {}) const = 0;
1740
1748 virtual void setValue(
1749 const hydrocouple_variant &data,
1750 int edgeDimensionIndex,
1751 int vertexDimensionIndex,
1752 const initializer_list<int> &dimensionIndexes = {}) = 0;
1753
1765 virtual void setValues(
1766 const hydrocouple_variant *data,
1767 int edgeDimensionIndex,
1768 int vertexDimensionIndex,
1769 const initializer_list<int> &dimensionIndexes = {},
1770 int edgeDimensionIndexLength = 1,
1771 int vertexDimensionIndexLength = 1,
1772 const initializer_list<int> &dimensionLengths = {}) = 0;
1773 };
1774
1779 {
1780
1781 public:
1786
1791
1797
1802 virtual MeshDataType meshDataType() const = 0;
1803
1808
1813 virtual IDimension *patchDimension() const = 0;
1814
1819 virtual IDimension *edgeDimension() const = 0;
1820
1825 virtual IDimension *vertexDimension() const = 0;
1826
1835 virtual void getValue(
1836 hydrocouple_variant &data,
1837 int patchDimensionIndex,
1838 int edgeDimensionIndex,
1839 int vertexDimensionIndex,
1840 const initializer_list<int> &dimensionIndexes = {}) const = 0;
1841
1859 virtual void getValues(
1860 hydrocouple_variant *data,
1861 int patchDimensionIndex,
1862 int edgeDimensionIndex,
1863 int vertexDimensionIndex,
1864 const initializer_list<int> &dimensionIndexes = {},
1865 int patchDimensionIndexLength = 1,
1866 int edgeDimensionIndexLength = 1,
1867 int vertexDimensionIndexLength = 1,
1868 const initializer_list<int> &dimensionLengths = {}) const = 0;
1869
1879 virtual void setValue(
1880 const hydrocouple_variant &data,
1881 int patchDimensionIndex,
1882 int edgeDimensionIndex,
1883 int vertexDimensionIndex,
1884 const initializer_list<int> &dimensionIndexes = {}) = 0;
1885
1899 virtual void setValues(
1900 const hydrocouple_variant *data,
1901 int patchDimensionIndex,
1902 int edgeDimensionIndex,
1903 int vertexDimensionIndex,
1904 const initializer_list<int> &dimensionIndexes = {},
1905 int patchDimensionIndexLength = 1,
1906 int edgeDimensionIndexLength = 1,
1907 int vertexDimensionIndexLength = 1,
1908 const initializer_list<int> &dimensionLengths) = 0;
1909 };
1910
1938
1943 {
1944
1945 public:
1950
1954 virtual ~IRasterComponentDataItem() = default;
1955
1959 virtual IRaster *raster() const = 0;
1960
1964 virtual IDimension *xDimension() const = 0;
1965
1969 virtual IDimension *yDimension() const = 0;
1970
1974 virtual IDimension *bandDimension() const = 0;
1975
1985 virtual void getValue(
1986 hydrocouple_variant &data,
1987 int xIndex,
1988 int yIndex,
1989 int bandIndex,
1990 const initializer_list<int> &dimensionIndexes = {}) const = 0;
1991
2005 virtual void getValues(
2006 hydrocouple_variant *data,
2007 int xIndex,
2008 int yIndex,
2009 int bandIndex,
2010 const initializer_list<int> &dimensionIndexes = {},
2011 int xIndexLength = 1,
2012 int yIndexLength = 1,
2013 int bandIndexLength = 1,
2014 const initializer_list<int> &dimensionLengths = {}) const = 0;
2015
2025 virtual void setValue(
2026 const hydrocouple_variant &data,
2027 int xIndex,
2028 int yIndex,
2029 int band,
2030 const initializer_list<int> &dimensionIndexes = {}) = 0;
2031
2045 virtual void setValues(
2046 const hydrocouple_variant *data,
2047 int xIndex,
2048 int yIndex,
2049 int bandIndex,
2050 const initializer_list<int> &dimensionIndexes = {},
2051 int xIndexLength = 1,
2052 int yIndexLength = 1,
2053 int bandIndexLength = 1,
2054 const initializer_list<int> &dimensionLengths = {}) = 0;
2055 };
2056
2061 {
2062
2063 public:
2068
2073
2078 virtual IRegularGrid2D *grid() const = 0;
2079
2085
2090 virtual IDimension *xCellDimension() const = 0;
2091
2096 virtual IDimension *yCellDimension() const = 0;
2097
2102 virtual IDimension *cellEdgeDimension() const = 0;
2103
2108 virtual IDimension *cellVertexDimension() const = 0;
2109
2120 virtual void getValue(
2121 hydrocouple_variant &data,
2122 int xCellIndex,
2123 int yCellIndex,
2124 int cellEdgeIndex,
2125 int cellVertexIndex,
2126 const initializer_list<int> &dimensionIndexes = {}) const = 0;
2127
2143 virtual void getValues(
2144 hydrocouple_variant *data,
2145 int xCellIndex,
2146 int yCellIndex,
2147 int cellEdgeIndex,
2148 int cellVertexIndex,
2149 const initializer_list<int> &dimensionIndexes = {},
2150 int xCellIndexLength = 1,
2151 int yCellIndexLength = 1,
2152 int cellEdgeIndexLength = 1,
2153 int cellVertexIndexLength = 1,
2154 const initializer_list<int> &dimensionLengths = {}) const = 0;
2155
2166 virtual void setValue(
2167 const hydrocouple_variant &data,
2168 int xCellIndex,
2169 int yCellIndex,
2170 int cellEdgeIndex,
2171 int cellVertexIndex,
2172 const initializer_list<int> &dimensionIndexes = {}) = 0;
2173
2189 virtual void setValues(
2190 const hydrocouple_variant *data,
2191 int xCellIndex,
2192 int yCellIndex,
2193 int cellEdgeIndex,
2194 int cellVertexIndex,
2195 const initializer_list<int> &dimensionIndexes = {},
2196 int xCellIndexLength = 1,
2197 int yCellIndexLength = 1,
2198 int cellEdgeIndexLength = 1,
2199 int cellVertexIndexLength = 1,
2200 const initializer_list<int> &dimensionLengths = {}) = 0;
2201 };
2202
2207 {
2208
2209 public:
2214
2219
2223 virtual IRegularGrid3D *grid() const = 0;
2224
2230
2234 virtual IDimension *xCellDimension() const = 0;
2235
2239 virtual IDimension *yCellDimension() const = 0;
2240
2244 virtual IDimension *zCellDimension() const = 0;
2245
2250 virtual IDimension *cellFaceDimension() const = 0;
2251
2256 virtual IDimension *cellVertexDimension() const = 0;
2257
2269 virtual void getValue(
2270 hydrocouple_variant &data,
2271 int xCellIndex,
2272 int yCellIndex,
2273 int zCellIndex,
2274 int cellFaceIndex,
2275 int cellVertexIndex,
2276 const initializer_list<int> &dimensionIndexes = {}) const = 0;
2277
2295 virtual void getValues(
2296 hydrocouple_variant *data,
2297 int xCellIndex,
2298 int yCellIndex,
2299 int zCellIndex,
2300 int cellFaceIndex,
2301 int cellVertexIndex,
2302 const initializer_list<int> &dimensionIndexes = {},
2303 int xCellIndexLength = 1,
2304 int yCellIndexLength = 1,
2305 int zCellIndexLength = 1,
2306 int cellFaceIndexLength = 1,
2307 int cellVertexIndexLength = 1,
2308 const initializer_list<int> &dimensionLengths = {}) const = 0;
2309
2321 virtual void setValue(
2322 const hydrocouple_variant &data,
2323 int xCellIndex,
2324 int yCellIndex,
2325 int zCellIndex,
2326 int cellFaceIndex,
2327 int cellVertexIndex,
2328 const initializer_list<int> &dimensionIndexes = {}) = 0;
2329
2347 virtual void setValues(
2348 const hydrocouple_variant *data,
2349 int xCellIndex,
2350 int yCellIndex,
2351 int zCellIndex,
2352 int cellFaceIndex,
2353 int cellVertexIndex,
2354 const initializer_list<int> &dimensionIndexes = {},
2355 int xCellIndexLength = 1,
2356 int yCellIndexLength = 1,
2357 int zCellIndexLength = 1,
2358 int cellFaceIndexLength = 1,
2359 int cellVertexIndexLength = 1,
2360 const initializer_list<int> &dimensionLengths = {}) = 0;
2361 };
2362
2363 }
2364}
2365
2366#endif // HYDROCOUPLESPATIAL_H
IComponentItem is a fundamental unit of data for a component.
Definition hydrocouple.h:1316
virtual void setValue(const hydrocouple_variant &data, const initializer_list< int > &dimensionIndexes)=0
Sets a multi-dimensional array of values for given dimension indexes.
virtual void getValue(hydrocouple_variant &data, const initializer_list< int > &dimensionIndexes) const =0
Gets a multi-dimensional array of values for given dimension indexes and strides along each dimension...
virtual void getValues(hydrocouple_variant *data, const initializer_list< int > &dimensionIndexes, const initializer_list< int > &dimensionLengths={}) const =0
Gets a multi-dimensional array of values for given dimension indexes and strides along each dimension...
virtual void setValues(const hydrocouple_variant *data, const initializer_list< int > &dimensionIndexes, const initializer_list< int > &dimensionLengths={})=0
Sets a multi-dimensional array of values for given dimension indexes and strides along each dimension...
virtual int dimensionLength(const initializer_list< int > &dimensionIndexes={}) const =0
dimensionLength returns the length of the dimension specified by the given dimension indexes....
IDimension provides the properties of the dimensions of a variable.
Definition hydrocouple.h:941
IIdentity interface class defines a method to get the Id of an HydroCouple entity.
Definition hydrocouple.h:226
DistanceUnits
HydroCouple::DistanceUnits are the types of units that can be used to measure distance.
Definition hydrocouple.h:1128
A Curve is a 1-dimensional geometric object usually stored as a sequence of IPoints,...
Definition hydrocouplespatial.h:676
virtual IPoint * endPoint() const =0
The end IPoint of this ICurve.
virtual IPoint * startPoint() const =0
The start IPoint of this ICurve.
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 ~ICurve()=default
ICurve destructor.
A directed edge from one vertex to another, adjacent to two faces. Based on Dani Lischinski's code fr...
Definition hydrocouplespatial.h:819
virtual IPolygon * right()=0
The right face of this edge.
virtual IPolygon * face()=0
The target face of this edge, if dual. Otherwise null if not dual.
virtual ~IEdge()=default
IEdge destructor.
virtual IPolygon * left()=0
The left face of this edge.
virtual unsigned int index() const =0
unique index identifier
virtual IEdge * sym()=0
The IEdge from the destination to the origin of this IEdge.
virtual IEdge * rot()=0
The dual of this edge, directed from its right to its left.
virtual IEdge * destPrev()=0
The next cw edge around (into) the destination of this edge.
virtual IEdge * origPrev()=0
The next cw edge around (from) the origin of this edge.
virtual IEdge * leftNext()=0
The ccw edge around the left face following this edge.
virtual IEdge * leftPrev()=0
The ccw edge around the left face before this edge.
virtual IEdge * rightPrev()=0
The IEdge around the right face ccw before this IEdge.
virtual IEdge * invRot()=0
The dual of this IEdge, directed from its left to its right.
virtual IVertex * dest()=0
The destination IVertex of this IEdge.
virtual IVertex * orig()=0
The origin IVertex of this IEdge.
virtual IEdge * destNext()=0
The next ccw edge around (into) the destination of this edge.
virtual IEdge * rightNext()=0
The edge around the right face ccw following this edge.
virtual IEdge * origNext()=0
The next ccw edge around (from) the origin of this IEdge.
The IEnvelope class.
Definition hydrocouplespatial.h:168
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 ~IEnvelope()=default
The minimum x-coordinate value for this IEnvelope.
virtual double minY() const =0
minY The minimum y-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:538
virtual int geometryCount() const =0
The number of geometries in this IGeometryCollection.
virtual ~IGeometryCollection()=default
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:1562
virtual IGeometry::GeometryType geometryType() const =0
geometryType
virtual HydroCouple::IDimension * geometryDimension() const =0
virtual HydroCouple::Spatial::IEnvelope * envelope() const =0
envelope
virtual void getValues(hydrocouple_variant *data, int geometryDimensionIndex, const initializer_list< int > &dimensionIndexes={}, int geometryDimensionLength=1, const initializer_list< int > &dimensionLength={}) const =0
Gets a multi-dimensional array of values for given geometry dimension index and size for a hyperslab.
virtual int geometryCount() const =0
geometryCount
virtual IGeometry * geometry(int geometryIndex) const =0
geometry
virtual void setValues(const hydrocouple_variant *data, int geometryDimensionIndex, const initializer_list< int > &dimensionIndexes={}, int geometryDimensionLength=1, const initializer_list< int > &dimensionLengths={})=0
Sets a multi-dimensional array of values for given geometry dimension index and size for a hyperslab.
virtual void getValue(hydrocouple_variant &data, int geometryDimensionIndex, const initializer_list< int > &dimensionIndexes={}) const =0
Gets value for given geometry dimension index.
virtual void setValue(const hydrocouple_variant *data, int geometryDimensionIndex, const initializer_list< int > &dimensionIndexes={})=0
Sets value for given geometry dimension index.
virtual ~IGeometryComponentDataItem()=default
IGeometryComponentItem destructor.
IGeometry is the root class of the geometry hierarchy.
Definition hydrocouplespatial.h:216
virtual unsigned char * getWKB(int &size) const =0
Exports this geometric object to a specific Well-known byte Representation of Geometry.
virtual ~IGeometry()=default
The type of IGeometry.
virtual IGeometry * intersection(const IGeometry &geom) const =0
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 bool equals(const IGeometry &geom) const =0
virtual bool overlaps(const IGeometry &geom) 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 bool disjoint(const IGeometry &geom) 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 ISpatialReferenceSystem * spatialReferenceSystem() const =0
Spatial reference system of geometric object.
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...
virtual IGeometry * unionG(const IGeometry &geom) const =0
GeometryType
The type of IGeometry.
Definition hydrocouplespatial.h:222
@ CurvePolygonZ
Definition hydrocouplespatial.h:253
@ PolyhedralSurfaceM
Definition hydrocouplespatial.h:277
@ CircularString
Definition hydrocouplespatial.h:232
@ CurvePolygonM
Definition hydrocouplespatial.h:272
@ MultiSurfaceM
Definition hydrocouplespatial.h:274
@ PolygonM
Definition hydrocouplespatial.h:264
@ CurvePolygonZM
Definition hydrocouplespatial.h:291
@ GeometryZ
Definition hydrocouplespatial.h:242
@ TriangleZM
Definition hydrocouplespatial.h:284
@ MultiPointM
Definition hydrocouplespatial.h:266
@ SurfaceZ
Definition hydrocouplespatial.h:257
@ GeometryCollectionM
Definition hydrocouplespatial.h:269
@ SurfaceZM
Definition hydrocouplespatial.h:295
@ MultiLineStringM
Definition hydrocouplespatial.h:267
@ GeometryCollectionZM
Definition hydrocouplespatial.h:288
@ GeometryM
Definition hydrocouplespatial.h:261
@ TINM
Definition hydrocouplespatial.h:278
@ MultiSurfaceZ
Definition hydrocouplespatial.h:255
@ GeometryZM
Definition hydrocouplespatial.h:280
@ MultiPoint
Definition hydrocouplespatial.h:228
@ TINZM
Definition hydrocouplespatial.h:297
@ CompoundCurveM
Definition hydrocouplespatial.h:271
@ PolygonZM
Definition hydrocouplespatial.h:283
@ MultiPointZM
Definition hydrocouplespatial.h:285
@ LineStringZM
Definition hydrocouplespatial.h:282
@ MultiPointZ
Definition hydrocouplespatial.h:247
@ CurveM
Definition hydrocouplespatial.h:275
@ CompoundCurve
Definition hydrocouplespatial.h:233
@ MultiCurveZ
Definition hydrocouplespatial.h:254
@ TriangleZ
Definition hydrocouplespatial.h:246
@ GeometryCollectionZ
Definition hydrocouplespatial.h:250
@ LineString
Definition hydrocouplespatial.h:225
@ MultiSurface
Definition hydrocouplespatial.h:236
@ MultiPolygonM
Definition hydrocouplespatial.h:268
@ Triangle
Definition hydrocouplespatial.h:227
@ PolyhedralSurfaceZ
Definition hydrocouplespatial.h:258
@ PolyhedralSurface
Definition hydrocouplespatial.h:239
@ Surface
Definition hydrocouplespatial.h:238
@ CurvePolygon
Definition hydrocouplespatial.h:234
@ LineStringZ
Definition hydrocouplespatial.h:244
@ MultiPolygon
Definition hydrocouplespatial.h:230
@ MultiLineStringZ
Definition hydrocouplespatial.h:248
@ CompoundCurveZM
Definition hydrocouplespatial.h:290
@ MultiPolygonZ
Definition hydrocouplespatial.h:249
@ MultiCurve
Definition hydrocouplespatial.h:235
@ MultiPolygonZM
Definition hydrocouplespatial.h:287
@ LineStringM
Definition hydrocouplespatial.h:263
@ SurfaceM
Definition hydrocouplespatial.h:276
@ CircularStringZM
Definition hydrocouplespatial.h:289
@ Polygon
Definition hydrocouplespatial.h:226
@ CurveZ
Definition hydrocouplespatial.h:256
@ MultiLineStringZM
Definition hydrocouplespatial.h:286
@ MultiCurveZM
Definition hydrocouplespatial.h:292
@ TriangleM
Definition hydrocouplespatial.h:265
@ CircularStringM
Definition hydrocouplespatial.h:270
@ PolyhedralSurfaceZM
Definition hydrocouplespatial.h:296
@ MultiCurveM
Definition hydrocouplespatial.h:273
@ Curve
Definition hydrocouplespatial.h:237
@ PolygonZ
Definition hydrocouplespatial.h:245
@ MultiLineString
Definition hydrocouplespatial.h:229
@ TIN
Definition hydrocouplespatial.h:240
@ CurveZM
Definition hydrocouplespatial.h:294
@ TINZ
Definition hydrocouplespatial.h:259
@ Geometry
Definition hydrocouplespatial.h:223
@ MultiSurfaceZM
Definition hydrocouplespatial.h:293
@ CompoundCurveZ
Definition hydrocouplespatial.h:252
@ GeometryCollection
Definition hydrocouplespatial.h:231
@ CircularStringZ
Definition hydrocouplespatial.h:251
virtual IEnvelope * envelope() const =0
The minimum bounding box for this Geometry, returned as a IGeometry. Recalculated at the time of the ...
virtual IGeometry * difference(const IGeometry &geom) const =0
virtual bool crosses(const IGeometry &geom) const =0
virtual bool isMeasured() const =0
virtual IGeometry * symmetricDifference(const IGeometry &geom) 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 IGeometry * boundary() const =0
Returns the closure of the combinatorial boundary of this geometric object (Reference [1],...
virtual bool contains(const IGeometry &geom) const =0
virtual IGeometry * convexHull() const =0
virtual GeometryType geometryType() const =0
Get the dimension of the coordinates in this object.
virtual IGeometry * locateAlong(double value) const =0
virtual int coordinateDimension() const =0
Get the dimension of the coordinates in this object.
virtual IGeometry * locateBetween(double mStart, double mEnd) const =0
The ILine class is an ILineString with exactly 2 IPoints.
Definition hydrocouplespatial.h:792
virtual ~ILine()=default
ILine destructor.
An ILineString is a Curve with linear interpolation between Points. Each consecutive pair of Points d...
Definition hydrocouplespatial.h:755
virtual int pointCount() const =0
The number of IPoints in this ILineString.
virtual ~ILineString()=default
ILineString destructor.
virtual IPoint * point(int index) const =0
An ILinearRing is an ILineString that is both isClosed() and isSimple().
Definition hydrocouplespatial.h:804
virtual ~ILinearRing()=default
ILinearRing destructor.
An IMultiCurve is a 1-dimensional IGeometryCollection whose elements are ICurves.
Definition hydrocouplespatial.h:733
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:777
virtual ~IMultiLineString()=default
IMultiLineString destructor.
virtual ILineString * lineString(int index) const =0
Returns the ILineString at index.
An IMultiPoint is a 0-dimensional IGeometryCollection.
Definition hydrocouplespatial.h:613
virtual IPoint * point(int index) const =0
virtual ~IMultiPoint()=default
IMultiPoint destructor.
An IMultiPolygon is an IMultiSurface whose elements are IPolygons.
Definition hydrocouplespatial.h:1106
virtual IPolygon * polygon(int index) const =0
A MultiSurface is a 2-dimensional GeometryCollection whose elements are Surfaces, all using coordinat...
Definition hydrocouplespatial.h:1001
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()=default
IMultiSurface destructor.
virtual double area() const =0
The area of this ISurface, as measured in the spatial reference system of this ISurface.
virtual IPoint * centroid() const =0
The mathematical centroid for this ISurface as an IPoint. The result is not guaranteed to be on this ...
The INetworkComponentDataItem class.
Definition hydrocouplespatial.h:1665
virtual NetworkDataObjectType networkDataObjectType() const =0
MeshDataObject that represents the artifact of network that is associated with the data.
virtual void setValues(const hydrocouple_variant *data, int edgeDimensionIndex, int vertexDimensionIndex, const initializer_list< int > &dimensionIndexes={}, int edgeDimensionIndexLength=1, int vertexDimensionIndexLength=1, const initializer_list< int > &dimensionLengths={})=0
setValues for given edge dimension index and node dimension index and size for a hyperslab.
virtual NetworkDataType networkDataType() const =0
meshDataType represents the type of mesh data type stored in the network.
virtual IDimension * vertexDimension() const =0
nodeDimension represents the dimension for the vertices.
virtual void getValues(hydrocouple_variant *data, int edgeDimensionIndex, int vertexDimensionIndex, const initializer_list< int > &dimensionIndexes={}, int edgeDimensionIndexLength=1, int vertexDimensionIndexLength=1, const initializer_list< int > &dimensionLengths={}) const =0
getValues for given edge dimension index and node dimension index and size for a hyperslab.
virtual IDimension * edgeDimension() const =0
edgeDimension represents the dimension for the edges.
virtual ~INetworkComponentDataItem()=default
INetworkComponentDataItem destructor.
virtual void setValue(const hydrocouple_variant &data, int edgeDimensionIndex, int vertexDimensionIndex, const initializer_list< int > &dimensionIndexes={})=0
setValue for given edge dimension index and node dimension index and data.
virtual INetwork * network() const =0
network associated with this INetworkComponentDataItem.
virtual void getValue(hydrocouple_variant &data, int edgeDimensionIndex, int vertexDimensionIndex, const initializer_list< int > &dimensionIndexes={}) const =0
getValue for given edge dimension index and node dimension index.
The INetwork class.
Definition hydrocouplespatial.h:1154
virtual int edgeCount() const =0
edgeCount represents the number of all the edges in the network.
virtual int vertexCount() const =0
vertexCount
virtual ~INetwork()=default
~Network destructor.
virtual IVertex * vertex(int index) const =0
vertex
virtual IEdge * edge(int index) const =0
edge
An IPoint is a 0-dimensional geometric object and represents a single location in coordinate space.
Definition hydrocouplespatial.h:571
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 double z() const =0
The x-coordinate value for this IPoint. Returns NIL otherwise.
virtual ~IPoint()=default
IPoint destructor.
A IPolygon is a planar ISurface defined by 1 exterior boundary and 0 or more interior boundaries.
Definition hydrocouplespatial.h:1066
virtual int interiorRingCount() const =0
virtual ILineString * interiorRing(int index) const =0
virtual IPolyhedralSurface * polyhydralSurface() const =0
polyhydralSurface
virtual ~IPolygon()=default
IPolygon destructor.
virtual ILineString * exteriorRing() const =0
virtual IEdge * edge() const =0
An arbitrary adjacent edge for this IPolygon.
IPolyhedralSurfaceComponentItem represents IPolyhedralSurface IComponentItem.
Definition hydrocouplespatial.h:1779
virtual void setValues(const hydrocouple_variant *data, int patchDimensionIndex, int edgeDimensionIndex, int vertexDimensionIndex, const initializer_list< int > &dimensionIndexes={}, int patchDimensionIndexLength=1, int edgeDimensionIndexLength=1, int vertexDimensionIndexLength=1, const initializer_list< int > &dimensionLengths)=0
setValues for given cell dimension index, edge dimension index, and node dimension index and size for...
virtual IPolyhedralSurface * polyhedralSurface() const =0
virtual IDimension * vertexDimension() const =0
vertexDimension represents the dimension for the nodes of the edges of patches associated with the IP...
virtual IDimension * patchDimension() const =0
patchDimension represents the dimension for the patches associated with the IPolyhedralSurface.
virtual IDimension * edgeDimension() const =0
edgeDimension represents the dimension for the edges of patches associated with the IPolyhedralSurfac...
virtual void getValues(hydrocouple_variant *data, int patchDimensionIndex, int edgeDimensionIndex, int vertexDimensionIndex, const initializer_list< int > &dimensionIndexes={}, int patchDimensionIndexLength=1, int edgeDimensionIndexLength=1, int vertexDimensionIndexLength=1, const initializer_list< int > &dimensionLengths={}) const =0
getValues for given cell dimension index, edge dimension index and node dimension index and size for ...
virtual ~IPolyhedralSurfaceComponentDataItem()=default
IPolyhedralSurfaceComponentItem destructor.
virtual MeshDataObjectType meshDataObjectType() const =0
meshDataType represents the type of mesh data.
virtual void setValue(const hydrocouple_variant &data, int patchDimensionIndex, int edgeDimensionIndex, int vertexDimensionIndex, const initializer_list< int > &dimensionIndexes={})=0
setValues for given cell dimension index, edge dimension index, and node dimension index.
virtual MeshDataType meshDataType() const =0
polyhedralSurface
virtual void getValue(hydrocouple_variant &data, int patchDimensionIndex, int edgeDimensionIndex, int vertexDimensionIndex, const initializer_list< int > &dimensionIndexes={}) 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:1223
virtual int vertexCount() const =0
vertexCount represents the number of all the vertices shared by the patches.
virtual IPolygon * patch(int index) const =0
virtual ~IPolyhedralSurface()=default
IPolyhedralSurface destructor.
virtual int patchCount() const =0
The number of polygons in this surface.
virtual IMultiPolygon * boundingPolygons(const IPolygon *polygon) 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:1378
virtual IRaster::RasterDataType dataType() const =0
Raster data type.
virtual IRaster * raster() const =0
Parent IRaster of this IRasterBand.
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 double noData() const =0
virtual ~IRasterBand()=default
IRasterBand destructor.
virtual void write(int xOffset, int yOffset, int xSize, int ySize, const void *image)=0
Writes image into the raster band.
An IRasterComponentDataItem represents an IRaster IComponentItem.
Definition hydrocouplespatial.h:1943
virtual void setValue(const hydrocouple_variant &data, int xIndex, int yIndex, int band, const initializer_list< int > &dimensionIndexes={})=0
setValue for given x dimension index, y dimension index, and band dimension index.
virtual ~IRasterComponentDataItem()=default
IRasterComponentItem destructor.
virtual IDimension * yDimension() const =0
IDimension for yDirection.
virtual IDimension * xDimension() const =0
IDimension for xDirection.
virtual IRaster * raster() const =0
IRaster associated with this IRasterComponentDataItem.
virtual IDimension * bandDimension() const =0
IDimension for IRasterBands.
virtual void getValues(hydrocouple_variant *data, int xIndex, int yIndex, int bandIndex, const initializer_list< int > &dimensionIndexes={}, int xIndexLength=1, int yIndexLength=1, int bandIndexLength=1, const initializer_list< int > &dimensionLengths={}) const =0
Gets a multi-dimensional array of values for given dimension for a hyperslab.
virtual void setValues(const hydrocouple_variant *data, int xIndex, int yIndex, int bandIndex, const initializer_list< int > &dimensionIndexes={}, int xIndexLength=1, int yIndexLength=1, int bandIndexLength=1, const initializer_list< int > &dimensionLengths={})=0
Sets a multi-dimensional array of values for given dimension for a hyperslab.
virtual void getValue(hydrocouple_variant &data, int xIndex, int yIndex, int bandIndex, const initializer_list< int > &dimensionIndexes={}) const =0
getValue for given x dimension index, y dimension index, and band dimension index.
A Raster spatial feature.
Definition hydrocouplespatial.h:1290
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 int xSize() const =0
Number of pixels in the x direction.
virtual ISpatialReferenceSystem * spatialReferenceSystem() const =0
The ISpatialReferenceSystem represents the spatial reference system of goemetric object.
virtual void addRasterBand(RasterDataType dataType)=0
Adds a new IRasterBand.
RasterDataType
The data type associated with a raster.
Definition hydrocouplespatial.h:1297
@ Byte
Eight bit unsigned integer.
Definition hydrocouplespatial.h:1301
@ UInt16
Sixteen bit unsigned integer.
Definition hydrocouplespatial.h:1303
@ CFloat32
Complex Float32.
Definition hydrocouplespatial.h:1319
@ UInt32
Thirty two bit unsigned integer.
Definition hydrocouplespatial.h:1307
@ CFloat64
Complex Float64.
Definition hydrocouplespatial.h:1321
@ Float32
Thirty two bit floating point.
Definition hydrocouplespatial.h:1311
@ Unknown
Unknown or unspecified type.
Definition hydrocouplespatial.h:1299
@ ARGB32_Premultiplied
Color, alpha, red, green, blue, 4 bytes the same as QImage::Format_ARGB32_Premultiplied.
Definition hydrocouplespatial.h:1325
@ Int16
Sixteen bit signed integer.
Definition hydrocouplespatial.h:1305
@ ARGB32
Color, alpha, red, green, blue, 4 bytes the same as QImage::Format_ARGB32.
Definition hydrocouplespatial.h:1323
@ Float64
Sixty four bit floating point.
Definition hydrocouplespatial.h:1313
@ CInt32
Complex Int32.
Definition hydrocouplespatial.h:1317
@ Int32
Thirty two bit signed integer.
Definition hydrocouplespatial.h:1309
@ CInt16
Complex Int16.
Definition hydrocouplespatial.h:1315
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:2061
virtual void getValue(hydrocouple_variant &data, int xCellIndex, int yCellIndex, int cellEdgeIndex, int cellVertexIndex, const initializer_list< int > &dimensionIndexes={}) const =0
getValue for given x cell index, y cell index, edge index, and node index.
virtual IDimension * cellEdgeDimension() const =0
cellEdgeDimension. Edge indices start from the bottom and go in a counter clockwise order.
virtual void setValues(const hydrocouple_variant *data, int xCellIndex, int yCellIndex, int cellEdgeIndex, int cellVertexIndex, const initializer_list< int > &dimensionIndexes={}, int xCellIndexLength=1, int yCellIndexLength=1, int cellEdgeIndexLength=1, int cellVertexIndexLength=1, const initializer_list< int > &dimensionLengths={})=0
setValues for given x cell index, y cell index, edge index, and node index and size for a hyperslab.
virtual void getValues(hydrocouple_variant *data, int xCellIndex, int yCellIndex, int cellEdgeIndex, int cellVertexIndex, const initializer_list< int > &dimensionIndexes={}, int xCellIndexLength=1, int yCellIndexLength=1, int cellEdgeIndexLength=1, int cellVertexIndexLength=1, const initializer_list< int > &dimensionLengths={}) const =0
getValues for given x cell index, y cell index, edge index, and node index and size for a hyperslab.
virtual ~IRegularGrid2DComponentDataItem()=default
~IRegularGrid2DComponentItem.
virtual IDimension * yCellDimension() const =0
Number of Y cells IDimension.
virtual IRegularGrid2D * grid() const =0
IRegularGrid2D grid associated with this IRegularGrid2DComponentItem.
virtual IDimension * cellVertexDimension() const =0
cellVertexDimension. Vertex indices start from the bottom left and go in a counter clockwise order.
virtual void setValue(const hydrocouple_variant &data, int xCellIndex, int yCellIndex, int cellEdgeIndex, int cellVertexIndex, const initializer_list< int > &dimensionIndexes={})=0
setValue for given x cell index, y cell index, edge index, and node index.
virtual MeshDataObjectType meshDataObjectType() const =0
meshDataType represents the type of mesh data type stored in the grid.
virtual IDimension * xCellDimension() const =0
Number of X cells IDimension.
The IRegularGrid2D class.
Definition hydrocouplespatial.h:1428
virtual ISpatialReferenceSystem * spatialReferenceSystem() const =0
The ISpatialReferenceSystem represents the spatial reference system of goemetric object.
virtual ~IRegularGrid2D()=default
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:2207
virtual IRegularGrid3D * grid() const =0
IRegularGrid3D grid associated with this IRegularGrid3DComponentItem.
virtual void setValue(const hydrocouple_variant &data, int xCellIndex, int yCellIndex, int zCellIndex, int cellFaceIndex, int cellVertexIndex, const initializer_list< int > &dimensionIndexes={})=0
setValue for given x cell index, y cell index, z cell index, face index, and node index.
virtual IDimension * zCellDimension() const =0
Number of Z cells IDimension.
virtual IDimension * cellFaceDimension() const =0
cellFaceDimension 0 = Top , 1 = Bottom, 2 = left , 3 = Right, Up = 4, Down = 5
virtual ~IRegularGrid3DComponentDataItem()=default
~IRegularGrid3DComponentItem.
virtual void getValues(hydrocouple_variant *data, int xCellIndex, int yCellIndex, int zCellIndex, int cellFaceIndex, int cellVertexIndex, const initializer_list< int > &dimensionIndexes={}, int xCellIndexLength=1, int yCellIndexLength=1, int zCellIndexLength=1, int cellFaceIndexLength=1, int cellVertexIndexLength=1, const initializer_list< int > &dimensionLengths={}) const =0
getValues for given x cell index, y cell index, z cell index, face index, and node index and size for...
virtual IDimension * yCellDimension() const =0
Number of Y cells IDimension.
virtual void getValue(hydrocouple_variant &data, int xCellIndex, int yCellIndex, int zCellIndex, int cellFaceIndex, int cellVertexIndex, const initializer_list< int > &dimensionIndexes={}) 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 MeshDataObjectType meshDataObjectType() const =0
meshDataType
virtual IDimension * cellVertexDimension() const =0
cellVertexDimension Node indices start from the bottom left and go in a counter clockwise order.
virtual void setValues(const hydrocouple_variant *data, int xCellIndex, int yCellIndex, int zCellIndex, int cellFaceIndex, int cellVertexIndex, const initializer_list< int > &dimensionIndexes={}, int xCellIndexLength=1, int yCellIndexLength=1, int zCellIndexLength=1, int cellFaceIndexLength=1, int cellVertexIndexLength=1, const initializer_list< int > &dimensionLengths={})=0
setValues for given x cell index, y cell index, z cell index, face index, and node index and size for...
The IRegularGrid3D class.
Definition hydrocouplespatial.h:1487
virtual double yNodeLocation(int xNodeIndex, int yNodeIndex) const =0
yNodeLocation provides the x location coordinate for the x-node and y-node indexes.
virtual ISpatialReferenceSystem * spatialReferenceSystem() const =0
The ISpatialReferenceSystem represents the spatial reference system of goemetric object.
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 ~IRegularGrid3D()=default
IRegularGrid3D destructor.
virtual int numYNodes() const =0
numYNodes represents the number of nodes in the y direction.
Spatial Reference System.
Definition hydrocouplespatial.h:133
virtual ~ISpatialReferenceSystem()=default
The Well-known Text Representation of the Spatial Reference System.
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 HydroCouple::IUnit::DistanceUnits distanceUnits() const =0
The measurement distance units for the Spatial Reference System.
A ISurface is a 2-dimensional IGeometry object.
Definition hydrocouplespatial.h:965
virtual double area() const =0
The area of this ISurface, as measured in the spatial reference system of this ISurface.
virtual IMultiCurve * boundaryMultiCurve() const =0
boundaryMultiCurve
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 ~ISurface()=default
ISurface destructor.
ITINComponentDataItem represents ITIN IComponentDataItem.
Definition hydrocouplespatial.h:1916
virtual ~ITINComponentDataItem()=default
ITINComponentDataItem destructor.
An ITIN is a triangulated irregular network IPolyhedralSurface consisting only of ITriangle patches.
Definition hydrocouplespatial.h:1273
virtual ~ITIN()=default
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:1122
virtual IVertex * vertex3() const =0
The third vertex of this ITriangle.
virtual IVertex * vertex1() const =0
The first vertex of this ITriangle.
virtual IVertex * vertex(int index) const =0
The vertex of this ITriangle at the specified index.
virtual IVertex * vertex2() const =0
The second vertex of this ITriangle.
virtual ~ITriangle()=default
ITriangle destructor.
The IVertex class is an IPoint of a topologically aware IGeometry.
Definition hydrocouplespatial.h:631
virtual ~IVertex()=default
IVertex destructor.
virtual IEdge * edge() const =0
An arbitrary outgoing IEdge from this vertex.
virtual unsigned int index() const =0
unique index identifier
MeshDataType
The types of data available in a mesh.
Definition hydrocouplespatial.h:90
NetworkDataType
The types of data available in a network.
Definition hydrocouplespatial.h:105
@ Vector
Vector values.
Definition hydrocouplespatial.h:96
@ Scalar
Single scalar value.
Definition hydrocouplespatial.h:92
@ MultiScalar
Multiple scalar values.
Definition hydrocouplespatial.h:94
@ Tensor
Tensor values.
Definition hydrocouplespatial.h:98
RegularGridType
The types of regular grids.
Definition hydrocouplespatial.h:120
@ Rectilinear
Rectilinear grid.
Definition hydrocouplespatial.h:124
@ Curvilinear
Curvilinear grid.
Definition hydrocouplespatial.h:126
@ Cartesian
Cartesian grid.
Definition hydrocouplespatial.h:122
MeshDataObjectType
The MeshDataType enum describes the part of the geometry of the mesh that data corresponds to.
Definition hydrocouplespatial.h:47
@ Vertex
The data corresponds to the vertex of mesh edge vertex.
Definition hydrocouplespatial.h:57
@ Face
The data corresponds to the edges of the mesh.
Definition hydrocouplespatial.h:67
@ Cell
The data corresponds to mesh cell.
Definition hydrocouplespatial.h:52
NetworkDataObjectType
The types of data available in a network.
Definition hydrocouplespatial.h:74
@ Node
The data corresponds to the nodes of the network.
Definition hydrocouplespatial.h:78
@ Edge
The data corresponds to the edges of the mesh.
Definition hydrocouplespatial.h:62
HydroCouple namespace contains the core interface specifications for the HydroCouple component-based ...
Definition hydrocouple.h:60
variant< bool, char, short, int, long, unsigned char, unsigned short, unsigned int, unsigned long, float, double, long double, string, void * > hydrocouple_variant
hydrocouple_variant is a variant type that can be used to store the core value types values of differ...
Definition hydrocouple.h:96
The Point struct.
Definition hydrocouplespatialwkb.h:36
The PointM struct.
Definition hydrocouplespatialwkb.h:55
The PointZ struct.
Definition hydrocouplespatialwkb.h:45
The PointZM struct.
Definition hydrocouplespatialwkb.h:65