首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >shapely.Polygon外距离

shapely.Polygon外距离
EN

Stack Overflow用户
提问于 2018-12-21 09:19:14
回答 1查看 3.5K关注 0票数 2

如何确定点与多边形的距离?如果点在多边形内,则结果应为0。

我猜是这样:

代码语言:javascript
复制
def distance_from(poly,point):
  if poly.contains(point): return 0 
  return poly.exterior.distance(point)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-29 16:58:40

我想澄清一下:

传递给distance_from函数的实例由Shapely包中用于计算几何的shapely.geometry模块中的类shapely.geometry.polygon.Polygonshapely.geometry.point.Point组成。(有关形状和几何对象的更多信息,请参阅手册:Shapely Python包几何对象)。

几何对象的distance方法将最小浮动距离返回给另一个几何对象,如手册中所描述的这里。多边形的外部是shapely.geometry.polygon.LinearRing的一个实例,它构成多边形的边界(尽管它不与返回LineString的多边形的boundary属性混淆)。因此,对于上述情况,您不需要显式使用poly.exterior.distance(point),因为整个多边形的最小距离与其边界相同。它们的形状完全相同,只有不同的几何类型。

如果您只使用poly.distance(point),就不会那么容易出错了,因为这样,如果兴趣点位于多边形的interior (这里有更多的信息)内,那么它显然包含它,所以您不需要显式检查,而且从interior内的一个点到它本身的距离也是0。如果您尝试从exterior (正如上面解释的那样是一个LinearRing,即封闭的LineString)到位于“内部”部分的点之间的距离,就会有所不同。在这种情况下,您将得到“内”部分中的点与周围线性环之间的最小距离。

有关二进制关系的更多信息(即几何对象与另一个对象之间的关系,包括containswithintouches等)。参考手册中的部分,对于那些对底层DE-9IM关系感兴趣的人(这是一种明确识别几何对象与另一种关系的方式的方法),请参考部件。

Shapely是GEOS套件的python包装器,它本身就是JTS的C++端口。在链接功能表下的JTS页面上,可以找到更多关于如何检查和计算空间关系的信息。

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

https://stackoverflow.com/questions/53882074

复制
相关文章

相似问题

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