21#ifndef HYDROCOUPLESPATIAL_H
22#define HYDROCOUPLESPATIAL_H
136 [[nodiscard]]
virtual const std::string &
authName()
const = 0;
141 [[nodiscard]]
virtual const std::string &
srText()
const = 0;
164 [[nodiscard]]
virtual double minX()
const = 0;
170 [[nodiscard]]
virtual double maxX()
const = 0;
176 [[nodiscard]]
virtual double minY()
const = 0;
182 [[nodiscard]]
virtual double maxY()
const = 0;
188 [[nodiscard]]
virtual double minZ()
const = 0;
194 [[nodiscard]]
virtual double maxZ()
const = 0;
294 [[nodiscard]]
virtual const std::string &
id()
const = 0;
300 [[nodiscard]]
virtual unsigned int index()
const = 0;
341 [[nodiscard]]
virtual std::string
getWKT()
const = 0;
346 [[nodiscard]]
virtual std::vector<unsigned char>
getWKB()
const = 0;
352 [[nodiscard]]
virtual bool isEmpty()
const = 0;
366 [[nodiscard]]
virtual bool is3D()
const = 0;
564 [[nodiscard]]
virtual double x()
const = 0;
569 [[nodiscard]]
virtual double y()
const = 0;
574 [[nodiscard]]
virtual double z()
const = 0;
579 [[nodiscard]]
virtual double m()
const = 0;
625 [[nodiscard]]
virtual unsigned int index()
const = 0;
670 [[nodiscard]]
virtual double length()
const = 0;
691 [[nodiscard]]
virtual bool isRing()
const = 0;
730 [[nodiscard]]
virtual double length()
const = 0;
813 [[nodiscard]]
virtual unsigned int index()
const = 0;
959 [[nodiscard]]
virtual double area()
const = 0;
996 [[nodiscard]]
virtual double area()
const = 0;
1301 [[nodiscard]]
virtual int xSize()
const = 0;
1306 [[nodiscard]]
virtual int ySize()
const = 0;
1352 [[nodiscard]]
virtual int xSize()
const = 0;
1355 [[nodiscard]]
virtual int ySize()
const = 0;
1371 virtual void read(
int xOffset,
int yOffset,
int xSize,
int ySize,
void *image)
const = 0;
1381 virtual void write(
int xOffset,
int yOffset,
int xSize,
int ySize,
const void *image) = 0;
1386 [[nodiscard]]
virtual double noData()
const = 0;
1431 [[nodiscard]]
virtual double xNodeLocation(
int xNodeIndex,
int yNodeIndex)
const = 0;
1440 [[nodiscard]]
virtual double yNodeLocation(
int xNodeIndex,
int yNodeIndex)
const = 0;
1447 [[nodiscard]]
virtual std::span<const double>
nodeXs()
const = 0;
1454 [[nodiscard]]
virtual std::span<const double>
nodeYs()
const = 0;
1463 [[nodiscard]]
virtual bool isActive(
int xCellIndex,
int yCellIndex)
const = 0;
1470 [[nodiscard]]
virtual std::span<const uint8_t>
activeCells()
const = 0;
1521 [[nodiscard]]
virtual double xNodeLocation(
int xNodeIndex,
int yNodeIndex)
const = 0;
1530 [[nodiscard]]
virtual double yNodeLocation(
int xNodeIndex,
int yNodeIndex)
const = 0;
1540 [[nodiscard]]
virtual double zNodeLocation(
int xNodeIndex,
int yNodeIndex,
int zNodeIndex)
const = 0;
1547 [[nodiscard]]
virtual std::span<const double>
nodeXs()
const = 0;
1554 [[nodiscard]]
virtual std::span<const double>
nodeYs()
const = 0;
1561 [[nodiscard]]
virtual std::span<const double>
nodeZs()
const = 0;
1571 [[nodiscard]]
virtual bool isActive(
int xCellIndex,
int yCellIndex,
int zCellIndex)
const = 0;
1578 [[nodiscard]]
virtual std::span<const uint8_t>
activeCells()
const = 0;
1618 [[nodiscard]]
virtual std::span<const double>
nodeX()
const = 0;
1623 [[nodiscard]]
virtual std::span<const double>
nodeY()
const = 0;
1628 [[nodiscard]]
virtual std::span<const double>
nodeZ()
const = 0;
1640 [[nodiscard]]
virtual std::span<const int64_t>
faceNodes()
const = 0;
1646 [[nodiscard]]
virtual std::span<const int64_t>
edgeNodes()
const = 0;
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 ~IMultiCurve()=default
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
virtual ~IMultiPolygon()=default
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