已知基点的经纬度,根据方位角和运动距离求另外一点的经纬度

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 计算思路

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

  2. 计算第二点的纬度,比较简单,就是, 垂直平移的距离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);
    }


以上是关于已知基点的经纬度,根据方位角和运动距离求另外一点的经纬度的主要内容,如果未能解决你的问题,请参考以下文章

(转)根据经纬度计算方位距离

计算经纬度距离方位角

已知球面经纬度求方位角和反方位角(awk一行代码实现)

已知直线终点与起点坐标 怎么两点距离

怎样根据具体地址计算经纬度 php

根据经纬度,计算距离