是否可以找到中Point
(经度和纬度)与Polygon
之间最长的straight
距离?我读到可以找到最近的路径,但我不确定最长的路线。找到点与多边形之间最长的“直线”路径
回答
尝试Hausdorff distance,这是由g1.hausdorff_distance(g2)
机能的研究返回:
from shapely.geometry import Polygon, Point
poly = Polygon([(-1, -1), (-2, 2), (4, 4), (4, -1), (-1, -1)])
p = Point(0, 0)
poly.hausdorff_distance(p) # 5.656854249492381
请记住,身材匀称只适用于笛卡尔空间。你的问题询问“经度和纬度”,所以这些距离单位是度数。您需要将其投影到合适的坐标参考系统(CRS)中以获得更多常规单位长度。此外,“直路径”的定义根据CRS的选择而变化。
一种方法是离散多边形的外观为点的集合,并计算在这组点的点和每个点之间的距离:
def longest(poly, p, num):
lr = LinearRing(poly.exterior.coords)
dist = 0
for i in np.linspace(0, lr.length, num):
d = p.distance(lr.interpolate(i))
if d > dist:
dist = d
return dist
poly = Polygon([(-1, -1), (-2,2), (4,4), (4, -1), (-1, -1)])
p = Point(0,0)
longest(poly, p, 20)
# out: 5.428886519426354
longest(poly, p, 100)
# out: 5.622291976018042
当然是不准确的,但它可以对许多情况来说是一个合理的近似值。
备注:你不应该使用lon/lat来调整距离。匀称基于笛卡尔坐标系。一般来说,您应该首先投影您的几何图形(使用pyproj),以便能够使用匀称来测量距离。
两个意见。 1)很容易看出,最大距离实际上是在多边形顶点实现的,所以方法是精确的。 2)在一个数组中存储距离,然后对它进行排序以获得最大值的效率相比将最大值存储在变量中并在计算距离时进行比较效率非常低。在处理内存使用情况。 – eguaio
@eguaio感谢您的提示,我更新了答案。关于你的第一点:最长距离是'math.sqrt((4 ** 2)+(4 ** 2))= 5.656854249492381',而函数返回的内容稍有不同。增加'num'参数可以提高准确性(正如我在示例中试图说明的那样)。 –
- 1. 找到顶点之间给定路线的最短路径python
- 2. 找到任意两个节点之间最长的路径
- 3. 两点之间最长的路径
- 4. 找到所有点与多边形边界之间的最小距离
- 5. 查找树中一组节点之间的最长路径
- 6. 多点之间的最短路线
- 7. 如何找到两个节点之间的循环图中最长的路径?
- 8. 如何找到两个形状之间的最短路径?
- 9. 如何找到Lisp中两个节点之间最长的路径?
- 10. 直线与三角形边的交点
- 11. SVG中路径与多边形绘制的多边形示例
- 12. GraphViz,找到两个节点之间的最短路径
- 13. Neo4j - 如何找到两个节点之间的最短路径
- 14. 编辑多边形多边形的多边形路径事件
- 15. 找到两个凸多边形之间的接触点
- 16. 要找到直线与我们在matlab中的图形之间的交点
- 17. 多边形与半径的折线?
- 18. ITextShape可点击多边形或路径
- 19. 两个图形节点之间的固定长度路径
- 20. 通过多边形寻找最佳路径的漏斗算法
- 21. 查找多边形中花费最少的路径
- 22. 找到2个节点之间的最短路径没有更多的想法
- 23. 在特定点之间找到三维空间中最短(最快)的路径
- 24. 两个顶点之间的最长路径
- 25. 树形图 - 找到有多少对顶点,它们之间的路径上的边的总和是C
- 26. 点之间最简单的路径
- 27. 计算多个多边形之间共享边界的长度
- 28. Neo4j:找到两个节点之间有多个路径
- 29. 在neo4j中找到节点集合(某些节点)之间最长路径的最佳方法是什么?
- 30. 在iPhone上的MapKit上找到两个点之间的路径/路线
有什么方法可以在Python中用CRS实现? –
你可以使用[pyproj](https://github.com/jswhit/pyproj)([这种方式](https://gis.stackexchange.com/q/127427/1872))来投影几何图形,并找到来自[此地图预测列表](https://en.wikipedia.org/wiki/List_of_map_projections)的良好预测 –
不涉及选择投影的另一种策略是找到反测地距离's12'从[geographiclib](https://geographiclib.sourceforge.io/html/python/)的每一对经纬度点开始。 –