你能解释一下形状contains法的行为吗?为什么第一个结果在False下面,第二个结果是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发布于 2020-03-18 14:42:13
返回
True,如果other的点不位于object的外部,而other的内部至少有一个点位于object的内部。
所以,事实上,每件事都是按预期运作的。
1)当你检查poly.contains(MultiPoint([Point(2,2)]))时,点不在poly的内部,而是在它的边界上。因此,它返回False。
2)当您检查poly.contains(MultiPoint([Point(2,2), Point(1,1)]))时,MultiPoint对象的任何点都不位于poly的外部,它的内部有一个点。这满足了给定的条件。
3)对于poly.contains(MultiPoint([Point(2,2), Point(1,1), Point(3,3)]))情况,在poly的外部有一个点,因此False是一个结果。
P.S.:你在评论中写道:
关于2)点
Point(2,2)位于多边形的外部,即poly.exterior.contains(Point(2,2))返回True。
多边形的exterior属性实际上意味着多边形的外部LinearRing。并且它不等于外部点集。Polygon说:
通过
exterior和interiors属性访问组件环。
内部、边界和外部点集被定义为这里如下:
曲面有一个内部集,由无限多个点组成(想象一条曲线在空间中被拖动以覆盖一个区域),一个由一条或多条曲线组成的边界集,以及包括可能存在于表面上的孔内的所有其他点的外部集合。
https://stackoverflow.com/questions/60738216
复制相似问题