java计算地图上的区域问题

已知两块矩形区域,分别由4个经纬度确定(所以有8个经纬度的坐标),现在需要确定2块区域的最短距离,距离计算由后端用java实现,可用信息只有8个点的坐标。具体可参考下图:
image.png
具体做法和思路哪位大佬能提供一下。

阅读 2.4k
1 个回答

你可以求出矩形的4个顶点到另外一个巨型4个顶点和4个边(线段)的距离(最小距离),这些值中最小的就是最短距离。

这个算法中只涉及点点距离和点线距离,注意对于点线距离,要进一步考察交点是否在线段上,如果不在线段上,则和交点最接近的端点与点的距离是点与该线段最短距离(这等于一个两不同矩形某顶点——非同矩形——距离)

你知道了每个矩形的坐标,这些值都能算出来,再比较一下大小即可。

当然,这个是一个最初的算法,肯定还有很多优化空间。

比如,如果两个矩形其实有重叠,则距离肯定是0,这就涉及先判断是否有重叠区域问题,就是一个优化方向。

推荐问题