Mehr

Convexhull für ausgewählte Features und Ausführen des Puffers für den resultierenden Convexhull mit Python


Ich habe Features auf der Mapcanvas ausgewählt. Ich möchte eine konvexe Hülle für diese ausgewählten Features ausführen und diese in einem Speicher speichern oder vorzugsweise in einer Variablen speichern und dann mit Python in QGIS Puffer für die resultierende konvexe Hülle erstellen.

layer = iface.activeLayer() features = layer.selectedFeatures() convex_hull = QgsGeometryAnalyzer().convexHull(layer, path.shp, True, -1, p-None)

Die obige Convexhull-Funktion exportiert das Ergebnis in einen Layer, speichert es jedoch nicht. Wie kann dies geschehen?


Dieser Code funktioniert gut. Ich habe es mit einem Punkt-Shapefile (Multi Part) verwendet, um sein konvexes Hull-Polygon zu erhalten.

layer = iface.activeLayer() feat = layer.selectedFeatures()[0] #Geometrie abrufen geom = feat.geometry() convexhull = geom.convexHull() #CRS aus Layer extrahieren CRS = layer.crs().postgisSrid() URI = "Polygon?crs=epsg:"+str(CRS)+"&field=id:integer""&index=yes" #Polygon-Layer für convexHull erstellen mem_layer = QgsVectorLayer(URI, "convexhull", "memory") #add Layer der Registry zuordnen QgsMapLayerRegistry.instance().addMapLayer(mem_layer) #Mem_layer für die Bearbeitung vorbereiten mem_layer.startEditing() #Feature für convexHull festlegen feat2 = QgsFeature() #Geometrie für convexHull festlegen feat2.setGeometry(convexhull) #Attributwerte festlegen fürset convexHull feat2.setAttributes([1]) mem_layer.addFeature(feat2, True) #Bearbeitung stoppen und Änderungen speichern mem_layer.commitChanges() iface.mapCanvas().refresh()

Bevor Sie den Code in der Python-Konsole ausführen (ausgewählte Funktionen in gelber Standardfarbe):

Nach dem Ausführen des Codes:

Convexhull ist eine Speicherebene und kann als Shapefile in dem von Ihnen bevorzugten Verzeichnis gespeichert oder verwendet werden, um einen Puffer im selben Skript zu erstellen. Convexhull wird automatisch zur aktiven Ebene.


Schau das Video: Her løftes Norges største anakonda (Oktober 2021).