Polygones de Voronoï contraints QGIS

9

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) ?

Steven
la source
1
Pourquoi ne pas créer des polygones Voronoi pour toute la couche de points, puis couper le résultat avec la couche limite géographique?
csk
Juste pour clarifier, un État peut-il avoir plusieurs points?
luciole orange

Réponses:

3

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.

état des points

À l'intérieur du modèle

  1. Extraire par emplacement
    • Extraire des fonctionnalités de: points_layer
    • Où les fonctionnalités: intersect
    • En comparant aux fonctionnalités de: polygons_layer

extraits d'état de points

  1. Polygones de Voronoi
    • Couche d'entrée: 'Extracted (location)' from algorithm 'Extract by location'
    • Région tampon: 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.)
    • Algorithmes parents: Extract by location

voronoi par état

  1. Agrafe
    • Couche d'entrée: 'Voronoi polygons' from algorithm 'Voronoi polygons'
    • Couche de superposition: polygons_layer
    • Coupé: output
    • Algorithmes parents: Extract by locationetVoronoi polygons

coupé

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:

modèle de traitement

L'image ne transmet pas cela, mais notez que l'entrée de couche polygonale du modèle est un Vector Featuresobjet, pas un Vector 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.

option d'itération

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é.

JoshC
la source
1
Fonctionne parfaitement! Je suis étonné, je me cognais la tête quelques heures sur le même problème et je viens de reproduire votre modèle et d'obtenir les résultats en premier. Je te dois une bière.
sys49152
1

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.

  • Nœuds de la couche États (Utiliser les nœuds d'extraction).
  • Fusionner des points et des nœuds.

entrez la description de l'image ici - Outil Voronoi avec points et nœuds.

entrez la description de l'image ici

  • 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.

entrez la description de l'image ici

  • Clip avec calque d'état.

Comme vous le voyez, vous obtiendrez des résultats différents. Cela dépend de ce que vous recherchez.

César Arquero
la source