有一个简单的方法来做这个继承功能的功能.
首先,您需要获取多边形的外部环,并投影
指向戒指由于多边形,必须将外部作为LinearRing
没有投影功能.反对直觉,这给了距离,距离
从环的第一点到最接近的环的点
给定点.然后,您只需使用该距离来获取点
内插函数.请参阅下面的代码.
from shapely.geometry import Polygon, Point, LinearRing
poly = Polygon([(0, 0), (2,8), (14, 10), (6,1)])
point = Point(12,4)
pol_ext = LinearRing(poly.exterior.coords)
d = pol_ext.project(point)
p = pol_ext.interpolate(d)
closest_point_coords = list(p.coords)[0]
重要的是要提到这种方法只有在你知道的情况下才有效
点在多边形的外部.如果点在里面
的内环,您需要适应这种情况的代码.
如果多边形没有内部环,则代码将对多边形内的点起作用.这是因为我们实际上使用外部环作为一个行字符串,并忽略该行是否来自一个多边形.
将该代码扩展到计算任何点(多边形内部或外部)到多边形边界中最近点的距离的一般情况是很容易的.您只需要计算从点到所有线环的最近点(和距离):外环和多边形的每个内环.然后,你只要保持最小的那些.