是否可以找到中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. Neo4j - 如何找到两个节点之间的最短路径
- 12. 找到两个凸多边形之间的接触点
- 13. 要找到直线与我们在matlab中的图形之间的交点
- 14. 多边形与半径的折线?
- 15. ITextShape可点击多边形或路径
- 16. 两个图形节点之间的固定长度路径
- 17. 在特定点之间找到三维空间中最短(最快)的路径
- 18. 两个顶点之间的最长路径
- 19. 点之间最简单的路径
- 20. 计算多个多边形之间共享边界的长度
- 21. 直线多边形交集
- 22. 如何查找直线和矩形之间的交点?
- 23. 查找树中多条路径之间的常见最短边界
- 24. 带曲线边缘的剪辑路径多边形
- 25. 找到点与曲线之间最小距离的Python代码
- 26. 查找图中每个节点最多有两个输入边和两个输出边的最长路径
- 27. 图中不应该是边的边的顶点之间的最短路径
- 28. 点与线之间的垂直距离
- 29. 两点之间的最佳路线
- 30. 在Python中最小化以找到两点之间的最短路径
有什么方法可以在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/)的每一对经纬度点开始。 –