QGIS API Documentation  2.12.0-Lyon
qgsgeometrycollectionv2.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsgeometrycollectionv2.h
3  -------------------------------------------------------------------
4 Date : 28 Oct 2014
5 Copyright : (C) 2014 by Marco Hugentobler
6 email : marco.hugentobler at sourcepole dot com
7  ***************************************************************************
8  * *
9  * This program is free software; you can redistribute it and/or modify *
10  * it under the terms of the GNU General Public License as published by *
11  * the Free Software Foundation; either version 2 of the License, or *
12  * (at your option) any later version. *
13  * *
14  ***************************************************************************/
15 
16 #ifndef QGSGEOMETRYCOLLECTIONV2_H
17 #define QGSGEOMETRYCOLLECTIONV2_H
18 
19 #include "qgsabstractgeometryv2.h"
20 #include "qgspointv2.h"
21 #include <QVector>
22 
30 {
31  public:
35  virtual ~QgsGeometryCollectionV2();
36 
37  virtual QgsGeometryCollectionV2* clone() const override;
38 
41  int numGeometries() const;
42 
46  const QgsAbstractGeometryV2* geometryN( int n ) const;
47 
51  QgsAbstractGeometryV2* geometryN( int n );
52 
53  //methods inherited from QgsAbstractGeometry
54  virtual int dimension() const override;
55  virtual QString geometryType() const override { return "GeometryCollection"; }
56  virtual void clear() override;
57 
59  virtual bool addGeometry( QgsAbstractGeometryV2* g );
60 
65  virtual bool insertGeometry( QgsAbstractGeometryV2* g, int index );
66 
71  virtual bool removeGeometry( int nr );
72 
78  void transform( const QTransform& t ) override;
79 #if 0
80  virtual void clip( const QgsRectangle& rect ) override;
81 #endif
82  virtual void draw( QPainter& p ) const override;
83 
84  bool fromWkb( const unsigned char * wkb ) override;
85  virtual bool fromWkt( const QString& wkt ) override;
86  int wkbSize() const override;
87  unsigned char* asWkb( int& binarySize ) const override;
88  QString asWkt( int precision = 17 ) const override;
89  QDomElement asGML2( QDomDocument& doc, int precision = 17, const QString& ns = "gml" ) const override;
90  QDomElement asGML3( QDomDocument& doc, int precision = 17, const QString& ns = "gml" ) const override;
91  QString asJSON( int precision = 17 ) const override;
92 
93  virtual QgsRectangle calculateBoundingBox() const override;
94 
95  virtual void coordinateSequence( QList< QList< QList< QgsPointV2 > > >& coord ) const override;
96  virtual double closestSegment( const QgsPointV2& pt, QgsPointV2& segmentPt, QgsVertexId& vertexAfter, bool* leftOf, double epsilon ) const override;
97  bool nextVertex( QgsVertexId& id, QgsPointV2& vertex ) const override;
98 
99  //low-level editing
100  virtual bool insertVertex( const QgsVertexId& position, const QgsPointV2& vertex ) override;
101  virtual bool moveVertex( const QgsVertexId& position, const QgsPointV2& newPos ) override;
102  virtual bool deleteVertex( const QgsVertexId& position ) override;
103 
104  virtual double length() const override;
105  virtual double area() const override;
106  virtual double perimeter() const override;
107 
108  bool hasCurvedSegments() const override;
109 
111  QgsAbstractGeometryV2* segmentize() const override;
112 
116  double vertexAngle( const QgsVertexId& vertex ) const override;
117 
118  virtual int vertexCount( int part = 0, int ring = 0 ) const override { return mGeometries[part]->vertexCount( 0, ring ); }
119  virtual int ringCount( int part = 0 ) const override { return mGeometries[part]->ringCount(); }
120  virtual int partCount() const override { return mGeometries.size(); }
121  virtual QgsPointV2 vertexAt( const QgsVertexId& id ) const override { return mGeometries[id.part]->vertexAt( id ); }
122 
123  virtual bool addZValue( double zValue = 0 ) override;
124  virtual bool addMValue( double mValue = 0 ) override;
125 
126  protected:
128 
132  virtual bool wktOmitChildType() const { return false; }
133 
136  bool fromCollectionWkt( const QString &wkt, const QList<QgsAbstractGeometryV2*>& subtypes, const QString& defaultChildWkbType = QString() );
137 
138 };
139 
140 #endif // QGSGEOMETRYCOLLECTIONV2_H
virtual QgsPointV2 vertexAt(const QgsVertexId &id) const override
Returns the point corresponding to a specified vertex id.
static unsigned index
A rectangle specified with double values.
Definition: qgsrectangle.h:35
virtual double vertexAngle(const QgsVertexId &vertex) const =0
Returns approximate rotation angle for a vertex.
virtual QgsAbstractGeometryV2 & operator=(const QgsAbstractGeometryV2 &geom)
virtual bool moveVertex(const QgsVertexId &position, const QgsPointV2 &newPos)=0
Moves a vertex within the geometry.
virtual double length() const
Returns the length of the geometry.
virtual QgsPointV2 vertexAt(const QgsVertexId &) const override
Returns the point corresponding to a specified vertex id.
Definition: qgspointv2.h:97
virtual QString asJSON(int precision=17) const =0
Returns a GeoJSON representation of the geometry.
Abstract base class for all geometries.
virtual bool wktOmitChildType() const
Returns whether child type names are omitted from Wkt representations of the collection.
TransformDirection
Enum used to indicate the direction (forward or inverse) of the transform.
virtual int wkbSize() const =0
Returns the size of the WKB representation of the geometry.
virtual bool insertVertex(const QgsVertexId &position, const QgsPointV2 &vertex)=0
Inserts a vertex into the geometry.
virtual bool addMValue(double mValue=0)=0
Adds a measure to the geometry, initialized to a preset value.
virtual void clear()=0
Clears the geometry, ie reset it to a null geometry.
Utility class for identifying a unique vertex within a geometry.
virtual QgsRectangle calculateBoundingBox() const
Calculates the minimal bounding box for the geometry.
virtual bool fromWkb(const unsigned char *wkb)=0
Sets the geometry from a WKB string.
Point geometry type.
Definition: qgspointv2.h:29
virtual bool hasCurvedSegments() const
Returns true if the geometry contains curved segments.
virtual unsigned char * asWkb(int &binarySize) const =0
Returns a WKB representation of the geometry.
virtual void transform(const QgsCoordinateTransform &ct, QgsCoordinateTransform::TransformDirection d=QgsCoordinateTransform::ForwardTransform)=0
Transforms the geometry using a coordinate transform.
virtual bool addZValue(double zValue=0)=0
Adds a z-dimension to the geometry, initialized to a preset value.
virtual int partCount() const override
virtual QDomElement asGML3(QDomDocument &doc, int precision=17, const QString &ns="gml") const =0
Returns a GML3 representation of the geometry.
virtual bool nextVertex(QgsVertexId &id, QgsPointV2 &vertex) const =0
Returns next vertex id and coordinates.
virtual int ringCount(int part=0) const override
virtual bool fromWkt(const QString &wkt)=0
Sets the geometry from a WKT string.
virtual QgsAbstractGeometryV2 * segmentize() const
Returns a version of the geometry without curves.
QVector< QgsAbstractGeometryV2 * > mGeometries
virtual bool deleteVertex(const QgsVertexId &position)=0
Deletes a vertex within the geometry.
virtual int dimension() const =0
Returns the inherent dimension of the geometry.
virtual double area() const
Returns the area of the geometry.
virtual void coordinateSequence(QList< QList< QList< QgsPointV2 > > > &coord) const =0
Retrieves the sequence of geometries, rings and nodes.
Class for doing transforms between two map coordinate systems.
virtual QString asWkt(int precision=17) const =0
Returns a WKT representation of the geometry.
virtual QString geometryType() const override
Returns a unique string representing the geometry type.
virtual int vertexCount(int part=0, int ring=0) const override
virtual void draw(QPainter &p) const =0
Draws the geometry using the specified QPainter.
double ANALYSIS_EXPORT leftOf(Point3D *thepoint, Point3D *p1, Point3D *p2)
Returns whether 'thepoint' is left or right of the line from 'p1' to 'p2'.
virtual QDomElement asGML2(QDomDocument &doc, int precision=17, const QString &ns="gml") const =0
Returns a GML2 representation of the geometry.
virtual double perimeter() const
Returns the perimeter of the geometry.
virtual QgsAbstractGeometryV2 * clone() const =0
Clones the geometry by performing a deep copy.
virtual double closestSegment(const QgsPointV2 &pt, QgsPointV2 &segmentPt, QgsVertexId &vertexAfter, bool *leftOf, double epsilon) const =0
Searches for the closest segment of the geometry to a given point.