shapely
ポリゴンを定義するポイントをどのように取得/抽出しますか? ありがとう!
形の良い多角形の例
from shapely.geometry import Polygon
# Create polygon from lists of points
x = [list of x vals]
y = [list of y vals]
polygon = Polygon(x,y)
Polygon
そのため、これを実現するためにクラスメソッドの組み合わせを使用することが秘訣であることを発見しました。
測地座標が必要な場合は、これらを ( 、 、または何かを介して) WGS84 に変換する必要がpyproj
ありますmatplotlib
。basemap
from shapely.geometry import Polygon
#Create polygon from lists of points
x = [list of x vals]
y = [list of y vals]
some_poly = Polygon(x,y)
# Extract the point values that define the perimeter of the polygon
x, y = some_poly.exterior.coords.xy
shapelymapping
関数
を使用できます。
>>> from shapely.geometry import Polygon, mapping
>>> sh_polygon = Polygon(((0,0), (1,1), (0,1)))
>>> mapping(sh_polygon)
{'type': 'Polygon', 'coordinates': (((0.0, 0.0), (1.0, 1.0), (0.0, 1.0), (0.0, 0.0)),)}
私はこれを使用しました:
list(zip(*p.exterior.coords.xy))
で作成されたポリゴン:p = Polygon([(0,0),(1,1),(1,0),(0,0)])
戻り値:
[(0.0, 0.0), (1.0, 1.0), (1.0, 0.0), (0.0, 0.0)]
NumPy.array を使用して、形の整った Polygon を NumPy 配列に変換できます。座標は 2 つの 1 次元配列ではなく対になっているため、coords.xy によって返される配列よりも NumPy 配列を使用する方が便利です。アプリケーションにとってより便利な方を使用してください。
import numpy as np
x = [1, 2, 3, 4]
y = [9, 8, 7, 6]
polygon = Polygon(x,y)
points = np.array(polygon)
# points is:
[[ 1 9]
[ 2 8]
[ 3 7]
[ 4 6]]