algorithm - 在地球上,包括北北/a 西基 rectangle的最小圆的半径计算

  显示原文与译文双语对照的内容

我有一个网页,我正在使用谷歌地图。 当用户拖动地图时,我需要查询在地图可以见区域范围内的所有数据点的服务器。 我可以通过,获得地图可以见区域的北东和南部坐标,本质上提供了一个边界 rectangle 。 但是在服务器上,我依赖于一个数据库,它的地理查询API仅支持中心点和半径的查询。 所以基本上我想要找出最少的半径圆,至少包含北东和西南点。

在NE和坐标之间寻找中心点,然后测量半径作为距离中心点或者坐标的距离的最简单的算法。 在一个简单的欧氏空间我很愿意这样做,但我想我可以能会得到一些错误的地球坐标系。 我甚至不能相信自己,如果我知道距离将是中心和中心和中心和中心。

我对平面 2D 曲面上的最小圆算法进行了算法,还介绍了圆中心和半径相对 换句话说,边框的算法。 我还没有遇到这个特殊问题的简明算法。

时间: 作者:

我假设你所谓的east和北南坐标就是经度和纬度。 你可以将它们转换为笛卡尔点,并找到你区域边缘点之间的中点。 这将产生一个点C 在地球表面的一个相同纬度和经度与你的中心点C 。 但是,如果你的地球的差距小于 180度,则可以在地球相反的地方找到点。

地球表面上两点的距离bewteen可以用大圆 disnatce with公式计算。

如果假定地球是具有半径 R = 6373公里的完美球体,则转换很容易:


x = R * cos(lat) * cos(lon)
y = R * cos(lat) * sin(lon)
z = R * sin(lat)

然后后退:


lon = atan2(y, x)
lat = atan2(z, r) with r = sqrt(x*x + y*y)

但是,如果你需要更精确的坐标,那么你可能需要使用一个更好的坐标系,也许你需要使用一个更好的坐标系,如 ECEF answer

我的第一个想法是在经度和纬度上找到你的中点,如果你处理包装的for 。 然后你计算距离accpording到大圆的公式。 但是,如果地图区域包含极点,那么平均经度和纬度的平均值似乎并不明智。

...