如何找到距 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)
。
另外两个向量 v2
和 v3
的长度为 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
,您可以取 v1
和 v2
的叉积并缩放
随心所欲。
我正在使用 Latitude/Longitude 坐标,我正在尝试为表面上的圆找到一个方程,其中包括距中心有一定距离(在表面上)的所有点。
重要的是,这也适用于非常大的距离(例如地球周长的一半),因此平面地球近似可能行不通,但假设它是一个完美的球体就可以了。
有人可以帮忙吗?
提前致谢!
我也有同样的问题。
我所做的是将纬度和经度转换为固定在地球中心的笛卡尔坐标(我假设它是球形的)。
我将这些坐标解释为数学向量。
我也转换了想要的 "distance from center of circle"
到地球中心的一个角度,
也就是说,如果距离是 d
那么角度是 alpha = d/R
其中 R
是地球的半径。
然后我找到了三个向量。
第一个向量 v1
只是我原始向量的 cos(alpha)
倍,
也就是说,它从地球中心指向我的圆心
它的长度为 R*cos(alpha)
。
另外两个向量 v2
和 v3
的长度为 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
,您可以取 v1
和 v2
的叉积并缩放
随心所欲。