J'ai un fichier de formes de polygones, qui sont en fait les frontières d'une unité géographique (considérons comme exemple les 50 états américains, chaque état contient un certain nombre de points).
Je voudrais créer des polygones Voronoi à partir des points , avec la mise en garde que les frontières de l'État contraignent efficacement les polygones Voronoi créés à partir des points dans cet état.
Pour ce faire, la main-d'œuvre consisterait à créer 50 fichiers de formes individuels pour chaque état, à créer des polygones de Voronoï dans chacun, puis à les fusionner manuellement.
Existe-t-il un moyen plus simple de le faire, idéalement dans QGIS (j'utilise 2.18 sur Mac) ?
qgis
polygon
voronoi-thiessen
Steven
la source
la source
Réponses:
Il s'agit d'un processus en plusieurs étapes, vous devez donc créer un modèle ou un script personnalisé. Pour éviter les éclats de polygones appartenant aux points de polygone voisins, vous devrez parcourir votre couche d'états. En travaillant avec des polygones d'état et un ensemble de points aléatoires, je vais parcourir le processus afin que vous puissiez comprendre ce qui se passe à l'intérieur de notre modèle.
À l'intérieur du modèle
points_layer
intersect
polygons_layer
'Extracted (location)' from algorithm 'Extract by location'
500
(Cela semble excessif, mais nous voulons nous assurer que vos polygones Voronoi couvrent complètement l'état dans lequel ils se trouvent. Comme nous allons découper cette couche à l'étape suivante, la taille que nous faisons est sans importance.)Extract by location
'Voronoi polygons' from algorithm 'Voronoi polygons'
polygons_layer
output
Extract by location
etVoronoi polygons
Comme vous pouvez le voir, nous avons nos polygones de Voronoï contraints par l'état dans lesquels les points des états voisins n'affectent pas leur disposition.
Voici une image du modèle:
L'image ne transmet pas cela, mais notez que l'entrée de couche polygonale du modèle est un
Vector Features
objet, pas unVector Layer
.Exécution du modèle
Lorsque vous allez exécuter votre modèle, il est essentiel de cliquer sur l'icône pour parcourir les fonctionnalités de votre couche États.
Une fois que vous avez exécuté le modèle, vous pouvez simplement exécuter Fusionner les calques vectoriels sur les sorties pour obtenir une sortie monocouche, si cela est important pour vous. Malheureusement, je ne suis pas au courant d'un moyen facile de fusionner plusieurs sorties de modèle dans le modèle lui-même (s'il vous plaît, quelqu'un me corrige s'il y a quelque chose).
Si vous êtes à l'aise avec Python, vous pouvez facilement modifier le script exporté de ce modèle pour gérer cette étape supplémentaire. Comme vous n'avez pas mentionné de solutions basées sur le code dans votre question, je laisserai cela de côté.
la source
De manière similaire à la réponse que @csk vous a donnée, vous pouvez essayer ces deux alternatives:
1- Inclure des nœuds de polygones d'état dans l'outil Voronoi.
- Outil Voronoi avec points et nœuds.
La dernière étape consiste à clipser vos poles Voronoi avec la couche States (si vous en avez besoin).
2- Utilisez Voronoi directement sur la couche Point en utilisant un tampon pour les «étendre» à l'extension complète de l'état.
Comme vous le voyez, vous obtiendrez des résultats différents. Cela dépend de ce que vous recherchez.
la source