Mettre le polygone en mémoire tampon jusqu'à ce qu'il touche un voisin à l'aide de PyQGIS?

8

J'ai un fichier de formes composé d'un certain nombre de polygones. Les polygones voisins partagent souvent un attribut.

Ce que je dois faire, c'est tamponner ces polygones en fonction de l'attribut commun. Cependant, je voudrais étendre lesdits tampons jusqu'à ce qu'ils se rencontrent, moment auquel ils peuvent s'arrêter.

J'ai assemblé à la hâte une maquette:

evillyDrawExample

Tout ce que j'ai au niveau du code est le suivant:

from qgis.core import *
from qgis.analysis import *

layer=qgis.utils.iface.activeLayer() 

QgsGeometryAnalyzer().dissolve(layer, "D:/test_dissolved.shp", onlySelectedFeatures=False, uniqueIdField=3, p=None)

À vrai dire, je ne connais pas très bien la documentation de l'API QGIS et malgré tous mes efforts, je ne trouve pas de méthode appropriée pour cela. QgsGeometryAnalyzer().dissolveme permet de dissoudre le tampon mais ce n'est pas ce que je recherche.

Dois-je peut-être regarder dans une autre direction ici?

Ingwe
la source

Réponses:

5

Quelque chose que vous pourriez essayer est un processus thiessen où vous voronoi les polygones puis se dissolvent par des attributs similaires. Je ne sais pas ce que ce serait en python mais peut-être que les étapes vous sont utiles.

Chevalier
la source
Je vais essayer de comprendre l'itinéraire Voronoi à l'aide de pyQGIS et voir où cela me mène. Je préfère l'idée d'utiliser une solution open source.
Ingwe
Qu'entendez-vous par open source? QGIS et tous ses outils sont soumis à la licence open source gratuite.
Knightshound
2

Vous souhaiterez probablement explorer les fonctions d'analyse raster. Voir Création d'une ligne médiane pour chaque polygone dans une base de données de canyon sous-marin à l'aide d'ArcGIS for Desktop Basic? et créer des polygones de Thiessen (Voronoi) en utilisant des lignes (plutôt que des points) comme caractéristiques d'entrée? pour plus d'inspiration.

Bien entendu, cela vous oblige à utiliser une résolution raster appropriée.

bugmenot123
la source
J'aime cette idée de conversion en un raster et elle m'est venue à l'esprit, mais un grand ensemble de données n'entraînerait-il pas un temps de traitement très lent?
Ingwe
Peut-être pas plus lent que de faire la même chose de manière itérative avec des vecteurs.
bugmenot123
1

J'ai eu une tâche légèrement connexe l'autre jour. En théorie, les polygones voronoi avec des points centraux de construction (pondérés) devraient juste être la solution pour votre cas, mais cela n'a pas fonctionné pour moi; PostgreSQL n'est pas ce que vous avez demandé, mais, comme solution de contournement, si c'est la `` ligne centrale '' entre chaque bâtiment que vous recherchez pour la première étape, l'utilisation de PostGIS ST_ApproximateMedialAxis pourrait valoir la peine d'être essayée . Vous devez créer un polygone de base pour toute la zone d'étude et découper les polygones de construction avant d'appliquer la fonction sur le polygone de base pour obtenir des résultats connexes. Pourrait fonctionner, pourrait ne pas ...

geozelot
la source