整齐的外部距离。多边形

时间:2018-12-21 09:19:15

标签: python shapely

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

我猜是这样的:

def distance_from(poly,point):
  if poly.contains(point): return 0 
  return poly.exterior.distance(point)

1 个答案:

答案 0 :(得分:1)

我想澄清一下事情:

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

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

如果仅使用poly.distance(point),则出错的可能性会较小,因为如果关注点位于多边形的interiormore info here)之内,那么很明显它包含它,因此您不需要显式检查,并且interior中的点到自身的距离也为0。如果尝试从{{1}获得距离,则会有所不同。 }(如上所述,它是exterior,即闭合的LinearRing)到位于“内部”部分的一个点。在这种情况下,您将获得“内部”部分中的点与周围的线性环之间的最小距离。

有关二进制关系(例如,一个几何对象与另一个对象之间的关系,涵盖LineStringcontainswithin等的更多信息,请参见本章的this部分)。手册以及对基础DE-9IM关系(这是一种清楚地识别几何对象与另一对象之间的关系的方式)感兴趣的人员的参考this部分。

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