Suite

Coque convexe pour les fonctionnalités sélectionnées et tampon d'exécution pour la coque convexe résultante à l'aide de python

Coque convexe pour les fonctionnalités sélectionnées et tampon d'exécution pour la coque convexe résultante à l'aide de python


J'ai des fonctionnalités sélectionnées sur le mapcanvas. Je souhaite effectuer une enveloppe convexe pour les entités sélectionnées et les enregistrer dans une mémoire ou les stocker de préférence dans une variable, puis créer un tampon pour l'enveloppe convexe résultante à l'aide de python dans QGIS.

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

La fonction convexhull ci-dessus exporte le résultat vers un calque mais ne le stocke pas. Comment cela peut-il être fait?


Ce code fonctionne bien. Je l'ai utilisé avec un fichier de formes de points (Multi Part) pour obtenir son polygone de coque convexe.

layer = iface.activeLayer() feat = layer.selectedFeatures()[0] #get geometry geom = feat.geometry() convexhull = geom.convexHull() #Extract CRS from layer CRS = layer.crs().postgisSrid() URI = "Polygon?crs=epsg:"+str(CRS)+"&field=id:integer""&index=yes" #Créer une couche de polygones pour convexHull mem_layer = QgsVectorLayer(URI, "convexhull", "memory") #add Mapper la couche au registre QgsMapLayerRegistry.instance().addMapLayer(mem_layer) #Préparer mem_layer pour l'édition mem_layer.startEditing() #Définir la fonctionnalité pour convexHull feat2 = QgsFeature() #Définir la géométrie pour convexHull feat2.setGeometry(convexhull) #définir les valeurs des attributs pour convexHull feat2.setAttributes([1]) mem_layer.addFeature(feat2, True) #arrêter l'édition et enregistrer les modifications mem_layer.commitChanges() iface.mapCanvas().refresh()

Avant d'exécuter le code dans la console Python (fonctionnalités sélectionnées en couleur jaune par défaut) :

Après avoir exécuté le code :

Convexhull est une couche mémoire et il peut être enregistré en tant que fichier de formes dans le répertoire que vous préférez ou être utilisé pour créer un tampon dans le même script. Automatiquement, la coque convexe devient la couche active.


Voir la vidéo: Tutoriel - Activer le défilement à deux doigts sur votre PC Portable