HydroCouple  2.0.0-alpha.1
HydroCouple Interface Definitions
Loading...
Searching...
No Matches
hydrocouplespatial.h
Go to the documentation of this file.
1
20
21#ifndef HYDROCOUPLESPATIAL_H
22#define HYDROCOUPLESPATIAL_H
23
24#include "hydrocouple.h"
25
26
27namespace HydroCouple
28{
32 namespace Spatial
33 {
34 class IEdge;
35 class IMeshView;
36 class IRasterBand;
37 class IPolygon;
39
45 {
46
51
56
61
66 };
67
72 {
77
82 };
83
99
112
118 {
119
120 public:
124 virtual ~ISpatialReferenceSystem() = default;
125
131 [[nodiscard]] virtual int authSRID() const = 0;
132
136 [[nodiscard]] virtual const std::string &authName() const = 0;
137
141 [[nodiscard]] virtual const std::string &srText() const = 0;
142
146 [[nodiscard]] virtual HydroCouple::IUnit::DistanceUnits distanceUnits() const = 0;
147 };
148
153 {
154 public:
158 virtual ~IEnvelope() = default;
159
164 [[nodiscard]] virtual double minX() const = 0;
165
170 [[nodiscard]] virtual double maxX() const = 0;
171
176 [[nodiscard]] virtual double minY() const = 0;
177
182 [[nodiscard]] virtual double maxY() const = 0;
183
188 [[nodiscard]] virtual double minZ() const = 0;
189
194 [[nodiscard]] virtual double maxZ() const = 0;
195 };
196
201 {
202 public:
206 enum class GeometryType
207 {
209 Point = 1,
222 Curve = 13,
225 TIN = 16,
226
227 GeometryZ = 1000,
228 PointZ = 1001,
230 PolygonZ = 1003,
231 TriangleZ = 1017,
241 CurveZ = 1013,
242 SurfaceZ = 1014,
244 TINZ = 1016,
245
246 GeometryM = 2000,
247 PointM = 2001,
249 PolygonM = 2003,
250 TriangleM = 2017,
260 CurveM = 2013,
261 SurfaceM = 2014,
263 TINM = 2016,
264
266 PointZM = 3001,
268 PolygonZM = 3003,
279 CurveZM = 3013,
280 SurfaceZM = 3014,
282 TINZM = 3016,
283 };
284
288 virtual ~IGeometry() = default;
289
294 [[nodiscard]] virtual const std::string &id() const = 0;
295
300 [[nodiscard]] virtual unsigned int index() const = 0;
301
309 [[nodiscard]] virtual int dimension() const = 0;
310
316 [[nodiscard]] virtual int coordinateDimension() const = 0;
317
324 [[nodiscard]] virtual GeometryType geometryType() const = 0;
325
329 [[nodiscard]] virtual ISpatialReferenceSystem *spatialReferenceSystem() const = 0;
330
335 [[nodiscard]] virtual IEnvelope *envelope() const = 0;
336
341 [[nodiscard]] virtual std::string getWKT() const = 0;
342
346 [[nodiscard]] virtual std::vector<unsigned char> getWKB() const = 0;
347
352 [[nodiscard]] virtual bool isEmpty() const = 0;
353
361 [[nodiscard]] virtual bool isSimple() const = 0;
362
366 [[nodiscard]] virtual bool is3D() const = 0;
367
371 [[nodiscard]] virtual bool isMeasured() const = 0;
372
382 [[nodiscard]] virtual IGeometry *boundary() const = 0;
383
388
392 [[nodiscard]] virtual bool equals(const IGeometry &geom) const = 0;
393
397 [[nodiscard]] virtual bool disjoint(const IGeometry &geom) const = 0;
398
402 [[nodiscard]] virtual bool intersects(const IGeometry &geom) const = 0;
403
407 [[nodiscard]] virtual bool touches(const IGeometry &geom) const = 0;
408
412 [[nodiscard]] virtual bool crosses(const IGeometry &geom) const = 0;
413
417 [[nodiscard]] virtual bool within(const IGeometry &geom) const = 0;
418
422 [[nodiscard]] virtual bool contains(const IGeometry &geom) const = 0;
423
427 [[nodiscard]] virtual bool overlaps(const IGeometry &geom) const = 0;
428
438 [[nodiscard]] virtual bool relate(const IGeometry &geom) const = 0;
439
443 [[nodiscard]] virtual IGeometry *locateAlong(double value) const = 0;
444
448 [[nodiscard]] virtual IGeometry *locateBetween(double mStart, double mEnd) const = 0;
449
451
456
465 [[nodiscard]] virtual double distance(const IGeometry &geom) const = 0;
466
474 [[nodiscard]] virtual IGeometry *buffer(double bufferDistance) const = 0;
475
482 [[nodiscard]] virtual IGeometry *convexHull() const = 0;
483
487 [[nodiscard]] virtual IGeometry *intersection(const IGeometry &geom) const = 0;
488
492 [[nodiscard]] virtual IGeometry *unionG(const IGeometry &geom) const = 0;
493
497 [[nodiscard]] virtual IGeometry *difference(const IGeometry &geom) const = 0;
498
502 [[nodiscard]] virtual IGeometry *symmetricDifference(const IGeometry &geom) const = 0;
503
505 };
506
520 class IGeometryCollection : public virtual IGeometry
521 {
522
523 public:
527 virtual ~IGeometryCollection() = default;
528
533 [[nodiscard]] virtual int geometryCount() const = 0;
534
540 [[nodiscard]] virtual IGeometry *geometry(int index) const = 0;
541 };
542
553 class IPoint : public virtual IGeometry
554 {
555 public:
559 virtual ~IPoint() = default;
560
564 [[nodiscard]] virtual double x() const = 0;
565
569 [[nodiscard]] virtual double y() const = 0;
570
574 [[nodiscard]] virtual double z() const = 0;
575
579 [[nodiscard]] virtual double m() const = 0;
580 };
581
595 class IMultiPoint : public virtual IGeometryCollection
596 {
597
598 public:
602 virtual ~IMultiPoint() = default;
603
607 [[nodiscard]] virtual IPoint *point(int index) const = 0;
608 };
609
613 class IVertex : public virtual IPoint
614 {
615 public:
619 virtual ~IVertex() = default;
620
625 [[nodiscard]] virtual unsigned int index() const = 0;
626
632 [[nodiscard]] virtual IEdge *edge() const = 0;
633 };
634
658 class ICurve : public virtual IGeometry
659 {
660
661 public:
665 virtual ~ICurve() = default;
666
670 [[nodiscard]] virtual double length() const = 0;
671
675 [[nodiscard]] virtual IPoint *startPoint() const = 0;
676
680 [[nodiscard]] virtual IPoint *endPoint() const = 0;
681
685 [[nodiscard]] virtual bool isClosed() const = 0;
686
691 [[nodiscard]] virtual bool isRing() const = 0;
692 };
693
715 class IMultiCurve : public virtual IGeometryCollection
716 {
717 public:
718 virtual ~IMultiCurve() = default;
719
724 [[nodiscard]] virtual bool isClosed() const = 0;
725
730 [[nodiscard]] virtual double length() const = 0;
731 };
732
737 class ILineString : public virtual ICurve
738 {
739 public:
743 virtual ~ILineString() = default;
744
748 [[nodiscard]] virtual int pointCount() const = 0;
749
753 [[nodiscard]] virtual IPoint *point(int index) const = 0;
754 };
755
759 class IMultiLineString : public virtual IMultiCurve
760 {
761 public:
765 virtual ~IMultiLineString() = default;
766
768 [[nodiscard]] virtual ILineString *lineString(int index) const = 0;
769 };
770
774 class ILine : public virtual ILineString
775 {
776 public:
780 virtual ~ILine() = default;
781 };
782
786 class ILinearRing : public virtual ILineString
787 {
788 public:
792 virtual ~ILinearRing() = default;
793 };
794
801 class IEdge
802 {
803 public:
807 virtual ~IEdge() = default;
808
813 [[nodiscard]] virtual unsigned int index() const = 0;
814
819 [[nodiscard]] virtual IVertex *orig() const = 0;
820
825 [[nodiscard]] virtual IVertex *dest() const = 0;
826
832 [[nodiscard]] virtual IPolygon *left() const = 0;
833
839 [[nodiscard]] virtual IPolygon *right() const = 0;
840
845 [[nodiscard]] virtual IPolygon *face() const = 0;
846
852 [[nodiscard]] virtual IEdge *rot() const = 0;
853
859 [[nodiscard]] virtual IEdge *invRot() const = 0;
860
866 [[nodiscard]] virtual IEdge *sym() const = 0;
867
873 [[nodiscard]] virtual IEdge *origNext() const = 0;
874
880 [[nodiscard]] virtual IEdge *origPrev() const = 0;
881
887 [[nodiscard]] virtual IEdge *destNext() const = 0;
888
894 [[nodiscard]] virtual IEdge *destPrev() const = 0;
895
901 [[nodiscard]] virtual IEdge *leftNext() const = 0;
902
908 [[nodiscard]] virtual IEdge *leftPrev() const = 0;
909
915 [[nodiscard]] virtual IEdge *rightNext() const = 0;
916
922 [[nodiscard]] virtual IEdge *rightPrev() const = 0;
923 };
924
947 class ISurface : public virtual IGeometry
948 {
949 public:
953 virtual ~ISurface() = default;
954
959 [[nodiscard]] virtual double area() const = 0;
960
965 [[nodiscard]] virtual IPoint *centroid() const = 0;
966
970 [[nodiscard]] virtual IPoint *pointOnSurface() const = 0;
971
976 [[nodiscard]] virtual IMultiCurve *boundaryMultiCurve() const = 0;
977 };
978
983 class IMultiSurface : public virtual IGeometryCollection
984 {
985
986 public:
990 virtual ~IMultiSurface() = default;
991
996 [[nodiscard]] virtual double area() const = 0;
997
1002 [[nodiscard]] virtual IPoint *centroid() const = 0;
1003
1007 [[nodiscard]] virtual IPoint *pointOnSurface() const = 0;
1008 };
1009
1047 class IPolygon : public virtual ISurface
1048 {
1049 public:
1053 virtual ~IPolygon() = default;
1054
1058 [[nodiscard]] virtual ILineString *exteriorRing() const = 0;
1059
1063 [[nodiscard]] virtual int interiorRingCount() const = 0;
1064
1068 [[nodiscard]] virtual ILineString *interiorRing(int index) const = 0;
1069
1075 [[nodiscard]] virtual IEdge *edge() const = 0;
1076
1081 [[nodiscard]] virtual IPolyhedralSurface *polyhedralSurface() const = 0;
1082 };
1083
1087 class IMultiPolygon : public virtual IMultiSurface
1088 {
1089
1090 public:
1091 virtual ~IMultiPolygon() = default;
1092
1096 [[nodiscard]] virtual IPolygon *polygon(int index) const = 0;
1097 };
1098
1103 class ITriangle : public virtual IPolygon
1104 {
1105 public:
1109 virtual ~ITriangle() = default;
1110
1114 [[nodiscard]] virtual IVertex *vertex1() const = 0;
1115
1119 [[nodiscard]] virtual IVertex *vertex2() const = 0;
1120
1124 [[nodiscard]] virtual IVertex *vertex3() const = 0;
1125
1129 [[nodiscard]] virtual IVertex *vertex(int index) const = 0;
1130 };
1131
1135 class INetwork : public virtual IIdentity
1136 {
1137 public:
1141 virtual ~INetwork() = default;
1142
1146 [[nodiscard]] virtual int64_t edgeCount() const = 0;
1147
1152 [[nodiscard]] virtual IEdge *edge(int64_t index) const = 0;
1153
1157 [[nodiscard]] virtual int64_t vertexCount() const = 0;
1158
1163 [[nodiscard]] virtual IVertex *vertex(int64_t index) const = 0;
1164
1172 [[nodiscard]] virtual const IMeshView *meshView() const = 0;
1173 };
1174
1181 class IPolyhedralSurface : public virtual ISurface
1182 {
1183 public:
1187 virtual ~IPolyhedralSurface() = default;
1188
1192 [[nodiscard]] virtual int64_t patchCount() const = 0;
1193
1198 [[nodiscard]] virtual IPolygon *patch(int64_t index) const = 0;
1199
1203 [[nodiscard]] virtual int64_t vertexCount() const = 0;
1204
1209 [[nodiscard]] virtual IVertex *vertex(int64_t index) const = 0;
1210
1215 [[nodiscard]] virtual IMultiPolygon *boundingPolygons(const IPolygon *polygon) const = 0;
1216
1220 [[nodiscard]] virtual bool isClosed() const = 0;
1221
1229 [[nodiscard]] virtual const IMeshView *meshView() const = 0;
1230 };
1231
1236 class ITIN : public virtual IPolyhedralSurface
1237 {
1238 public:
1242 virtual ~ITIN() = default;
1243
1248 [[nodiscard]] virtual ITriangle *triangle(int64_t index) const = 0;
1249 };
1250
1254 class IRaster : public virtual IIdentity
1255 {
1256
1257 public:
1292
1296 virtual ~IRaster() = 0;
1297
1301 [[nodiscard]] virtual int xSize() const = 0;
1302
1306 [[nodiscard]] virtual int ySize() const = 0;
1307
1311 [[nodiscard]] virtual int rasterBandCount() const = 0;
1312
1316 virtual void addRasterBand(RasterDataType dataType) = 0;
1317
1321 [[nodiscard]] virtual ISpatialReferenceSystem *spatialReferenceSystem() const = 0;
1322
1331 virtual void geoTransformation(double *transformationMatrix) = 0;
1332
1336 [[nodiscard]] virtual IRasterBand *getRasterBand(int bandIndex) const = 0;
1337 };
1338
1342 class IRasterBand : public virtual IIdentity
1343 {
1344
1345 public:
1349 virtual ~IRasterBand() = default;
1350
1352 [[nodiscard]] virtual int xSize() const = 0;
1353
1355 [[nodiscard]] virtual int ySize() const = 0;
1356
1358 [[nodiscard]] virtual IRaster *raster() const = 0;
1359
1361 [[nodiscard]] virtual IRaster::RasterDataType dataType() const = 0;
1362
1371 virtual void read(int xOffset, int yOffset, int xSize, int ySize, void *image) const = 0;
1372
1381 virtual void write(int xOffset, int yOffset, int xSize, int ySize, const void *image) = 0;
1382
1386 [[nodiscard]] virtual double noData() const = 0;
1387 };
1388
1393 class IRegularGrid2D : public virtual IIdentity
1394 {
1395 public:
1399 virtual ~IRegularGrid2D() = default;
1400
1404 [[nodiscard]] virtual ISpatialReferenceSystem *spatialReferenceSystem() const = 0;
1405
1410 [[nodiscard]] virtual RegularGridType gridType() const = 0;
1411
1416 [[nodiscard]] virtual int numXNodes() const = 0;
1417
1422 [[nodiscard]] virtual int numYNodes() const = 0;
1423
1431 [[nodiscard]] virtual double xNodeLocation(int xNodeIndex, int yNodeIndex) const = 0;
1432
1440 [[nodiscard]] virtual double yNodeLocation(int xNodeIndex, int yNodeIndex) const = 0;
1441
1447 [[nodiscard]] virtual std::span<const double> nodeXs() const = 0;
1448
1454 [[nodiscard]] virtual std::span<const double> nodeYs() const = 0;
1455
1463 [[nodiscard]] virtual bool isActive(int xCellIndex, int yCellIndex) const = 0;
1464
1470 [[nodiscard]] virtual std::span<const uint8_t> activeCells() const = 0;
1471 };
1472
1477 class IRegularGrid3D : public virtual IIdentity
1478 {
1479 public:
1483 virtual ~IRegularGrid3D() = default;
1484
1488 [[nodiscard]] virtual ISpatialReferenceSystem *spatialReferenceSystem() const = 0;
1489
1494 [[nodiscard]] virtual RegularGridType gridType() const = 0;
1495
1500 [[nodiscard]] virtual int numXNodes() const = 0;
1501
1506 [[nodiscard]] virtual int numYNodes() const = 0;
1507
1512 [[nodiscard]] virtual int numZNodes() const = 0;
1513
1521 [[nodiscard]] virtual double xNodeLocation(int xNodeIndex, int yNodeIndex) const = 0;
1522
1530 [[nodiscard]] virtual double yNodeLocation(int xNodeIndex, int yNodeIndex) const = 0;
1531
1540 [[nodiscard]] virtual double zNodeLocation(int xNodeIndex, int yNodeIndex, int zNodeIndex) const = 0;
1541
1547 [[nodiscard]] virtual std::span<const double> nodeXs() const = 0;
1548
1554 [[nodiscard]] virtual std::span<const double> nodeYs() const = 0;
1555
1561 [[nodiscard]] virtual std::span<const double> nodeZs() const = 0;
1562
1571 [[nodiscard]] virtual bool isActive(int xCellIndex, int yCellIndex, int zCellIndex) const = 0;
1572
1578 [[nodiscard]] virtual std::span<const uint8_t> activeCells() const = 0;
1579 };
1580
1593 {
1594 public:
1598 virtual ~IMeshView() = default;
1599
1603 [[nodiscard]] virtual int64_t nodeCount() const = 0;
1604
1608 [[nodiscard]] virtual int64_t edgeCount() const = 0;
1609
1613 [[nodiscard]] virtual int64_t faceCount() const = 0;
1614
1618 [[nodiscard]] virtual std::span<const double> nodeX() const = 0;
1619
1623 [[nodiscard]] virtual std::span<const double> nodeY() const = 0;
1624
1628 [[nodiscard]] virtual std::span<const double> nodeZ() const = 0;
1629
1635 [[nodiscard]] virtual std::span<const int64_t> faceNodeOffsets() const = 0;
1636
1640 [[nodiscard]] virtual std::span<const int64_t> faceNodes() const = 0;
1641
1646 [[nodiscard]] virtual std::span<const int64_t> edgeNodes() const = 0;
1647 };
1648
1657 {
1658 public:
1662 virtual ~IGeometryComponentDataItem() = default;
1663
1667 [[nodiscard]] virtual IGeometry::GeometryType geometryType() const = 0;
1668
1672 [[nodiscard]] virtual int64_t geometryCount() const = 0;
1673
1678 [[nodiscard]] virtual IGeometry *geometry(int64_t geometryIndex) const = 0;
1679
1683 [[nodiscard]] virtual HydroCouple::IDimension *geometryDimension() const = 0;
1684
1688 [[nodiscard]] virtual HydroCouple::Spatial::IEnvelope *envelope() const = 0;
1689 };
1690
1700 {
1701 public:
1705 virtual ~INetworkComponentDataItem() = default;
1706
1710 [[nodiscard]] virtual INetwork *network() const = 0;
1711
1715 [[nodiscard]] virtual NetworkDataObjectType networkDataObjectType() const = 0;
1716
1720 [[nodiscard]] virtual SpatialDataType networkDataType() const = 0;
1721
1725 [[nodiscard]] virtual IDimension *edgeDimension() const = 0;
1726
1730 [[nodiscard]] virtual IDimension *vertexDimension() const = 0;
1731 };
1732
1742 {
1743 public:
1748
1752 [[nodiscard]] virtual MeshDataObjectType meshDataObjectType() const = 0;
1753
1757 [[nodiscard]] virtual SpatialDataType meshDataType() const = 0;
1758
1762 [[nodiscard]] virtual IPolyhedralSurface *polyhedralSurface() const = 0;
1763
1767 [[nodiscard]] virtual IDimension *patchDimension() const = 0;
1768
1772 [[nodiscard]] virtual IDimension *edgeDimension() const = 0;
1773
1777 [[nodiscard]] virtual IDimension *vertexDimension() const = 0;
1778 };
1779
1785 {
1786 public:
1790 virtual ~ITINComponentDataItem() = default;
1791
1795 [[nodiscard]] virtual ITIN *TIN() const = 0;
1796 };
1797
1806 {
1807 public:
1811 virtual ~IRasterComponentDataItem() = default;
1812
1816 [[nodiscard]] virtual IRaster *raster() const = 0;
1817
1821 [[nodiscard]] virtual IDimension *xDimension() const = 0;
1822
1826 [[nodiscard]] virtual IDimension *yDimension() const = 0;
1827
1831 [[nodiscard]] virtual IDimension *bandDimension() const = 0;
1832 };
1833
1843 {
1844 public:
1849
1853 [[nodiscard]] virtual IRegularGrid2D *grid() const = 0;
1854
1858 [[nodiscard]] virtual MeshDataObjectType meshDataObjectType() const = 0;
1859
1863 [[nodiscard]] virtual IDimension *xCellDimension() const = 0;
1864
1868 [[nodiscard]] virtual IDimension *yCellDimension() const = 0;
1869
1873 [[nodiscard]] virtual IDimension *cellEdgeDimension() const = 0;
1874
1878 [[nodiscard]] virtual IDimension *cellVertexDimension() const = 0;
1879 };
1880
1890 {
1891 public:
1896
1900 [[nodiscard]] virtual IRegularGrid3D *grid() const = 0;
1901
1905 [[nodiscard]] virtual MeshDataObjectType meshDataObjectType() const = 0;
1906
1910 [[nodiscard]] virtual IDimension *xCellDimension() const = 0;
1911
1915 [[nodiscard]] virtual IDimension *yCellDimension() const = 0;
1916
1920 [[nodiscard]] virtual IDimension *zCellDimension() const = 0;
1921
1925 [[nodiscard]] virtual IDimension *cellFaceDimension() const = 0;
1926
1930 [[nodiscard]] virtual IDimension *cellVertexDimension() const = 0;
1931 };
1932 }
1933}
1934
1935#endif // HYDROCOUPLESPATIAL_H
IComponentDataItem is a fundamental unit of data for a component.
Definition hydrocouple.h:1466
IDimension provides the properties of the dimensions of a variable.
Definition hydrocouple.h:1082
IIdentity interface class defines a method to get the Id of an HydroCouple entity.
Definition hydrocouple.h:313
DistanceUnits
HydroCouple::DistanceUnits are the types of units that can be used to measure distance.
Definition hydrocouple.h:1261
A Curve is a 1-dimensional geometric object usually stored as a sequence of IPoints,...
Definition hydrocouplespatial.h:659
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:802
virtual IEdge * sym() const =0
The IEdge from the destination to the origin of this IEdge.
virtual IEdge * origNext() const =0
The next ccw edge around (from) the origin of this IEdge.
virtual ~IEdge()=default
IEdge destructor.
virtual IEdge * rot() const =0
The dual of this edge, directed from its right to its left.
virtual unsigned int index() const =0
unique index identifier
virtual IPolygon * left() const =0
The left face of this edge.
virtual IEdge * leftPrev() const =0
The ccw edge around the left face before this edge.
virtual IEdge * destPrev() const =0
The next cw edge around (into) the destination of this edge.
virtual IEdge * origPrev() const =0
The next cw edge around (from) the origin of this edge.
virtual IEdge * leftNext() const =0
The ccw edge around the left face following this edge.
virtual IEdge * rightPrev() const =0
The IEdge around the right face ccw before this IEdge.
virtual IPolygon * face() const =0
The target face of this edge, if dual. Otherwise null if not dual.
virtual IPolygon * right() const =0
The right face of this edge.
virtual IEdge * destNext() const =0
The next ccw edge around (into) the destination of this edge.
virtual IVertex * orig() const =0
The origin IVertex of this IEdge.
virtual IEdge * invRot() const =0
The dual of this IEdge, directed from its left to its right.
virtual IEdge * rightNext() const =0
The edge around the right face ccw following this edge.
virtual IVertex * dest() const =0
The destination IVertex of this IEdge.
IEnvelope represents the minimum bounding box of a geometry.
Definition hydrocouplespatial.h:153
virtual double maxZ() const =0
The maximum z-coordinate value for this IEnvelope.
virtual double minZ() const =0
The minimum z-coordinate value for this IEnvelope.
virtual double maxY() const =0
The maximum y-coordinate value for this IEnvelope.
virtual double minX() const =0
The minimum x-coordinate value for this IEnvelope.
virtual ~IEnvelope()=default
IEnvelope destructor.
virtual double minY() const =0
The minimum y-coordinate value for this IEnvelope.
virtual double maxX() const =0
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:521
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.
IGeometryComponentDataItem is an IComponentDataItem whose data is associated with a collection of IGe...
Definition hydrocouplespatial.h:1657
virtual IGeometry * geometry(int64_t geometryIndex) const =0
The IGeometry at the specified index.
virtual int64_t geometryCount() const =0
The number of geometries associated with this data item.
virtual IGeometry::GeometryType geometryType() const =0
The type of the geometries this data item is associated with.
virtual HydroCouple::IDimension * geometryDimension() const =0
The IDimension of the geometries (dimension 0 of shape()).
virtual HydroCouple::Spatial::IEnvelope * envelope() const =0
The IEnvelope bounding all geometries of this data item.
virtual ~IGeometryComponentDataItem()=default
IGeometryComponentDataItem destructor.
IGeometry is the root class of the geometry hierarchy.
Definition hydrocouplespatial.h:201
virtual ~IGeometry()=default
IGeometry destructor.
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 bool equals(const IGeometry &geom) const =0
virtual bool overlaps(const IGeometry &geom) const =0
virtual std::vector< unsigned char > getWKB() const =0
Exports this geometric object to a specific Well-known byte Representation of Geometry.
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 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:207
@ MultiSurfaceM
Definition hydrocouplespatial.h:259
@ PolyhedralSurfaceM
Definition hydrocouplespatial.h:262
@ MultiLineStringZM
Definition hydrocouplespatial.h:271
@ GeometryZM
Definition hydrocouplespatial.h:265
@ MultiPointZM
Definition hydrocouplespatial.h:270
@ MultiPointZ
Definition hydrocouplespatial.h:232
@ CompoundCurve
Definition hydrocouplespatial.h:218
@ MultiPolygonZM
Definition hydrocouplespatial.h:272
@ LineStringM
Definition hydrocouplespatial.h:248
@ Point
Definition hydrocouplespatial.h:209
@ Curve
Definition hydrocouplespatial.h:222
@ LineString
Definition hydrocouplespatial.h:210
@ MultiLineStringM
Definition hydrocouplespatial.h:252
@ TIN
Definition hydrocouplespatial.h:225
@ MultiPointM
Definition hydrocouplespatial.h:251
@ MultiPoint
Definition hydrocouplespatial.h:213
@ LineStringZM
Definition hydrocouplespatial.h:267
@ CurveZM
Definition hydrocouplespatial.h:279
@ GeometryCollectionZM
Definition hydrocouplespatial.h:273
@ TriangleZ
Definition hydrocouplespatial.h:231
@ Polygon
Definition hydrocouplespatial.h:211
@ SurfaceZM
Definition hydrocouplespatial.h:280
@ CompoundCurveZM
Definition hydrocouplespatial.h:275
@ CompoundCurveM
Definition hydrocouplespatial.h:256
@ MultiPolygon
Definition hydrocouplespatial.h:215
@ GeometryCollectionZ
Definition hydrocouplespatial.h:235
@ GeometryCollectionM
Definition hydrocouplespatial.h:254
@ CircularStringZM
Definition hydrocouplespatial.h:274
@ Triangle
Definition hydrocouplespatial.h:212
@ SurfaceM
Definition hydrocouplespatial.h:261
@ PolygonM
Definition hydrocouplespatial.h:249
@ SurfaceZ
Definition hydrocouplespatial.h:242
@ MultiSurfaceZ
Definition hydrocouplespatial.h:240
@ CurvePolygonZM
Definition hydrocouplespatial.h:276
@ TINZ
Definition hydrocouplespatial.h:244
@ MultiLineString
Definition hydrocouplespatial.h:214
@ MultiPolygonM
Definition hydrocouplespatial.h:253
@ MultiCurveZM
Definition hydrocouplespatial.h:277
@ MultiSurfaceZM
Definition hydrocouplespatial.h:278
@ PolygonZM
Definition hydrocouplespatial.h:268
@ CurveZ
Definition hydrocouplespatial.h:241
@ PointM
Definition hydrocouplespatial.h:247
@ CurvePolygonM
Definition hydrocouplespatial.h:257
@ CurveM
Definition hydrocouplespatial.h:260
@ GeometryZ
Definition hydrocouplespatial.h:227
@ CircularString
Definition hydrocouplespatial.h:217
@ TINZM
Definition hydrocouplespatial.h:282
@ PointZ
Definition hydrocouplespatial.h:228
@ TriangleZM
Definition hydrocouplespatial.h:269
@ MultiLineStringZ
Definition hydrocouplespatial.h:233
@ GeometryCollection
Definition hydrocouplespatial.h:216
@ PolyhedralSurfaceZM
Definition hydrocouplespatial.h:281
@ Surface
Definition hydrocouplespatial.h:223
@ MultiPolygonZ
Definition hydrocouplespatial.h:234
@ CurvePolygonZ
Definition hydrocouplespatial.h:238
@ MultiCurve
Definition hydrocouplespatial.h:220
@ CompoundCurveZ
Definition hydrocouplespatial.h:237
@ MultiCurveZ
Definition hydrocouplespatial.h:239
@ MultiCurveM
Definition hydrocouplespatial.h:258
@ PolyhedralSurfaceZ
Definition hydrocouplespatial.h:243
@ CircularStringM
Definition hydrocouplespatial.h:255
@ GeometryM
Definition hydrocouplespatial.h:246
@ CurvePolygon
Definition hydrocouplespatial.h:219
@ Geometry
Definition hydrocouplespatial.h:208
@ TINM
Definition hydrocouplespatial.h:263
@ PointZM
Definition hydrocouplespatial.h:266
@ TriangleM
Definition hydrocouplespatial.h:250
@ CircularStringZ
Definition hydrocouplespatial.h:236
@ LineStringZ
Definition hydrocouplespatial.h:229
@ PolyhedralSurface
Definition hydrocouplespatial.h:224
@ MultiSurface
Definition hydrocouplespatial.h:221
@ PolygonZ
Definition hydrocouplespatial.h:230
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 const std::string & id() const =0
id of the geometry.
virtual bool contains(const IGeometry &geom) const =0
virtual IGeometry * convexHull() const =0
virtual std::string getWKT() const =0
Exports this geometric object to a specific Well-known Text Representation of Geometry.
virtual GeometryType geometryType() const =0
Gets the geometry type of 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:775
virtual ~ILine()=default
ILine destructor.
An ILineString is a Curve with linear interpolation between Points. Each consecutive pair of Points d...
Definition hydrocouplespatial.h:738
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:787
virtual ~ILinearRing()=default
ILinearRing destructor.
IMeshView is a bulk, structure-of-arrays view of an unstructured mesh or network: flat coordinate spa...
Definition hydrocouplespatial.h:1593
virtual std::span< const double > nodeZ() const =0
z coordinates of all nodes; the span has nodeCount() elements, or is empty for a 2D mesh.
virtual int64_t nodeCount() const =0
The number of nodes (vertices) in the mesh.
virtual ~IMeshView()=default
IMeshView destructor.
virtual int64_t edgeCount() const =0
The number of edges in the mesh.
virtual std::span< const int64_t > faceNodes() const =0
Concatenated node indexes of all faces, ordered counter-clockwise per face.
virtual std::span< const int64_t > faceNodeOffsets() const =0
CSR row offsets into faceNodes(): the nodes of face f are faceNodes()[faceNodeOffsets()[f] ....
virtual std::span< const double > nodeY() const =0
y coordinates of all nodes; the span has nodeCount() elements.
virtual std::span< const int64_t > edgeNodes() const =0
Node index pairs of all edges: edge e connects edgeNodes()[2*e] and edgeNodes()[2*e + 1].
virtual std::span< const double > nodeX() const =0
x coordinates of all nodes; the span has nodeCount() elements.
virtual int64_t faceCount() const =0
The number of faces (patches/cells) in the mesh; 0 for a pure network.
An IMultiCurve is a 1-dimensional IGeometryCollection whose elements are ICurves.
Definition hydrocouplespatial.h:716
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:760
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:596
virtual IPoint * point(int index) const =0
virtual ~IMultiPoint()=default
IMultiPoint destructor.
An IMultiPolygon is an IMultiSurface whose elements are IPolygons.
Definition hydrocouplespatial.h:1088
virtual IPolygon * polygon(int index) const =0
A MultiSurface is a 2-dimensional GeometryCollection whose elements are Surfaces, all using coordinat...
Definition hydrocouplespatial.h:984
virtual IPoint * pointOnSurface() const =0
A Point guaranteed to be on this ISurface.
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 ...
INetworkComponentDataItem is an IComponentDataItem whose data is associated with the edges and/or ver...
Definition hydrocouplespatial.h:1700
virtual NetworkDataObjectType networkDataObjectType() const =0
The kind of network object this data item's values describe.
virtual SpatialDataType networkDataType() const =0
The mesh entity (edge or vertex) this data item's values are attached to.
virtual IDimension * vertexDimension() const =0
The IDimension of the network vertices.
virtual IDimension * edgeDimension() const =0
The IDimension of the network edges.
virtual ~INetworkComponentDataItem()=default
INetworkComponentDataItem destructor.
virtual INetwork * network() const =0
The INetwork this data item is associated with.
INetwork represents a graph structure of connected vertices and edges.
Definition hydrocouplespatial.h:1136
virtual int64_t edgeCount() const =0
The number of edges in the network.
virtual IEdge * edge(int64_t index) const =0
The IEdge at the specified index.
virtual int64_t vertexCount() const =0
The number of vertices in the network.
virtual IVertex * vertex(int64_t index) const =0
The IVertex at the specified index.
virtual ~INetwork()=default
INetwork destructor.
virtual const IMeshView * meshView() const =0
Bulk structure-of-arrays view of this network's geometry and connectivity.
An IPoint is a 0-dimensional geometric object and represents a single location in coordinate space.
Definition hydrocouplespatial.h:554
virtual double m() const =0
The m-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 z-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:1048
virtual IPolyhedralSurface * polyhedralSurface() const =0
Gets the polyhedral surface this polygon belongs to.
virtual int interiorRingCount() const =0
virtual ILineString * interiorRing(int index) const =0
virtual ~IPolygon()=default
IPolygon destructor.
virtual ILineString * exteriorRing() const =0
virtual IEdge * edge() const =0
An arbitrary adjacent edge for this IPolygon.
IPolyhedralSurfaceComponentDataItem is an IComponentDataItem whose data is associated with the patche...
Definition hydrocouplespatial.h:1742
virtual IPolyhedralSurface * polyhedralSurface() const =0
The IPolyhedralSurface this data item is associated with.
virtual IDimension * vertexDimension() const =0
The IDimension of the surface vertices.
virtual IDimension * patchDimension() const =0
The IDimension of the surface patches.
virtual IDimension * edgeDimension() const =0
The IDimension of the surface edges.
virtual ~IPolyhedralSurfaceComponentDataItem()=default
IPolyhedralSurfaceComponentDataItem destructor.
virtual MeshDataObjectType meshDataObjectType() const =0
The kind of mesh object this data item's values describe.
virtual SpatialDataType meshDataType() const =0
The mesh entity (patch, edge, or vertex) this data item's values are attached to.
An IPolyhedralSurface is a contiguous collection of polygon patches or facets stitched together along...
Definition hydrocouplespatial.h:1182
virtual ~IPolyhedralSurface()=default
IPolyhedralSurface destructor.
virtual int64_t patchCount() const =0
The number of polygon patches in this surface.
virtual IMultiPolygon * boundingPolygons(const IPolygon *polygon) const =0
The collection of polygons in this surface that bound the given polygon.
virtual IPolygon * patch(int64_t index) const =0
The IPolygon patch at the specified index.
virtual IVertex * vertex(int64_t index) const =0
The IVertex at the specified index.
virtual const IMeshView * meshView() const =0
Bulk structure-of-arrays view of this surface's geometry and connectivity.
virtual int64_t vertexCount() const =0
The number of vertices in this surface.
virtual bool isClosed() const =0
Checks whether this surface is closed and therefore bounds a solid.
IRasterBand is a single raster band for an IRaster.
Definition hydrocouplespatial.h:1343
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.
IRasterComponentDataItem is an IComponentDataItem whose data is associated with an IRaster.
Definition hydrocouplespatial.h:1806
virtual ~IRasterComponentDataItem()=default
IRasterComponentDataItem destructor.
virtual IDimension * yDimension() const =0
The IDimension of the raster rows (dimension 1 of shape()).
virtual IDimension * xDimension() const =0
The IDimension of the raster columns (dimension 2 of shape()).
virtual IRaster * raster() const =0
The IRaster this data item is associated with.
virtual IDimension * bandDimension() const =0
The IDimension of the raster bands (dimension 0 of shape()).
A Raster spatial feature.
Definition hydrocouplespatial.h:1255
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 this raster.
virtual void addRasterBand(RasterDataType dataType)=0
Adds a new IRasterBand.
RasterDataType
The data type associated with a raster.
Definition hydrocouplespatial.h:1262
@ CInt32
Complex Int32.
Definition hydrocouplespatial.h:1282
@ Float32
Thirty two bit floating point.
Definition hydrocouplespatial.h:1276
@ CFloat64
Complex Float64.
Definition hydrocouplespatial.h:1286
@ Int16
Sixteen bit signed integer.
Definition hydrocouplespatial.h:1270
@ ARGB32_Premultiplied
Color, alpha, red, green, blue, 4 bytes the same as QImage::Format_ARGB32_Premultiplied.
Definition hydrocouplespatial.h:1290
@ Unknown
Unknown or unspecified type.
Definition hydrocouplespatial.h:1264
@ UInt16
Sixteen bit unsigned integer.
Definition hydrocouplespatial.h:1268
@ Byte
Eight bit unsigned integer.
Definition hydrocouplespatial.h:1266
@ ARGB32
Color, alpha, red, green, blue, 4 bytes the same as QImage::Format_ARGB32.
Definition hydrocouplespatial.h:1288
@ Int32
Thirty two bit signed integer.
Definition hydrocouplespatial.h:1274
@ Float64
Sixty four bit floating point.
Definition hydrocouplespatial.h:1278
@ CFloat32
Complex Float32.
Definition hydrocouplespatial.h:1284
@ CInt16
Complex Int16.
Definition hydrocouplespatial.h:1280
@ UInt32
Thirty two bit unsigned integer.
Definition hydrocouplespatial.h:1272
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.
IRegularGrid2DComponentDataItem is an IComponentDataItem whose data is associated with the cells of a...
Definition hydrocouplespatial.h:1843
virtual IDimension * cellEdgeDimension() const =0
The IDimension of the edges of a cell, when values are attached to cell edges.
virtual ~IRegularGrid2DComponentDataItem()=default
IRegularGrid2DComponentDataItem destructor.
virtual IDimension * yCellDimension() const =0
The IDimension of the cells in the y direction (dimension 0 of shape()).
virtual IRegularGrid2D * grid() const =0
The IRegularGrid2D this data item is associated with.
virtual IDimension * cellVertexDimension() const =0
The IDimension of the vertices of a cell, when values are attached to cell vertices.
virtual MeshDataObjectType meshDataObjectType() const =0
The kind of mesh object this data item's values describe.
virtual IDimension * xCellDimension() const =0
The IDimension of the cells in the x direction (dimension 1 of shape()).
IRegularGrid2D represents a two-dimensional structured grid of nodes and cells.
Definition hydrocouplespatial.h:1394
virtual std::span< const double > nodeXs() const =0
Bulk x coordinates of all nodes, row-major [yNode][xNode].
virtual ISpatialReferenceSystem * spatialReferenceSystem() const =0
The ISpatialReferenceSystem represents the spatial reference system of this geometric object.
virtual ~IRegularGrid2D()=default
IRegularGrid2D destructor.
virtual RegularGridType gridType() const =0
Gets the type of regular grid.
virtual std::span< const double > nodeYs() const =0
Bulk y coordinates of all nodes, row-major [yNode][xNode].
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 std::span< const uint8_t > activeCells() const =0
Bulk activity mask of all cells, row-major [yCell][xCell]; nonzero means active.
virtual double yNodeLocation(int xNodeIndex, int yNodeIndex) const =0
yNodeLocation provides the y 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.
IRegularGrid3DComponentDataItem is an IComponentDataItem whose data is associated with the cells of a...
Definition hydrocouplespatial.h:1890
virtual IRegularGrid3D * grid() const =0
The IRegularGrid3D this data item is associated with.
virtual IDimension * zCellDimension() const =0
The IDimension of the cells in the z direction (dimension 0 of shape()).
virtual IDimension * cellFaceDimension() const =0
The IDimension of the faces of a cell, when values are attached to cell faces.
virtual ~IRegularGrid3DComponentDataItem()=default
IRegularGrid3DComponentDataItem destructor.
virtual IDimension * yCellDimension() const =0
The IDimension of the cells in the y direction (dimension 1 of shape()).
virtual IDimension * xCellDimension() const =0
The IDimension of the cells in the x direction (dimension 2 of shape()).
virtual MeshDataObjectType meshDataObjectType() const =0
The kind of mesh object this data item's values describe.
virtual IDimension * cellVertexDimension() const =0
The IDimension of the vertices of a cell, when values are attached to cell vertices.
IRegularGrid3D represents a three-dimensional structured grid of nodes and cells.
Definition hydrocouplespatial.h:1478
virtual std::span< const double > nodeYs() const =0
Bulk y coordinates of all nodes in a horizontal layer, row-major [yNode][xNode].
virtual double yNodeLocation(int xNodeIndex, int yNodeIndex) const =0
yNodeLocation provides the y location coordinate for the x-node and y-node indexes.
virtual ISpatialReferenceSystem * spatialReferenceSystem() const =0
The ISpatialReferenceSystem represents the spatial reference system of this grid.
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 std::span< const double > nodeZs() const =0
Bulk z coordinates of all nodes, row-major [zNode][yNode][xNode].
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 std::span< const uint8_t > activeCells() const =0
Bulk activity mask of all cells, row-major [zCell][yCell][xCell]; nonzero means active.
virtual RegularGridType gridType() const =0
Gets the type of regular grid.
virtual ~IRegularGrid3D()=default
IRegularGrid3D destructor.
virtual int numYNodes() const =0
numYNodes represents the number of nodes in the y direction.
virtual std::span< const double > nodeXs() const =0
Bulk x coordinates of all nodes in a horizontal layer, row-major [yNode][xNode].
ISpatialReferenceSystem describes the coordinate reference system for spatial geometric objects.
Definition hydrocouplespatial.h:118
virtual ~ISpatialReferenceSystem()=default
ISpatialReferenceSystem destructor.
virtual int authSRID() const =0
Returns the Spatial Reference System ID (SRID) for a geometric object. This will normally be a foreig...
virtual const std::string & srText() const =0
virtual HydroCouple::IUnit::DistanceUnits distanceUnits() const =0
The measurement distance units for the Spatial Reference System.
virtual const std::string & authName() const =0
The Authority Specific Spatial Reference System Identifier.
A ISurface is a 2-dimensional IGeometry object.
Definition hydrocouplespatial.h:948
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
Gets the boundary of this surface as a multi-curve.
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 is an IPolyhedralSurfaceComponentDataItem whose surface is an ITIN.
Definition hydrocouplespatial.h:1785
virtual ~ITINComponentDataItem()=default
ITINComponentDataItem destructor.
virtual ITIN * TIN() const =0
The ITIN this data item is associated with.
An ITIN is a triangulated irregular network IPolyhedralSurface consisting only of ITriangle patches.
Definition hydrocouplespatial.h:1237
virtual ~ITIN()=default
ITIN destructor.
virtual ITriangle * triangle(int64_t index) const =0
The ITriangle patch at the specified index.
An ITriangle is a IPolygon with 3 distinct, non-collinear vertices and no interior boundary.
Definition hydrocouplespatial.h:1104
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:614
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
Core interface definitions for the HydroCouple component-based modeling framework.
HydroCouple's interfaces that have a spatial component.
Definition hydrocouplespatial.h:33
SpatialDataType
SpatialDataType describes the type of spatial data (applicable to meshes, networks,...
Definition hydrocouplespatial.h:89
@ Vector
Vector values.
Definition hydrocouplespatial.h:95
@ Tensor
Tensor values.
Definition hydrocouplespatial.h:97
@ Scalar
Single scalar value.
Definition hydrocouplespatial.h:91
@ MultiScalar
Multiple scalar values.
Definition hydrocouplespatial.h:93
RegularGridType
The types of regular grids.
Definition hydrocouplespatial.h:104
@ Curvilinear
Curvilinear grid.
Definition hydrocouplespatial.h:110
@ Cartesian
Cartesian grid.
Definition hydrocouplespatial.h:106
@ Rectilinear
Rectilinear grid.
Definition hydrocouplespatial.h:108
MeshDataObjectType
The MeshDataObjectType enum describes the part of the geometry of the mesh that data corresponds to.
Definition hydrocouplespatial.h:45
@ Cell
The data corresponds to mesh cell.
Definition hydrocouplespatial.h:50
@ Face
The data corresponds to the faces of the mesh.
Definition hydrocouplespatial.h:65
@ Vertex
The data corresponds to the vertex of mesh edge vertex.
Definition hydrocouplespatial.h:55
@ Edge
The data corresponds to the edges of the mesh.
Definition hydrocouplespatial.h:60
NetworkDataObjectType
The types of data available in a network.
Definition hydrocouplespatial.h:72
@ Node
The data corresponds to the nodes of the network.
Definition hydrocouplespatial.h:76
HydroCouple namespace contains the core interface specifications for the HydroCouple component-based ...
Definition hydrocouple.h:58