已知一点经纬度和距离,计算另一点的经纬度

您所在的位置:网站首页 知道四个点怎么求球面 已知一点经纬度和距离,计算另一点的经纬度

已知一点经纬度和距离,计算另一点的经纬度

2023-10-25 06:26| 来源: 网络整理| 查看: 265

因为有需求,在知道一点经纬度和距离的情况下,需要知道另一点的经纬度。

之前在网上也有查找,也有不少的案例,但是多数都是语焉不详,看不太明白。后来自己整理和重新再思考了下,这里给出一个自认为说得还算比较简明扼要的版本。

话不多说,具体如下:

假设方位角是α, 那从点1到点2的平移距离分别如下所示d*sinα, d*cosα。 这里正北为0度。基中点1经纬度(long1, lat1)和距离d是已知的。 求点2的经纬度(long2,lat2)

 

还有一个隐藏的信息,就是点1所在的纬度,其实也是一个有用的角度,通过它可以知道当前纬度的那个切面的半径长度,下图红线所示用arc表示。这里假设地球是近似球体,赤道圆的半径是ARC,侧从下图中可以得出:

就是知道φ是当前点1的纬度。则当前的纬度的切面半径 arc = ARC*cos(φ) ,其中φ其实就是当前的方位的纬度值,即arc = ARC*cos(lat1)

 

这里还要再讨论下地球半径,其实地球是一个椭球体。

极半径 从地心到北极或南极的距离,大约3950英里(6356.9088千米)(两极的差极小,可以忽略)。

赤道半径 是从地心到赤道的距离,大约3963英里(6377.830千米)。

如果只是做近似计算的,我们这里取平均距离,平均半径 大约3959英里(6371.393千米) 。这个数字是地心到地球表面所有各点距离的平均值。

这里取平均半径那么ARC=6371.393*1000(米)

 

通过上面的知识铺垫后, 计算就简单化了,

【计算思路】

1. 计算第二点的经度,就是 水平平移的距度(d*sinα)除以 当前纬度切面周长(2π*arc),再每乘以360度) ,就知道了水平横向平移了多少度,再加上long1,就是long2的值了。

 2. 计算第二点的纬度,比较简单,就是, 垂直平移的距离d(d*cosα)除以 地球纵向周长,再乘上360度,就知道纵向平移了多少度,再加上lat1,就知道lat2的值了。

long2 = long1 + d*sinα/[ARC*cos(lat1)*2π/360] lat2 = lat1 +d*cosα/ (ARC *2π/360)

 

BTW, 最后再啰嗦一句,如果你是要通过编程实现的,一定要注意所用编程语言中,三角函数的值用的是度数还是弧度,不然也是得不到正确的结果的。

 

C#代码实现:

/// /// 计算移动后的经纬度 /// /// 经度 /// 纬度 /// 方位角(弧度) /// 移动距离 /// public double[] LongLatOffset(double lon, double lat, double a, double dst) { double arc = 6371.393 * 1000; lon += dst * Math.Sin(a) / (arc * Math.Cos(lat) * 2 * Math.PI / 360); lat += dst * Math.Cos(a) / (arc * 2 * Math.PI / 360); return new[] { lon, lat }; }

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3