ポリゴンの内部とポリゴン上のすべての点を見つける必要があります。多角形内のすべての座標をPythonの細長いポリゴンから抽出します
入力:
from shapely.geometry import Polygon, mapping
sh_polygon = Polygon(((0,0), (2,0), (2,2), (0,2)))
出力:
(0,0) , (1,0) , (2,0) , (0,1) , (1,1) , (2,1) , (0,2) , (1,2) , (2,2).
shapely
を使用することなく、より良い方法がある場合にお勧めしてください。
多角形の内部にポイントを与えるこのコードを書いていますが、ポイントを付けることはできません。
from shapely.geometry import Polygon, Point
def get_random_point_in_polygon(poly):
(minx, miny, maxx, maxy) = poly.bounds
minx = int(minx)
miny = int(miny)
maxx = int(maxx)
maxy = int(maxy)
print("poly.bounds:", poly.bounds)
a = []
for x in range(minx, maxx+1):
for y in range(miny, maxy+1):
p = Point(x, y)
if poly.contains(p):
a.append([x, y])
return a
p = Polygon([(0,0), (2,0), (2,2), (0,2)])
point_in_poly = get_random_point_in_polygon(p)
print(len(point_in_poly))
print(point_in_poly)
出力:
poly.bounds: (0.0, 0.0, 2.0, 2.0)
1
[[1, 1]]
私が簡略化されてきた私の問題も同じことを行うには良い方法があります。実際には、コーナーのある四角形の内側と内側にあるすべての点を見つける必要があります(77,97)、(141,101)、(136,165)、(73,160)です。
最大値を1ずつ増やし、最小値を1減らすことができますか? – SirParselot
@SirParselot Thansk。私はそれを変えた。しかし、私はまったく同じ出力を得ています。 – Beginner
これは 'if poly.contains(p)'を持っているからです。これは、ポリゴンの内部にポイントがあり、ポリゴンにポイントがない場合にのみ当てはまります。ループが境界の間にある場合は、ポリゴンの内側にあるかどうかを確認する必要はありません。もしあなたが 'poly.contains(p)'を取り除くなら、私の最初のコメントは無視してください。 – SirParselot