2014-02-06 116 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