En un post anterior se consideró la producción de buffers, alrededor de puntos, con diferente número de lados en la antigua versión de QGIS. En éste toca modificar el script allí propuesto para que pueda funcionar con PyQGIS 3. Las modificaciones incluyen un sólo punto con proyección EPSG 32612 y una distancia buffer de 1000 metros. Los métodos de clase ahora empleados y que han cambiado con respecto a la versión anterior corresponden a QgsGeometry, QgsPointXY y QgsQgsProject. El script propuesto se encuentra a continuación:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | import numpy as np bufferLength = 1000 polygonSides = 5 pt = QgsPointXY(364067.6920850627, 4426289.212155256) points = [ pt ] epsg = 32612 uri = "Polygon?crs=epsg:" + str(epsg) + "&field=id:integer""&index=yes" mem_layer = QgsVectorLayer(uri, 'buffer', 'memory') prov = mem_layer.dataProvider() for i, point in enumerate(points): outFeat = QgsFeature() outFeat.setGeometry(QgsGeometry.fromPolygonXY([[ QgsPointXY(point[0] + np.sin(angle)*bufferLength, point[1] + np.cos(angle)*bufferLength) for angle in np.linspace(0, 2*np.pi, polygonSides, endpoint = False) ]])) outFeat.setAttributes([i]) prov.addFeatures([outFeat]) QgsProject.instance().addMapLayer(mem_layer) |
Después de ejecutado en la Python Console de QGIS, el resultado se observa en la imagen siguiente:
No hay comentarios:
Publicar un comentario