ボロノイ分割をしたかったので scipy.spatial.Voronoi を使ったのだけれど、用語や配列の意味に混乱したので、整理してみた。
ドキュメントにあるように、処理自体はすぐにできる。
import numpy
import scipy.spatial
v = scipy.spatial.Voronoi(numpy.array([[0,0],[0,1],[1,1]]))
まず point, region, ridge, vertice の意味。2 次元だとこんな絵になる。2 次元だと ridge は線だけれども、3 次元だと ridge は面になる。
それぞれのデータは Voronoi object の属性に対応表の形で入っている。インデックス番号で対応表は表現されている。図にするとこんな感じで辿るようになっている。少し凝ったことをすると、たくさん辿らないといけないので、迷子にならないように丁寧に追いかけないといけない。
閉じた領域で Polygon を作る時は、例えば次のようなコードになる。
import geopandas as gpd
from shapely.geometry import Polygon
va = gpd.GeoDataFrame([dict(geometry=Polygon([v.vertices[vt] for vt in v.regions[r]]), pti=pti)
for pti,r in enumerate(v.point_region) if -1 not in v.regions[r]])
![IMG_1585[1].JPG](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F41883%2Fd11b253d-ea98-67fe-8aeb-e7d96259dc44.jpeg?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=944ba42deb1158fd78ef05aa4a3c20ba)
![IMG_1584[1].JPG](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F41883%2F8e51c022-3f01-0fb0-3b80-6c55ac0cc79c.jpeg?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=5c135f46e2a78725e75cc0b6d7feb5d5)