首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查多边形中是否包含MultiPoint,返回意想不到的结果。

检查多边形中是否包含MultiPoint,返回意想不到的结果。
EN

Stack Overflow用户
提问于 2020-03-18 11:05:58
回答 1查看 2.1K关注 0票数 1

你能解释一下形状contains法的行为吗?为什么第一个结果在False下面,第二个结果是True

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-18 14:42:13

引用object.contains(other)

返回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说:

通过exteriorinteriors属性访问组件环。

内部、边界和外部点集被定义为这里如下:

曲面有一个内部集,由无限多个点组成(想象一条曲线在空间中被拖动以覆盖一个区域),一个由一条或多条曲线组成的边界集,以及包括可能存在于表面上的孔内的所有其他点的外部集合。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60738216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档