QGIS API Documentation 3.30.0-'s-Hertogenbosch (f186b8efe0)
qgspolygon.h
Go to the documentation of this file.
1/***************************************************************************
2 qgspolygon.h
3 -------------------
4 begin : September 2014
5 copyright : (C) 2014 by Marco Hugentobler
6 email : marco at sourcepole dot ch
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#ifndef QGSPOLYGON_H
19#define QGSPOLYGON_H
20
21#include "qgis_core.h"
22#include "qgis_sip.h"
23#include "qgscurvepolygon.h"
24
25class QgsLineString;
26
33class CORE_EXPORT QgsPolygon: public QgsCurvePolygon
34{
35 public:
36
37
42
50 QgsPolygon( QgsLineString *exterior SIP_TRANSFER, const QList< QgsLineString * > &rings SIP_TRANSFER = QList< QgsLineString * >() ) SIP_HOLDGIL;
51
52 QString geometryType() const override SIP_HOLDGIL;
53 QgsPolygon *clone() const override SIP_FACTORY;
54 void clear() override;
55 bool fromWkb( QgsConstWkbPtr &wkb ) override;
56 int wkbSize( QgsAbstractGeometry::WkbFlags flags = QgsAbstractGeometry::WkbFlags() ) const override;
57 QByteArray asWkb( QgsAbstractGeometry::WkbFlags flags = QgsAbstractGeometry::WkbFlags() ) const override;
58 QgsPolygon *surfaceToPolygon() const override SIP_FACTORY;
59
64 QgsCurvePolygon *toCurveType() const override SIP_FACTORY;
65
66 void addInteriorRing( QgsCurve *ring SIP_TRANSFER ) override;
67 //overridden to handle LineString25D rings
68 void setExteriorRing( QgsCurve *ring SIP_TRANSFER ) override;
69
70 QgsAbstractGeometry *boundary() const override SIP_FACTORY;
71
78 double pointDistanceToBoundary( double x, double y ) const;
79
80#ifndef SIP_RUN
81
89 inline static const QgsPolygon *cast( const QgsAbstractGeometry *geom )
90 {
91 if ( !geom )
92 return nullptr;
93
94 const Qgis::WkbType flatType = QgsWkbTypes::flatType( geom->wkbType() );
95
96 if ( flatType == Qgis::WkbType::Polygon
97 || flatType == Qgis::WkbType::Triangle )
98 return static_cast<const QgsPolygon *>( geom );
99 return nullptr;
100 }
101#endif
102
104
105#ifdef SIP_RUN
106 SIP_PYOBJECT __repr__();
107 % MethodCode
108 QString wkt = sipCpp->asWkt();
109 if ( wkt.length() > 1000 )
110 wkt = wkt.left( 1000 ) + QStringLiteral( "..." );
111 QString str = QStringLiteral( "<QgsPolygon: %1>" ).arg( wkt );
112 sipRes = PyUnicode_FromString( str.toUtf8().constData() );
113 % End
114#endif
115
116 protected:
117
118 friend class QgsCurvePolygon;
119
120};
121#endif // QGSPOLYGON_H
WkbType
The WKB type describes the number of dimensions a geometry has.
Definition: qgis.h:155
@ Polygon
Polygon.
@ Triangle
Triangle.
Abstract base class for all geometries.
Qgis::WkbType wkbType() const SIP_HOLDGIL
Returns the WKB type of the geometry.
A const WKB pointer.
Definition: qgswkbptr.h:141
Curve polygon geometry type.
QgsCurvePolygon * createEmptyWithSameType() const override
Creates a new geometry with the same class and same WKB type as the original and transfers ownership.
Abstract base class for curved geometry type.
Definition: qgscurve.h:36
Line string geometry type, with support for z-dimension and m-values.
Definition: qgslinestring.h:45
Polygon geometry type.
Definition: qgspolygon.h:34
static const QgsPolygon * cast(const QgsAbstractGeometry *geom)
Cast the geom to a QgsPolygonV2.
Definition: qgspolygon.h:89
QgsPolygon(QgsLineString *exterior, const QList< QgsLineString * > &rings=QList< QgsLineString * >()) SIP_HOLDGIL
Constructor for QgsPolygon, with the specified exterior ring and interior rings.
static Qgis::WkbType flatType(Qgis::WkbType type) SIP_HOLDGIL
Returns the flat type for a WKB type.
Definition: qgswkbtypes.h:629
#define str(x)
Definition: qgis.cpp:37
#define SIP_TRANSFER
Definition: qgis_sip.h:36
#define SIP_HOLDGIL
Definition: qgis_sip.h:166
#define SIP_FACTORY
Definition: qgis_sip.h:76