【问题标题】:Points inside polygon including boundaries and vertices多边形内的点,包括边界和顶点
【发布时间】: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.intersectspoly.contains 按预期工作!但是shapely.geometry.shape(feature['geometry']).contains(point) 只返回属于 LineString 的点。也许不是错误和我的错,但仍然有些混乱。谢谢你!
  • LinearRings(或一种特殊类型的 LineString)和使用相同坐标的 Polygons 是不同的东西,因此每个都应该包含不同的点。您似乎只想要多边形的交集。

标签: python matplotlib networkx shapely


【解决方案1】:

如果您可以与 C++ 交互,我建议您添加 Luke Simonson 和 Gyuszi Suto 的 BOOST 库。

论文:http://www.boost.org/doc/libs/1_46_1/libs/polygon/doc/GTL_boostcon2009.pdf

图书馆:http://www.boost.org/doc/libs/1_55_0/libs/polygon/doc/index.htm

这些 C++ 新增功能以“可笑的速度”运行,基于作者开发的优雅的多边形演算。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-16
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2021-12-08
    • 2015-03-26
    • 2012-11-13
    相关资源
    最近更新 更多