簡體   English   中英

包含勻稱多邊形的問題,似乎沒有正確標記所有包含的點

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM