According to documentation: https://qgis.org/pyqgis/master/core/QgsGeometry.html?highlight=frompolygonxy#qgis.core.QgsGeometry.fromPolygonXY
fromPolygonXY(polygon: object)→ QgsGeometry¶ Creates a new geometry from a QgsPolygon
Parameters polygon (object) –
Return type QgsGeometry
But on executing the following code, when i try to give out a QgsPolygon
object as an argument to QgsGeometry.fromPolygonXY
it throws out an error
def create_circle(x, y, r):
layer = QgsVectorLayer('Polygon?crs=epsg:4326', 'poly' , "memory")
pr = layer.dataProvider()
pt = QgsFeature()
point = QgsPoint(x,y)
# pt.setGeometry(QgsGeometry.fromPoint(point))
pr.addFeatures([pt])
layer.updateExtents()
circle = qgis.core.QgsCircle.fromCenterDiameter(center = point, diameter = 2*r)
feat = QgsFeature()
# print(dir(QgsGeometry))
print(dir(circle))
print(circle.toPolygon())
feat.setGeometry(QgsGeometry.fromPolygonXY(circle.toPolygon()))
# circle_geom = QgsGeometry.makeCircle(point, r)
pr.addFeatures([feat])
return layer
circle.toPolygon()
returns a QgsPolygon
object as QgsCircle
class has QgsEllipse
as the base class
toPolygon(self, segments: int = 36)→ QgsPolygon¶ Returns a segmented polygon.
Parameters segments (int = 36) – Number of segments used to segment geometry.
Return type QgsPolygon
qgis details:
QGIS version
3.21.0-Master
QGIS code revision
1906e19899
Qt version
5.15.2
Python version
3.8.7
GDAL/OGR version
3.2.3
PROJ version
6.3.2
EPSG Registry database version
v9.8.6 (2020-01-22)
GEOS version
3.9.1-CAPI-1.14.2
SQLite version
3.31.1
PDAL version
2.2.0
PostgreSQL client version
12.3
SpatiaLite version
4.3.0a
QWT version
6.1.4
QScintilla2 version
2.11.4
OS version
macOS 11.1
NameError: name 'QgsPolygonXY' is not defined