QGIS API Documentation 3.41.0-Master (af5edcb665c)
|
Triangulated surface geometry type. More...
#include <qgstriangulatedsurface.h>
Public Member Functions | |
QgsTriangulatedSurface () | |
QgsTriangulatedSurface (const QgsTriangulatedSurface &p) | |
~QgsTriangulatedSurface () override | |
void | addPatch (QgsPolygon *patch) override |
Adds a patch to the geometry, transferring ownership to the polyhedral surface. | |
void | addTriangle (QgsTriangle *triangle) |
Adds a triangle to the geometry, transferring ownership to the polyhedral surface. | |
QDomElement | asGml2 (QDomDocument &doc, int precision=17, const QString &ns="gml", QgsAbstractGeometry::AxisOrder axisOrder=QgsAbstractGeometry::AxisOrder::XY) const override |
Returns a GML2 representation of the geometry. | |
QDomElement | asGml3 (QDomDocument &doc, int precision=17, const QString &ns="gml", QgsAbstractGeometry::AxisOrder axisOrder=QgsAbstractGeometry::AxisOrder::XY) const override |
Returns a GML3 representation of the geometry. | |
QString | asKml (int precision=17) const override |
Returns a KML representation of the geometry. | |
void | clear () override |
Clears the geometry, ie reset it to a null geometry. | |
QgsTriangulatedSurface * | clone () const override |
Clones the geometry by performing a deep copy. | |
QgsTriangulatedSurface * | createEmptyWithSameType () const override |
Creates a new geometry with the same class and same WKB type as the original and transfers ownership. | |
bool | deleteVertex (QgsVertexId position) override |
Deletes a vertex within the geometry. | |
bool | fromWkb (QgsConstWkbPtr &wkb) override |
Sets the geometry from a WKB string. | |
bool | fromWkt (const QString &wkt) override |
Sets the geometry from a WKT string. | |
bool | fuzzyDistanceEqual (const QgsAbstractGeometry &other, double epsilon=1e-8) const override |
Performs fuzzy distance comparison between this geometry and other using an epsilon. | |
bool | fuzzyEqual (const QgsAbstractGeometry &other, double epsilon=1e-8) const override |
Performs fuzzy comparison between this geometry and other using an epsilon. | |
QString | geometryType () const override |
Returns a unique string representing the geometry type. | |
bool | insertVertex (QgsVertexId position, const QgsPoint &vertex) override |
Inserts a vertex into the geometry. | |
void | normalize () override |
Reorganizes the geometry into a normalized form (or "canonical" form). | |
bool | operator!= (const QgsAbstractGeometry &other) const override |
QgsTriangulatedSurface & | operator= (const QgsTriangulatedSurface &p) |
bool | operator== (const QgsAbstractGeometry &other) const override |
void | setTriangles (const QVector< QgsTriangle * > &triangles) |
Sets all triangles, transferring ownership to the polyhedral surface. | |
QgsTriangulatedSurface * | snappedToGrid (double hSpacing, double vSpacing, double dSpacing=0, double mSpacing=0, bool removeRedundantPoints=false) const override |
Makes a new geometry with all the points or vertices snapped to the closest point of the grid. | |
QgsTriangle * | triangleN (int index) |
Returns the triangle with the specified index. | |
const QgsTriangle * | triangleN (int index) const |
Returns the triangle with the specified index. | |
Public Member Functions inherited from QgsPolyhedralSurface | |
QgsPolyhedralSurface () | |
QgsPolyhedralSurface (const QgsMultiPolygon *multiPolygon) | |
Creates a polyhedral surface from a multiPolygon. | |
QgsPolyhedralSurface (const QgsPolyhedralSurface &p) | |
~QgsPolyhedralSurface () override | |
bool | addMValue (double mValue=0) override |
Adds a measure to the geometry, initialized to a preset value. | |
bool | addZValue (double zValue=0) override |
Adds a z-dimension to the geometry, initialized to a preset value. | |
void | adjacentVertices (QgsVertexId vertex, QgsVertexId &previousVertex, QgsVertexId &nextVertex) const override |
Returns the vertices adjacent to a specified vertex within a geometry. | |
double | area () const override |
Returns the planar, 2-dimensional area of the geometry. | |
json | asJsonObject (int precision=17) const override |
Returns a json object representation of the geometry. | |
QPainterPath | asQPainterPath () const override |
Returns the geometry represented as a QPainterPath. | |
QByteArray | asWkb (QgsAbstractGeometry::WkbFlags flags=QgsAbstractGeometry::WkbFlags()) const override |
Returns a WKB representation of the geometry. | |
QString | asWkt (int precision=17) const override |
Returns a WKT representation of the geometry. | |
QgsAbstractGeometry * | boundary () const override |
Returns the closure of the combinatorial boundary of the geometry (ie the topological boundary of the geometry). | |
bool | boundingBoxIntersects (const QgsBox3D &box3d) const override |
Returns true if the bounding box of this geometry intersects with a box3d. | |
double | closestSegment (const QgsPoint &pt, QgsPoint &segmentPt, QgsVertexId &vertexAfter, int *leftOf=nullptr, double epsilon=4 *std::numeric_limits< double >::epsilon()) const override |
Searches for the closest segment of the geometry to a given point. | |
QgsCoordinateSequence | coordinateSequence () const override |
Retrieves the sequence of geometries, rings and nodes. | |
int | dimension () const final |
Returns the inherent dimension of the geometry. | |
void | draw (QPainter &p) const override |
Draws the geometry using the specified QPainter. | |
bool | dropMValue () override |
Drops any measure values which exist in the geometry. | |
bool | dropZValue () override |
Drops any z-dimensions which exist in the geometry. | |
void | filterVertices (const std::function< bool(const QgsPoint &) > &filter) override |
Filters the vertices from the geometry in place, removing any which do not return true for the filter function check. | |
bool | hasCurvedSegments () const final |
Returns true if the geometry contains curved segments. | |
bool | isEmpty () const override |
Returns true if the geometry is empty. | |
bool | isValid (QString &error, Qgis::GeometryValidityFlags flags=Qgis::GeometryValidityFlags()) const override |
Checks validity of the geometry, and returns true if the geometry is valid. | |
bool | moveVertex (QgsVertexId position, const QgsPoint &newPos) override |
Moves a vertex within the geometry. | |
int | nCoordinates () const override |
Returns the number of nodes contained in the geometry. | |
bool | nextVertex (QgsVertexId &id, QgsPoint &vertex) const override |
Returns next vertex id and coordinates. | |
int | numPatches () const |
Returns the number of patches contained with the polyhedral surface. | |
QgsPolyhedralSurface & | operator= (const QgsPolyhedralSurface &p) |
int | partCount () const override |
Returns count of parts contained in the geometry. | |
QgsPolygon * | patchN (int i) |
Retrieves a patch from the polyhedral surface. | |
const QgsPolygon * | patchN (int i) const |
Retrieves a patch from the polyhedral surface. | |
double | perimeter () const override |
Returns the planar, 2-dimensional perimeter of the geometry. | |
bool | removeDuplicateNodes (double epsilon=4 *std::numeric_limits< double >::epsilon(), bool useZValues=false) override |
Removes duplicate nodes from the geometry, wherever removing the nodes does not result in a degenerate geometry. | |
bool | removePatch (int patchIndex) |
Removes a patch from the polyhedral surface. | |
int | ringCount (int part=0) const override |
Returns the number of rings of which this geometry is built. | |
QgsAbstractGeometry * | segmentize (double tolerance=M_PI_2/90, SegmentationToleranceType toleranceType=MaximumAngle) const override |
Returns a geometry without curves. | |
double | segmentLength (QgsVertexId startVertex) const override |
Returns the length of the segment of the geometry which begins at startVertex. | |
virtual void | setPatches (const QVector< QgsPolygon * > &patches) |
Sets all patches, transferring ownership to the polyhedral surface. | |
QgsPolyhedralSurface * | simplifyByDistance (double tolerance) const override |
Simplifies the geometry by applying the Douglas Peucker simplification by distance algorithm. | |
void | swapXy () override |
Swaps the x and y coordinates from the geometry. | |
QgsMultiSurface * | toCurveType () const override |
Returns the geometry converted to the more generic curve type. | |
QgsMultiPolygon * | toMultiPolygon () const |
Converts a polyhedral surface to a multipolygon. | |
void | transform (const QgsCoordinateTransform &ct, Qgis::TransformDirection d=Qgis::TransformDirection::Forward, bool transformZ=false) override |
Transforms the geometry using a coordinate transform. | |
void | transform (const QTransform &t, double zTranslate=0.0, double zScale=1.0, double mTranslate=0.0, double mScale=1.0) override |
Transforms the x and y components of the geometry using a QTransform object t. | |
bool | transform (QgsAbstractGeometryTransformer *transformer, QgsFeedback *feedback=nullptr) override |
Transforms the vertices from the geometry in place, using the specified geometry transformer object. | |
void | transformVertices (const std::function< QgsPoint(const QgsPoint &) > &transform) override |
Transforms the vertices from the geometry in place, applying the transform function to every vertex. | |
double | vertexAngle (QgsVertexId vertex) const override |
Returns approximate rotation angle for a vertex. | |
QgsPoint | vertexAt (QgsVertexId id) const override |
Returns the point corresponding to a specified vertex id. | |
int | vertexCount (int part=0, int ring=0) const override |
Returns the number of vertices of which this geometry is built. | |
int | vertexNumberFromVertexId (QgsVertexId id) const override |
Returns the vertex number corresponding to a vertex id. | |
int | wkbSize (QgsAbstractGeometry::WkbFlags flags=QgsAbstractGeometry::WkbFlags()) const override |
Returns the length of the QByteArray returned by asWkb() | |
Public Member Functions inherited from QgsSurface | |
QgsBox3D | boundingBox3D () const override |
Returns the 3D bounding box for the geometry. | |
bool | isValid (QString &error, Qgis::GeometryValidityFlags flags=Qgis::GeometryValidityFlags()) const override |
Checks validity of the geometry, and returns true if the geometry is valid. | |
Public Member Functions inherited from QgsAbstractGeometry | |
QgsAbstractGeometry ()=default | |
QgsAbstractGeometry (const QgsAbstractGeometry &geom) | |
virtual | ~QgsAbstractGeometry ()=default |
QString | asJson (int precision=17) |
Returns a GeoJSON representation of the geometry as a QString. | |
virtual QgsRectangle | boundingBox () const |
Returns the minimal bounding box for the geometry. | |
virtual bool | boundingBoxIntersects (const QgsRectangle &rectangle) const |
Returns true if the bounding box of this geometry intersects with a rectangle. | |
virtual QgsPoint | centroid () const |
Returns the centroid of the geometry. | |
virtual int | compareTo (const QgsAbstractGeometry *other) const |
Comparator for sorting of geometry. | |
const_part_iterator | const_parts_begin () const |
Returns STL-style iterator pointing to the const first part of the geometry. | |
const_part_iterator | const_parts_end () const |
Returns STL-style iterator pointing to the imaginary const part after the last part of the geometry. | |
virtual bool | convertTo (Qgis::WkbType type) |
Converts the geometry to a specified type. | |
bool | is3D () const |
Returns true if the geometry is 3D and contains a z-value. | |
bool | isMeasure () const |
Returns true if the geometry contains m values. | |
virtual double | length () const |
Returns the planar, 2-dimensional length of the geometry. | |
QgsAbstractGeometry & | operator= (const QgsAbstractGeometry &geom) |
QgsGeometryPartIterator | parts () |
Returns Java-style iterator for traversal of parts of the geometry. | |
QgsGeometryConstPartIterator | parts () const |
Returns Java-style iterator for traversal of parts of the geometry. | |
part_iterator | parts_begin () |
Returns STL-style iterator pointing to the first part of the geometry. | |
part_iterator | parts_end () |
Returns STL-style iterator pointing to the imaginary part after the last part of the geometry. | |
virtual const QgsAbstractGeometry * | simplifiedTypeRef () const |
Returns a reference to the simplest lossless representation of this geometry, e.g. | |
QgsVertexIterator | vertices () const |
Returns a read-only, Java-style iterator for traversal of vertices of all the geometry, including all geometry parts and rings. | |
vertex_iterator | vertices_begin () const |
Returns STL-style iterator pointing to the first vertex of the geometry. | |
vertex_iterator | vertices_end () const |
Returns STL-style iterator pointing to the imaginary vertex after the last vertex of the geometry. | |
Qgis::WkbType | wkbType () const |
Returns the WKB type of the geometry. | |
QString | wktTypeStr () const |
Returns the WKT type string of the geometry. | |
Static Public Member Functions | |
static const QgsTriangulatedSurface * | cast (const QgsAbstractGeometry *geom) |
Cast the geom to a QgsTriangulatedSurface. | |
Static Public Member Functions inherited from QgsPolyhedralSurface | |
static const QgsPolyhedralSurface * | cast (const QgsAbstractGeometry *geom) |
Cast the geom to a QgsPolyhedralSurface. | |
Static Public Member Functions inherited from QgsSurface | |
static const QgsSurface * | cast (const QgsAbstractGeometry *geom) |
Cast the geom to a QgsSurface. | |
Protected Member Functions | |
int | compareToSameClass (const QgsAbstractGeometry *other) const final |
Compares to an other geometry of the same class, and returns a integer for sorting of the two geometries. | |
Protected Member Functions inherited from QgsPolyhedralSurface | |
QgsBox3D | calculateBoundingBox3D () const override |
Calculates the minimal 3D bounding box for the geometry. | |
int | childCount () const override |
Returns number of child geometries (for geometries with child geometries) or child points (for geometries without child geometries - i.e. | |
QgsAbstractGeometry * | childGeometry (int index) const override |
Returns pointer to child geometry (for geometries with child geometries - i.e. | |
Protected Member Functions inherited from QgsSurface | |
void | clearCache () const override |
Clears any cached parameters associated with the geometry, e.g., bounding boxes. | |
Protected Member Functions inherited from QgsAbstractGeometry | |
virtual QgsRectangle | calculateBoundingBox () const |
Default calculator for the minimal bounding box for the geometry. | |
virtual QgsPoint | childPoint (int index) const |
Returns point at index (for geometries without child geometries - i.e. | |
virtual bool | hasChildGeometries () const |
Returns whether the geometry has any child geometries (false for point / curve, true otherwise) | |
void | setZMTypeFromSubGeometry (const QgsAbstractGeometry *subggeom, Qgis::WkbType baseGeomType) |
Updates the geometry type based on whether sub geometries contain z or m values. | |
int | sortIndex () const |
Returns the sort index for the geometry, used in the compareTo() method to compare geometries of different types. | |
Additional Inherited Members | |
Public Types inherited from QgsAbstractGeometry | |
enum | AxisOrder { XY = 0 , YX } |
Axis order for GML generation. More... | |
enum | SegmentationToleranceType { MaximumAngle = 0 , MaximumDifference } |
Segmentation tolerance as maximum angle or maximum difference between approximation and circle. More... | |
enum | WkbFlag { FlagExportTrianglesAsPolygons = 1 << 0 , FlagExportNanAsDoubleMin = 1 << 1 } |
WKB export flags. More... | |
typedef QFlags< WkbFlag > | WkbFlags |
Protected Attributes inherited from QgsPolyhedralSurface | |
QVector< QgsPolygon * > | mPatches |
Protected Attributes inherited from QgsSurface | |
QgsBox3D | mBoundingBox |
bool | mHasCachedValidity = false |
QString | mValidityFailureReason |
Protected Attributes inherited from QgsAbstractGeometry | |
Qgis::WkbType | mWkbType = Qgis::WkbType::Unknown |
Triangulated surface geometry type.
A TIN (triangulated irregular network) is a PolyhedralSurface consisting only of triangle patches.
Definition at line 37 of file qgstriangulatedsurface.h.
QgsTriangulatedSurface::QgsTriangulatedSurface | ( | ) |
Definition at line 28 of file qgstriangulatedsurface.cpp.
QgsTriangulatedSurface::QgsTriangulatedSurface | ( | const QgsTriangulatedSurface & | p | ) |
Definition at line 50 of file qgstriangulatedsurface.cpp.
|
override |
Definition at line 33 of file qgstriangulatedsurface.cpp.
|
overridevirtual |
Adds a patch to the geometry, transferring ownership to the polyhedral surface.
Reimplemented from QgsPolyhedralSurface.
Definition at line 251 of file qgstriangulatedsurface.cpp.
void QgsTriangulatedSurface::addTriangle | ( | QgsTriangle * | triangle | ) |
Adds a triangle to the geometry, transferring ownership to the polyhedral surface.
Definition at line 283 of file qgstriangulatedsurface.cpp.
|
overridevirtual |
Returns a GML2 representation of the geometry.
doc | DOM document |
precision | number of decimal places for coordinates |
ns | XML namespace |
axisOrder | Axis order for generated GML |
Reimplemented from QgsPolyhedralSurface.
Definition at line 164 of file qgstriangulatedsurface.cpp.
|
overridevirtual |
Returns a GML3 representation of the geometry.
doc | DOM document |
precision | number of decimal places for coordinates |
ns | XML namespace |
axisOrder | Axis order for generated GML |
Reimplemented from QgsPolyhedralSurface.
Definition at line 170 of file qgstriangulatedsurface.cpp.
|
overridevirtual |
Returns a KML representation of the geometry.
Reimplemented from QgsPolyhedralSurface.
Definition at line 192 of file qgstriangulatedsurface.cpp.
|
inlinestatic |
Cast the geom to a QgsTriangulatedSurface.
Should be used by qgsgeometry_cast<QgsTriangulatedSurface *>( geometry ).
Definition at line 183 of file qgstriangulatedsurface.h.
|
overridevirtual |
Clears the geometry, ie reset it to a null geometry.
Reimplemented from QgsPolyhedralSurface.
Definition at line 72 of file qgstriangulatedsurface.cpp.
|
overridevirtual |
Clones the geometry by performing a deep copy.
Reimplemented from QgsPolyhedralSurface.
Definition at line 67 of file qgstriangulatedsurface.cpp.
|
finalprotectedvirtual |
Compares to an other geometry of the same class, and returns a integer for sorting of the two geometries.
Reimplemented from QgsPolyhedralSurface.
Definition at line 311 of file qgstriangulatedsurface.cpp.
|
overridevirtual |
Creates a new geometry with the same class and same WKB type as the original and transfers ownership.
To create it, the geometry is default constructed and then the WKB is changed.
Reimplemented from QgsPolyhedralSurface.
Definition at line 38 of file qgstriangulatedsurface.cpp.
|
overridevirtual |
Deletes a vertex within the geometry.
position | vertex id for vertex to delete |
true
if delete was successful Reimplemented from QgsPolyhedralSurface.
Definition at line 305 of file qgstriangulatedsurface.cpp.
|
overridevirtual |
Sets the geometry from a WKB string.
After successful read the wkb argument will be at the position where the reading has stopped.
Reimplemented from QgsPolyhedralSurface.
Definition at line 81 of file qgstriangulatedsurface.cpp.
|
overridevirtual |
Sets the geometry from a WKT string.
Reimplemented from QgsPolyhedralSurface.
Definition at line 120 of file qgstriangulatedsurface.cpp.
|
inlineoverridevirtual |
Performs fuzzy distance comparison between this geometry and other using an epsilon.
Traditionally, the comparison is done by examining the specific values (such as x and y) that define the location of vertices in the geometry. It focuses on the numerical differences or relationships between these values. On the other hand, comparing distances between points considers the actual spatial separation or length between the points, regardless of their coordinate values. This comparison involves measuring the distance between two points using formulas like the distance formula. Here, it's the "distance comparison" (fuzzyDistanceEqual).
Reimplemented from QgsPolyhedralSurface.
Definition at line 88 of file qgstriangulatedsurface.h.
|
inlineoverridevirtual |
Performs fuzzy comparison between this geometry and other using an epsilon.
The comparison is done by examining the specific values (such as x and y) that define the location of vertices in the geometry.
Reimplemented from QgsPolyhedralSurface.
Definition at line 84 of file qgstriangulatedsurface.h.
|
overridevirtual |
Returns a unique string representing the geometry type.
Reimplemented from QgsPolyhedralSurface.
Definition at line 45 of file qgstriangulatedsurface.cpp.
|
overridevirtual |
Inserts a vertex into the geometry.
position | vertex id for position of inserted vertex |
vertex | vertex to insert |
true
if insert was successful Reimplemented from QgsPolyhedralSurface.
Definition at line 298 of file qgstriangulatedsurface.cpp.
|
overridevirtual |
Reorganizes the geometry into a normalized form (or "canonical" form).
Polygon rings will be rearranged so that their starting vertex is the lower left and ring orientation follows the right hand rule, collections are ordered by geometry type, and other normalization techniques are applied. The resultant geometry will be geometrically equivalent to the original geometry.
Reimplemented from QgsPolyhedralSurface.
Definition at line 198 of file qgstriangulatedsurface.cpp.
|
inlineoverridevirtual |
Reimplemented from QgsPolyhedralSurface.
Definition at line 98 of file qgstriangulatedsurface.h.
QgsTriangulatedSurface & QgsTriangulatedSurface::operator= | ( | const QgsTriangulatedSurface & | p | ) |
Definition at line 58 of file qgstriangulatedsurface.cpp.
|
inlineoverridevirtual |
Reimplemented from QgsPolyhedralSurface.
Definition at line 93 of file qgstriangulatedsurface.h.
void QgsTriangulatedSurface::setTriangles | ( | const QVector< QgsTriangle * > & | triangles | ) |
Sets all triangles, transferring ownership to the polyhedral surface.
Definition at line 238 of file qgstriangulatedsurface.cpp.
|
overridevirtual |
Makes a new geometry with all the points or vertices snapped to the closest point of the grid.
Ownership is transferred to the caller.
If the gridified geometry could not be calculated nullptr
will be returned. It may generate an invalid geometry (in some corner cases). It can also be thought as rounding the edges and it may be useful for removing errors.
Example:
In this case we use a 2D grid of 1x1 to gridify. In this case, it can be thought like rounding the x and y of all the points/vertices to full units (remove all decimals).
hSpacing | Horizontal spacing of the grid (x axis). 0 to disable. |
vSpacing | Vertical spacing of the grid (y axis). 0 to disable. |
dSpacing | Depth spacing of the grid (z axis). 0 (default) to disable. |
mSpacing | Custom dimension spacing of the grid (m axis). 0 (default) to disable. |
removeRedundantPoints | if true , then points which are redundant (e.g. they represent mid points on a straight line segment) will be skipped (since QGIS 3.38) |
Reimplemented from QgsPolyhedralSurface.
Definition at line 214 of file qgstriangulatedsurface.cpp.
QgsTriangle * QgsTriangulatedSurface::triangleN | ( | int | index | ) |
Returns the triangle with the specified index.
Definition at line 288 of file qgstriangulatedsurface.cpp.
const QgsTriangle * QgsTriangulatedSurface::triangleN | ( | int | index | ) | const |
Returns the triangle with the specified index.
Definition at line 293 of file qgstriangulatedsurface.cpp.