22#ifndef HYDROCOUPLESPATIAL_H
23#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;
1318 [[nodiscard]]
virtual int xSize()
const = 0;
1323 [[nodiscard]]
virtual int ySize()
const = 0;
1369 [[nodiscard]]
virtual int xSize()
const = 0;
1372 [[nodiscard]]
virtual int ySize()
const = 0;
1388 virtual void read(
int xOffset,
int yOffset,
int xSize,
int ySize,
void *image)
const = 0;
1398 virtual void write(
int xOffset,
int yOffset,
int xSize,
int ySize,
const void *image) = 0;
1403 [[nodiscard]]
virtual double noData()
const = 0;
1447 [[nodiscard]]
virtual double xNodeLocation(
int xNodeIndex,
int yNodeIndex)
const = 0;
1455 [[nodiscard]]
virtual double yNodeLocation(
int xNodeIndex,
int yNodeIndex)
const = 0;
1463 [[nodiscard]]
virtual bool isActive(
int xCellIndex,
int yCellIndex)
const = 0;
1513 [[nodiscard]]
virtual double xNodeLocation(
int xNodeIndex,
int yNodeIndex)
const = 0;
1521 [[nodiscard]]
virtual double yNodeLocation(
int xNodeIndex,
int yNodeIndex)
const = 0;
1530 [[nodiscard]]
virtual double zNodeLocation(
int xNodeIndex,
int yNodeIndex,
int zNodeIndex)
const = 0;
1539 [[nodiscard]]
virtual bool isActive(
int xCellIndex,
int yCellIndex,
int zCellIndex)
const = 0;
1599 int geometryDimensionIndex,
1600 std::span<const int>dimensionIndexes = {})
const = 0;
1613 int geometryDimensionIndex,
1614 std::span<const int>dimensionIndexes = {},
1615 int geometryDimensionLength = 1,
1626 int geometryDimensionIndex,
1627 std::span<const int>dimensionIndexes = {}) = 0;
1640 int geometryDimensionIndex,
1641 std::span<const int>dimensionIndexes = {},
1642 int geometryDimensionLength = 1,
1643 std::span<const int>dimensionLengths = {}) = 0;
1703 int edgeDimensionIndex,
1704 int vertexDimensionIndex,
1705 std::span<const int>dimensionIndexes = {})
const = 0;
1720 int edgeDimensionIndex,
1721 int vertexDimensionIndex,
1722 std::span<const int>dimensionIndexes = {},
1723 int edgeDimensionIndexLength = 1,
1724 int vertexDimensionIndexLength = 1,
1725 std::span<const int>dimensionLengths = {})
const = 0;
1736 int edgeDimensionIndex,
1737 int vertexDimensionIndex,
1738 std::span<const int>dimensionIndexes = {}) = 0;
1753 int edgeDimensionIndex,
1754 int vertexDimensionIndex,
1755 std::span<const int>dimensionIndexes = {},
1756 int edgeDimensionIndexLength = 1,
1757 int vertexDimensionIndexLength = 1,
1758 std::span<const int>dimensionLengths = {}) = 0;
1824 int patchDimensionIndex,
1825 int edgeDimensionIndex,
1826 int vertexDimensionIndex,
1827 std::span<const int>dimensionIndexes = {})
const = 0;
1848 int patchDimensionIndex,
1849 int edgeDimensionIndex,
1850 int vertexDimensionIndex,
1851 std::span<const int>dimensionIndexes = {},
1852 int patchDimensionIndexLength = 1,
1853 int edgeDimensionIndexLength = 1,
1854 int vertexDimensionIndexLength = 1,
1855 std::span<const int>dimensionLengths = {})
const = 0;
1868 int patchDimensionIndex,
1869 int edgeDimensionIndex,
1870 int vertexDimensionIndex,
1871 std::span<const int>dimensionIndexes = {}) = 0;
1888 int patchDimensionIndex,
1889 int edgeDimensionIndex,
1890 int vertexDimensionIndex,
1891 std::span<const int>dimensionIndexes = {},
1892 int patchDimensionIndexLength = 1,
1893 int edgeDimensionIndexLength = 1,
1894 int vertexDimensionIndexLength = 1,
1895 std::span<const int>dimensionLengths = {}) = 0;
1979 std::span<const int>dimensionIndexes = {})
const = 0;
1999 std::span<const int>dimensionIndexes = {},
2000 int xIndexLength = 1,
2001 int yIndexLength = 1,
2002 int bandIndexLength = 1,
2003 std::span<const int>dimensionLengths = {})
const = 0;
2019 std::span<const int>dimensionIndexes = {}) = 0;
2039 std::span<const int>dimensionIndexes = {},
2040 int xIndexLength = 1,
2041 int yIndexLength = 1,
2042 int bandIndexLength = 1,
2043 std::span<const int>dimensionLengths = {}) = 0;
2115 int cellVertexIndex,
2116 std::span<const int>dimensionIndexes = {})
const = 0;
2138 int cellVertexIndex,
2139 std::span<const int>dimensionIndexes = {},
2140 int xCellIndexLength = 1,
2141 int yCellIndexLength = 1,
2142 int cellEdgeIndexLength = 1,
2143 int cellVertexIndexLength = 1,
2144 std::span<const int>dimensionLengths = {})
const = 0;
2161 int cellVertexIndex,
2162 std::span<const int>dimensionIndexes = {}) = 0;
2184 int cellVertexIndex,
2185 std::span<const int>dimensionIndexes = {},
2186 int xCellIndexLength = 1,
2187 int yCellIndexLength = 1,
2188 int cellEdgeIndexLength = 1,
2189 int cellVertexIndexLength = 1,
2190 std::span<const int>dimensionLengths = {}) = 0;
2266 int cellVertexIndex,
2267 std::span<const int>dimensionIndexes = {})
const = 0;
2292 int cellVertexIndex,
2293 std::span<const int>dimensionIndexes = {},
2294 int xCellIndexLength = 1,
2295 int yCellIndexLength = 1,
2296 int zCellIndexLength = 1,
2297 int cellFaceIndexLength = 1,
2298 int cellVertexIndexLength = 1,
2299 std::span<const int>dimensionLengths = {})
const = 0;
2318 int cellVertexIndex,
2319 std::span<const int>dimensionIndexes = {}) = 0;
2344 int cellVertexIndex,
2345 std::span<const int>dimensionIndexes = {},
2346 int xCellIndexLength = 1,
2347 int yCellIndexLength = 1,
2348 int zCellIndexLength = 1,
2349 int cellFaceIndexLength = 1,
2350 int cellVertexIndexLength = 1,
2351 std::span<const int>dimensionLengths = {}) = 0;
IComponentDataItem is a fundamental unit of data for a component.
Definition hydrocouple.h:1347
virtual void setValues(const hydrocouple_variant *data, std::span< const int >dimensionIndexes, std::span< const int >dimensionLengths={})=0
Sets a multi-dimensional array of values for given dimension indexes and strides along each dimension...
virtual void getValue(hydrocouple_variant &data, std::span< const int >dimensionIndexes) const =0
Gets a multi-dimensional array of values for given dimension indexes and strides along each dimension...
virtual void setValue(const hydrocouple_variant &data, std::span< const int >dimensionIndexes)=0
Sets a multi-dimensional array of values for given dimension indexes.
virtual void getValues(hydrocouple_variant *data, std::span< const int >dimensionIndexes, std::span< const int >dimensionLengths={}) const =0
Gets a multi-dimensional array of values for given dimension indexes and strides along each dimension...
virtual int dimensionLength(std::span< const 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:981
IIdentity interface class defines a method to get the Id of an HydroCouple entity.
Definition hydrocouple.h:261
DistanceUnits
HydroCouple::DistanceUnits are the types of units that can be used to measure distance.
Definition hydrocouple.h:1157
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:1547
virtual void setValues(const hydrocouple_variant *data, int geometryDimensionIndex, std::span< const int >dimensionIndexes={}, int geometryDimensionLength=1, std::span< const int >dimensionLengths={})=0
Sets a multi-dimensional array of values for given geometry dimension index and size for a hyperslab.
virtual IGeometry::GeometryType geometryType() const =0
Gets the geometry type for this component data item.
virtual HydroCouple::IDimension * geometryDimension() const =0
virtual void getValue(hydrocouple_variant &data, int geometryDimensionIndex, std::span< const int >dimensionIndexes={}) const =0
Gets value for given geometry dimension index.
virtual void setValue(const hydrocouple_variant &data, int geometryDimensionIndex, std::span< const int >dimensionIndexes={})=0
Sets value for given geometry dimension index.
virtual HydroCouple::Spatial::IEnvelope * envelope() const =0
Gets the bounding envelope for all geometries in this component data item.
virtual void getValues(hydrocouple_variant *data, int geometryDimensionIndex, std::span< const int >dimensionIndexes={}, int geometryDimensionLength=1, std::span< const 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
Gets the number of geometries in this component data item.
virtual IGeometry * geometry(int geometryIndex) const =0
Gets the geometry at the specified index.
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
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.
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 an INetwork of edges...
Definition hydrocouplespatial.h:1651
virtual void getValues(hydrocouple_variant *data, int edgeDimensionIndex, int vertexDimensionIndex, std::span< const int >dimensionIndexes={}, int edgeDimensionIndexLength=1, int vertexDimensionIndexLength=1, std::span< const int >dimensionLengths={}) const =0
getValues for given edge dimension index and node dimension index and size for a hyperslab.
virtual void getValue(hydrocouple_variant &data, int edgeDimensionIndex, int vertexDimensionIndex, std::span< const int >dimensionIndexes={}) const =0
getValue for given edge dimension index and node dimension index.
virtual NetworkDataObjectType networkDataObjectType() const =0
Gets the type of network data object associated with the data.
virtual SpatialDataType networkDataType() const =0
Gets the type of network data stored.
virtual void setValue(const hydrocouple_variant &data, int edgeDimensionIndex, int vertexDimensionIndex, std::span< const int >dimensionIndexes={})=0
setValue for given edge dimension index and node dimension index and data.
virtual IDimension * vertexDimension() const =0
nodeDimension represents the dimension for the vertices.
virtual IDimension * edgeDimension() const =0
edgeDimension represents the dimension for the edges.
virtual ~INetworkComponentDataItem()=default
INetworkComponentDataItem destructor.
virtual INetwork * network() const =0
network associated with this INetworkComponentDataItem.
virtual void setValues(const hydrocouple_variant *data, int edgeDimensionIndex, int vertexDimensionIndex, std::span< const int >dimensionIndexes={}, int edgeDimensionIndexLength=1, int vertexDimensionIndexLength=1, std::span< const int >dimensionLengths={})=0
setValues for given edge dimension index and node dimension index and size for a hyperslab.
INetwork represents a graph structure of connected vertices and edges.
Definition hydrocouplespatial.h:1136
virtual int edgeCount() const =0
edgeCount represents the number of all the edges in the network.
virtual int vertexCount() const =0
Gets the number of vertices in the network.
virtual ~INetwork()=default
INetwork destructor.
virtual IVertex * vertex(int index) const =0
Gets the vertex at the specified index in the network.
virtual IEdge * edge(int index) const =0
Gets the edge at the specified index in the network.
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 an IPolyhe...
Definition hydrocouplespatial.h:1766
virtual void getValues(hydrocouple_variant *data, int patchDimensionIndex, int edgeDimensionIndex, int vertexDimensionIndex, std::span< const int >dimensionIndexes={}, int patchDimensionIndexLength=1, int edgeDimensionIndexLength=1, int vertexDimensionIndexLength=1, std::span< const int >dimensionLengths={}) const =0
getValues for given cell dimension index, edge dimension index and node dimension index and size for ...
virtual void setValue(const hydrocouple_variant &data, int patchDimensionIndex, int edgeDimensionIndex, int vertexDimensionIndex, std::span< const int >dimensionIndexes={})=0
setValues for given cell dimension index, edge dimension index, and node dimension index.
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 void setValues(const hydrocouple_variant *data, int patchDimensionIndex, int edgeDimensionIndex, int vertexDimensionIndex, std::span< const int >dimensionIndexes={}, int patchDimensionIndexLength=1, int edgeDimensionIndexLength=1, int vertexDimensionIndexLength=1, std::span< const int >dimensionLengths={})=0
setValues for given cell dimension index, edge dimension index, and node dimension index and size for...
virtual IDimension * edgeDimension() const =0
edgeDimension represents the dimension for the edges of patches associated with the IPolyhedralSurfac...
virtual ~IPolyhedralSurfaceComponentDataItem()=default
IPolyhedralSurfaceComponentDataItem destructor.
virtual void getValue(hydrocouple_variant &data, int patchDimensionIndex, int edgeDimensionIndex, int vertexDimensionIndex, std::span< const int >dimensionIndexes={}) const =0
getValue for given cell dimension index, edge dimension index, and node dimension index.
virtual MeshDataObjectType meshDataObjectType() const =0
Gets the type of mesh data object associated with this component data item.
virtual SpatialDataType meshDataType() const =0
Gets the type of mesh data stored.
An IPolyhedralSurface is a contiguous collection of polygons, which share common boundary segments.
Definition hydrocouplespatial.h:1205
virtual int vertexCount() const =0
Gets the number of 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.
virtual bool isClosed() const =0
IRasterBand is a single raster band for an IRaster.
Definition hydrocouplespatial.h:1360
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 of pixel b...
Definition hydrocouplespatial.h:1932
virtual void setValues(const hydrocouple_variant *data, int xIndex, int yIndex, int bandIndex, std::span< const int >dimensionIndexes={}, int xIndexLength=1, int yIndexLength=1, int bandIndexLength=1, std::span< const int >dimensionLengths={})=0
Sets a multi-dimensional array of values for given dimension for a hyperslab.
virtual ~IRasterComponentDataItem()=default
IRasterComponentDataItem destructor.
virtual void getValue(hydrocouple_variant &data, int xIndex, int yIndex, int bandIndex, std::span< const int >dimensionIndexes={}) const =0
getValue for given x dimension index, y dimension index, and band dimension index.
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, std::span< const int >dimensionIndexes={}, int xIndexLength=1, int yIndexLength=1, int bandIndexLength=1, std::span< const int >dimensionLengths={}) const =0
Gets a multi-dimensional array of values for given dimension for a hyperslab.
virtual void setValue(const hydrocouple_variant &data, int xIndex, int yIndex, int band, std::span< const int >dimensionIndexes={})=0
setValue for given x dimension index, y dimension index, and band dimension index.
A Raster spatial feature.
Definition hydrocouplespatial.h:1272
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:1279
@ Float32
Thirty two bit floating point.
@ CFloat64
Complex Float64.
@ Int16
Sixteen bit signed integer.
@ ARGB32_Premultiplied
Color, alpha, red, green, blue, 4 bytes the same as QImage::Format_ARGB32_Premultiplied.
@ Unknown
Unknown or unspecified type.
@ UInt16
Sixteen bit unsigned integer.
@ Byte
Eight bit unsigned integer.
@ ARGB32
Color, alpha, red, green, blue, 4 bytes the same as QImage::Format_ARGB32.
@ Int32
Thirty two bit signed integer.
@ Float64
Sixty four bit floating point.
@ CFloat32
Complex Float32.
@ UInt32
Thirty two bit unsigned integer.
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 an IRegularGri...
Definition hydrocouplespatial.h:2051
virtual IDimension * cellEdgeDimension() const =0
cellEdgeDimension. Edge indices start from the bottom and go in a counter clockwise order.
virtual void setValue(const hydrocouple_variant &data, int xCellIndex, int yCellIndex, int cellEdgeIndex, int cellVertexIndex, std::span< const int >dimensionIndexes={})=0
setValue for given x cell index, y cell index, edge index, and node index.
virtual ~IRegularGrid2DComponentDataItem()=default
IRegularGrid2DComponentDataItem destructor.
virtual IDimension * yCellDimension() const =0
Number of Y cells IDimension.
virtual IRegularGrid2D * grid() const =0
IRegularGrid2D grid associated with this IRegularGrid2DComponentItem.
virtual void getValues(hydrocouple_variant *data, int xCellIndex, int yCellIndex, int cellEdgeIndex, int cellVertexIndex, std::span< const int >dimensionIndexes={}, int xCellIndexLength=1, int yCellIndexLength=1, int cellEdgeIndexLength=1, int cellVertexIndexLength=1, std::span< const int >dimensionLengths={}) const =0
getValues for given x cell index, y cell index, edge index, and node index and size for a hyperslab.
virtual IDimension * cellVertexDimension() const =0
cellVertexDimension. Vertex 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 cellEdgeIndex, int cellVertexIndex, std::span< const int >dimensionIndexes={}, int xCellIndexLength=1, int yCellIndexLength=1, int cellEdgeIndexLength=1, int cellVertexIndexLength=1, std::span< const int >dimensionLengths={})=0
setValues for given x cell index, y cell index, edge index, and node index and size for a hyperslab.
virtual void getValue(hydrocouple_variant &data, int xCellIndex, int yCellIndex, int cellEdgeIndex, int cellVertexIndex, std::span< const int >dimensionIndexes={}) const =0
getValue for given x cell index, y cell index, edge index, and node index.
virtual MeshDataObjectType meshDataObjectType() const =0
Gets the type of mesh data object stored in the grid.
virtual IDimension * xCellDimension() const =0
Number of X cells IDimension.
IRegularGrid2D represents a two-dimensional structured grid of nodes and cells.
Definition hydrocouplespatial.h:1411
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 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 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 an IRegularGri...
Definition hydrocouplespatial.h:2198
virtual IRegularGrid3D * grid() const =0
IRegularGrid3D grid associated with this IRegularGrid3DComponentItem.
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
IRegularGrid3DComponentDataItem destructor.
virtual IDimension * yCellDimension() const =0
Number of Y cells IDimension.
virtual IDimension * xCellDimension() const =0
Number of X cells IDimension.
virtual MeshDataObjectType meshDataObjectType() const =0
Gets the type of mesh data object stored in the grid.
virtual void setValues(const hydrocouple_variant *data, int xCellIndex, int yCellIndex, int zCellIndex, int cellFaceIndex, int cellVertexIndex, std::span< const int >dimensionIndexes={}, int xCellIndexLength=1, int yCellIndexLength=1, int zCellIndexLength=1, int cellFaceIndexLength=1, int cellVertexIndexLength=1, std::span< const int >dimensionLengths={})=0
setValues for given x cell index, y cell index, z cell index, face index, and node index and size for...
virtual void setValue(const hydrocouple_variant &data, int xCellIndex, int yCellIndex, int zCellIndex, int cellFaceIndex, int cellVertexIndex, std::span< const int >dimensionIndexes={})=0
setValue for given x cell index, y cell index, z cell index, face index, and node index.
virtual IDimension * cellVertexDimension() const =0
cellVertexDimension Node indices start from the bottom left and go in a counter clockwise order.
virtual void getValue(hydrocouple_variant &data, int xCellIndex, int yCellIndex, int zCellIndex, int cellFaceIndex, int cellVertexIndex, std::span< const int >dimensionIndexes={}) const =0
getValue for given x cell index, y cell index, z cell index, face index, and node index.
virtual void getValues(hydrocouple_variant *data, int xCellIndex, int yCellIndex, int zCellIndex, int cellFaceIndex, int cellVertexIndex, std::span< const int >dimensionIndexes={}, int xCellIndexLength=1, int yCellIndexLength=1, int zCellIndexLength=1, int cellFaceIndexLength=1, int cellVertexIndexLength=1, std::span< const int >dimensionLengths={}) const =0
getValues for given x cell index, y cell index, z cell index, face index, and node index and size for...
IRegularGrid3D represents a three-dimensional structured grid of nodes and cells.
Definition hydrocouplespatial.h:1471
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 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
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.
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 consists exclusively of...
Definition hydrocouplespatial.h:1904
virtual ~ITINComponentDataItem()=default
ITINComponentDataItem destructor.
virtual ITIN * TIN() const =0
An ITIN is a triangulated irregular network IPolyhedralSurface consisting only of ITriangle patches.
Definition hydrocouplespatial.h:1255
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: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.
SpatialDataType
SpatialDataType describes the type of spatial data (applicable to meshes, networks,...
Definition hydrocouplespatial.h:89
@ Scalar
Single scalar value.
@ MultiScalar
Multiple scalar values.
RegularGridType
The types of regular grids.
Definition hydrocouplespatial.h:104
@ Curvilinear
Curvilinear grid.
@ Cartesian
Cartesian grid.
@ Rectilinear
Rectilinear grid.
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.
@ Face
The data corresponds to the faces of the mesh.
@ Vertex
The data corresponds to the vertex of mesh edge vertex.
@ Edge
The data corresponds to the edges of the mesh.
NetworkDataObjectType
The types of data available in a network.
Definition hydrocouplespatial.h:72
@ Node
The data corresponds to the nodes of the network.
HydroCouple namespace contains the core interface specifications for the HydroCouple component-based ...
Definition hydrocouple.h:61
std::variant< std::monostate, bool, char, int8_t, int16_t, int32_t, int64_t, uint8_t, uint16_t, uint32_t, uint64_t, float, double, long double, std::string, std::any > hydrocouple_variant
hydrocouple_variant is a variant type that can be used to store the core value types values of differ...
Definition hydrocouple.h:104
A 2D point with x and y coordinates.
Definition hydrocouplespatialwkb.h:38
A 2D point with x, y, and an associated measure (m) value.
Definition hydrocouplespatialwkb.h:57
A 3D point with x, y, and z coordinates.
Definition hydrocouplespatialwkb.h:47
A 3D point with x, y, z coordinates and an associated measure (m) value.
Definition hydrocouplespatialwkb.h:67