如何找到距 Latitude/Longitude 坐标一定距离内的点

How to find points in a certain distance to a Latitude/Longitude Coordinate

我正在使用 Latitude/Longitude 坐标,我正在尝试为表面上的圆找到一个方程,其中包括距中心有一定距离(在表面上)的所有点。

重要的是,这也适用于非常大的距离(例如地球周长的一半),因此平面地球近似可能行不通,但假设它是一个完美的球体就可以了。

有人可以帮忙吗?

提前致谢!

我也有同样的问题。 我所做的是将纬度和经度转换为固定在地球中心的笛卡尔坐标(我假设它是球形的)。 我将这些坐标解释为数学向量。 我也转换了想要的 "distance from center of circle" 到地球中心的一个角度, 也就是说,如果距离是 d 那么角度是 alpha = d/R 其中 R 是地球的半径。

然后我找到了三个向量。 第一个向量 v1 只是我原始向量的 cos(alpha) 倍, 也就是说,它从地球中心指向我的圆心 它的长度为 R*cos(alpha)。 另外两个向量 v2v3 的长度为 R*sin(alpha), 它们都垂直于 v1 并且相互垂直。

然后我可以通过

得到所需圆上的任何点
    v1 + cos(beta)*v2 + sin(beta)*v3

其中 beta 的范围可以从 0 到 2*pi。 最后,如果我想要那个点的经纬度, 我将它从笛卡尔坐标转换回来。

如果您从不真正关心笛卡尔坐标模型,但会 而是使用 only 结果的纬度和经度, 您可以通过假设 R == 1 稍微简化程序。 然后您可以简化公式,这样您就不必定义 变量 R.

任一方向的坐标转换都非常简单。 找到向量 v2 的一种简单方法是获取 v1 的 x 和 y 坐标 (忽略 z),将生成的向量在 x-y 平面中旋转 90 度 (因此,如果您从 (x,y,z) 开始,则新向量为 (-y,x,0)), 然后将矢量缩放到所需的大小。 当然,如果 v1 的 x 和 y 坐标为零,那么您可以 设 v2 为 x-y 平面中的任意向量。 要获得 v3,您可以取 v1v2 的叉积并缩放 随心所欲。