[英]Problem with shapely polygon contain, seems not to correctly flag all contained points
假設我們有一個包含多邊形的 100x100 網格。 現在,如果我們為多邊形中包含的所有可能的 (x,y) 點 [x,y 是整數] 着色,我們應該期望多邊形在某種程度上被繪制/填充
但是我得到的圖像永遠不會正確地落入並填充多邊形! 這是勻稱的限制還是我做錯了什么?! (請注意,我需要它用於其他目的,而不僅僅是繪制多邊形)
import numpy as np
import matplotlib.pyplot as plt
import shapely.geometry
points = np.random.randint(0,100, (10,2)) # 10 random points
poly = shapely.geometry.MultiPoint(points).convex_hull.buffer(1) # a polygon
grid_points = [ shapely.geometry.Point(x,y) for x in range(100) for y in range(100)]
in_poly = np.array([poly.contains(point) for point in grid_points])
#plot
plt.imshow(in_poly.reshape(100,100), origin='lower')
plt.plot(*poly.exterior.xy)
這似乎可以滿足您的要求 - 替換這一行(在 for 循環中交換 y 和 x):
grid_points = [ shapely.geometry.Point(x,y) for y in range(100) for x in range(100)]
幾個注意事項:
我安裝的 shapely 有這個模塊名稱(geometry 拼寫不同,所以你可能需要在上面的行中更改名稱):
import shapely.geometry
並感謝您添加第二個繪圖命令 - 這幫助了很多。
沿途的某些東西具有不同的主要順序(行與列),因此上面的行更改為列主要。
並且您可能希望通過對外部圖進行逆運算來進行補償。
(原始(帶有新的隨機形狀),更新,帶有外觀)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.