Python 检查多边形是否在Shapely中包含多点将返回意外结果
你能解释Shapely方法的行为吗?为什么下面的第一个结果为假,第二个结果为真 引用: 如果没有其他点位于对象的外部,并且其他点的内部至少有一个点位于对象的内部,则返回True 因此,事实上,一切都按预期进行 1当您选中poly.containsMultiPoint[Point2,2]时,该点不在多边形的内部,而是在其边界上。因此它返回False 2当您选中poly.containsMultiPoint[Point2,2,Point1,1]时,多点对象的任何点都不在poly的外部,并且有一个点位于其内部。这满足给定的条件 3对于poly.containsMultiPoint[Point2,2,Point1,1,Point3,3]情况,有一个点位于poly的外部,因此结果为False 附言:你在评论中写道:Python 检查多边形是否在Shapely中包含多点将返回意外结果,python,shapely,Python,Shapely,你能解释Shapely方法的行为吗?为什么下面的第一个结果为假,第二个结果为真 引用: 如果没有其他点位于对象的外部,并且其他点的内部至少有一个点位于对象的内部,则返回True 因此,事实上,一切都按预期进行 1当您选中poly.containsMultiPoint[Point2,2]时,该点不在多边形的内部,而是在其边界上。因此它返回False 2当您选中poly.containsMultiPoint[Point2,2,Point1,1]时,多点对象的任何点都不在poly的外部,并且有一个点位
关于2,点2,2位于多边形的外部,即多边形外部。containsPoint2,2返回True 多边形的此外部属性实际上意味着多边形的外部线性化。它不等于外部点集。说: 可以通过外部和内部属性访问组件环 内部、边界和外部点集的定义如下: 曲面具有一个内部集,由无限多个点组成,这些点位于空间中拖动曲线以覆盖某个区域的范围内;一个边界集,由一条或多条曲线组成;一个外部集,包括曲面中可能存在的孔内的点
关于2,点2,2位于多边形的外部,即多边形外部。包含点2,2返回True@Michael我理解这种混乱。定义中存在一些冲突。我更新了答案。是的,定义有冲突。根据定义,属性应称为边界,而不是外部。不过,这种行为是违反直觉的。如果poly.containsMultiPoint[Point2,2,Point1,1]返回True,而MultiPoint[Point2,2,Point1,1].containsMultiPoint[Point2,2]返回True,则poly.containsMultiPoint[Point2,2]也应返回True。多边形的属性已存在。外环是更好的选择。关于多点的行为,它来自。这里有更多关于这方面的链接:
from shapely.geometry import Polygon, Point, MultiPoint
poly = Polygon([[0,0], [2, 0], [2, 2], [0, 2]])
poly.contains(MultiPoint([Point(2,2)]))
Out[3]: False
poly.contains(MultiPoint([Point(2,2), Point(1,1)]))
Out[4]: True
poly.contains(MultiPoint([Point(2,2), Point(1,1), Point(3,3)]))
Out[5]: False