2014-02-06 118 views
8

我正在尋找一種方法來確定一個特定點是否在使用NumPy/SciPy給定其頂點的多邊形內。多邊形內的點

我還沒有找到一個在線。有沒有使用NumPy/SciPy來做到這一點的方法?

+0

您已經提出這個問題[這裏](http://stackoverflow.com/q/21566610/1461210)。如果你對我給你的答案不滿意,你應該不接受並解釋原因,而不是打開另一個問題。 –

+0

不是一個理智的問題,最後一個是關於裁剪這是關於多邊形中的點。 –

+0

基本的基本問題是相同的 - 你的'crop'區域是一個多邊形,你想索引落在多邊形內的點。 arkottke的答案和我的解決方案都是這樣。 –

回答

13

你考慮過Shapely嗎?只需創建一個Polygon並檢查一個點是否爲多邊形contains

>>> from shapely.geometry import Point 
>>> from shapely.geometry.polygon import Polygon 

>>> point = Point(0.5, 0.5) 
>>> polygon = Polygon([(0, 0), (0, 1), (1, 1), (1, 0)]) 
>>> polygon.contains(point) 
True 
>>> point2 = Point((10, 10)) 
>>> polygon.contains(point2) 
False 
+0

嗯,有趣!儘管我希望numpy/scipy能夠做這件事,而不是安裝一個新模塊。順便說一下:你知道任何可以讓我在圖像上繪製頂點的工具嗎? –

+0

@Highschooler我會使用圖像作爲matplotlib圖的背景,然後使用[事件處理](http://matplotlib.org/users/event_handling.html)來挑選點。 – arkottke

+0

勻稱不幸的是沒有用pip'pip installs shapely' :( – user1767754