【发布时间】:2015-12-13 10:30:42
【问题描述】:
我有一个包含我所有点的列表:[(lon, lat), ...](红色、绿色和蓝色的点。)现在我想检查哪些点是我的多边形的一部分,我的结果集应该包含所有蓝色和所有绿色节点.
我找到了http://geospatialpython.com/2011/08/point-in-polygon-2-on-line.html,shapely 和 matplotlib。第一个根本不起作用。 Shapely 不会返回我需要的所有节点。 Matplotlib 似乎也考虑了外部边界上的点。
获得所有(蓝色和)绿色节点的最便宜的方法是什么?
【问题讨论】:
-
对于
shapely,您需要poly.intersects(point)而不是poly.contains(point)。 -
我不知道这是否是一个错误,但是当我使用
shapely.geometry.Polygon()从我的坐标构建多边形时,poly.intersects和poly.contains按预期工作!但是shapely.geometry.shape(feature['geometry']).contains(point)只返回属于 LineString 的点。也许不是错误和我的错,但仍然有些混乱。谢谢你! -
LinearRings(或一种特殊类型的 LineString)和使用相同坐标的 Polygons 是不同的东西,因此每个都应该包含不同的点。您似乎只想要多边形的交集。
标签: python matplotlib networkx shapely