Avis: le answer par aqueiros, bien plus haut voté, est pas correct. Particulièrement cette déclaration "vor.regions a toujours un tableau vide dans le premier index", n'est pas vrai.Obtenir point associé à la région Voronoi (scipy.spatial.Voronoi)
Je suis génération d'un simple tessellation 2D Voronoi, en utilisant la fonction scipy.spatial.Voronoi. J'utilise une distribution 2D aléatoire des points (voir MCVE ci-dessous).
J'ai besoin d'un moyen de passer par chaque région définie (définie par scipy.spatial.Voronoi
) et d'obtenir les coordonnées du point qui lui est associé (c'est-à-dire: le point que cette région entoure).
Le problème est qu'il y a N+1
régions (polygones) définies pour les points N
, et je ne suis pas sûr de ce que cela signifie.
Voici un MCVE qui échouera quand il arrive à la dernière région:
from scipy.spatial import Voronoi
import numpy as np
# Generate random data.
N = 10
x = [np.random.random() for i in xrange(N)]
y = [np.random.random() for i in xrange(N)]
points = zip(x, y)
# Obtain Voronoi regions.
vor = Voronoi(points)
# Loop through each defined region/polygon
for i, reg in enumerate(vor.regions):
print 'Region:', i
print 'Indices of vertices of Voronoi region:', reg
print 'Associated point:', points[i], '\n'
Une autre chose que je ne comprends pas pourquoi y at-il vor.regions
vide stockés? Selon les documents:
régions: Indices des sommets de Voronoï formant chaque région de Voronoï. -1 indique le sommet en dehors du diagramme de Voronoï.
Que signifie une région vide?
Ajouter
J'ai essayé l'attribut point_region
mais apparemment je ne comprends pas comment cela fonctionne. Il renvoie les index hors de la plage de la liste points
. Par exemple: dans le MCVE ci-dessus, il affichera toujours un index 10
pour une liste de 10 points, ce qui est clairement hors limites.
Les instances de 'Voronoi' ont un attribut' point_region' qui fait exactement ce que vous recherchez. [Lire les docs!] (Http://docs.scipy.org/doc/scipy-dev/reference/generated/scipy.spatial.Voronoi.html) – Jaime
@Jaime J'ai essayé cet attribut, s'il vous plaît voir ce que j'ai ajouté à la question. – Gabriel