已知基点的经纬度,根据方位角和运动距离求另外一点的经纬度
Posted Z && Y
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了已知基点的经纬度,根据方位角和运动距离求另外一点的经纬度相关的知识,希望对你有一定的参考价值。
1. 已知基点的经纬度,根据方位角和运动距离求另外一点的经纬度
1.1 需求概述及图解
假设方位角是α, 那从点1到点2的平移距离分别如下所示dsinα, dcosα。 这里正北为0度。已知基点(点1)经纬度(long1, lat1)和距离d。 求点2的经纬度(long2,lat2)
1.2 求当前的切面半径
Φ是当前点1的纬度。则当前的纬度的切面半径 arc = ARCcos(Φ) ,其中Φ其实就是当前的方位的纬度值,即arc = ARCcos(lat1)
1.3 地球平均半径
- 地球的平均半径 大约3959英里(6371.393千米) 。这个数字是地心到地球表面所有各点距离的平均值。
- 这里取平均半径那么ARC=6371.393*1000(米)
1.4 计算思路
-
计算第二点的经度,就是 水平平移的距度(dsinα)除以 当前纬度切面周长(2πarc)。再除以360度 ,就知道了水平横向平移了多少度,再加上long1,就是long2的值了。
-
计算第二点的纬度,比较简单,就是, 垂直平移的距离d(d*cosα)除以 地球纵向周长,再除以360度,就知道纵向平移了多少度,再加上lat1,就知道lat2的值了。
总结:
- long2 = long1 + dsinα/[ARCcos(lat1)*2π/360]
- lat2 = lat1 +d*cosα/ (ARC *2π/360)
1.5 Java代码实现
/**
* MethodName: calcLatAndlon
* Description:
*
* @return entity.GPSNode
* @date 2021/9/21 20:35
* @params: [posX 终点位置X轴的位置信息, posY 终点位置Y轴的位置信息, basePointLongitude 基点的GPS经度坐标,
* basePointLatitude 基点的GPS纬度坐标, azimuth 方位角(弧度), distance 2点之间的直线距离]
* @author Tianjiao
*/
public void calcLatAndlon(int posX, int posY, double basePointLongitude, double basePointLatitude, double azimuth, double distance) {
double arc = 6371.393 * 1000;
// 终点的经度坐标
double longitude = basePointLongitude + distance * Math.sin(azimuth) / (arc * Math.cos(basePointLongitude) * 2 * Math.PI / 360);
// 终点的纬度坐标
double latitude = basePointLatitude + distance * Math.cos(azimuth) / (arc * 2 * Math.PI / 360);
}
以上是关于已知基点的经纬度,根据方位角和运动距离求另外一点的经纬度的主要内容,如果未能解决你的问题,请参考以下文章