Geographic Information Systems Asked by user2627043 on December 13, 2020
I am attempting to create a simple polygon on QGIS 3.14 using PyQGIS by adapting the code from How to draw polygons from the python console?.
I am running into an error with the setGeometry
line where the function fromPolylineXY
appears to need a QgsPointXY
object but the pts
object is a list.
Code so far is listed below.
tmp = QgsVectorLayer('Polygon?crs=epsg:29194', '200905_Bdy',"org") #Layer for polygon
prv = tmp.dataProvider() #Data object for polygon layer
ply01 = QgsFeature() #Object for polygon
# Object with polygon verticies
pts = [QgsPointXY(396100,8969000),QgsPointXY(396100,8973900),QgsPointXY(397900,8973900),QgsPointXY(397900,8969000)]
ply01.setGeometry(QgsGeometry.fromPolylineXY([pts]))
You should use fromPolygonXY
instead of fromPolylineXY
to create a polygon.
Use ply01.setGeometry(QgsGeometry.fromPolygonXY([pts]))
If you want to create a polyline before creating a polygon, you should know this: pts
object is a list. And fromPolylineXY
expects "a list of QgsPointXY
". When you use extra brackets like [pts]
, it will be a list of list of QgsPointXY
([[QgsPointXY, QgsPointXY, ...]]
).
To create o polyline you should remove the bracket in fromPolylineXY([pts])
to get a list of QgsPointXY
. Just use fromPolylineXY(pts)
.
Briefly;
To create a polygon from point list: QgsGeometry.fromPolygonXY([pts])
To create a polyline from point list: QgsGeometry.fromPolylineXY(pts)
Answered by Kadir Şahbaz on December 13, 2020
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP