标签

3点定位算法快速得出某经纬度

By 小鸟游·飒

已获取的数据情况:

image.png

已知3点A,B,C的经纬度,以及3点距离未知点A的距离长度

开始测试:

将所有经纬度值*1000000、距离*10后,直接跑一次3点测距求值

//第四点120.227458, 30.213609

//最底部120.226742, 30.212379  离中心点 153.10

//最左部120.225628, 30.213784  离中心点 176.92

//最上部120.22826, 30.21472    离中心点 145.60

运行后,得到第四点值(伪)

array(2) { 

    [0]=> array(1) { 

        [0]=> float(120227328.87786) 

    } 

    [1]=> array(1) { 

        [0]=> float(30213708.959382) 

    } 

}

去掉小数点后的值再/1000000

点(伪)经纬度为120.227328,30.213708

和实际的第四点坐标差距还是有一点的,为了方便看清距离,附上地图截图

image.png


计算偏差值:

如果是模糊定位这个距离误差其实还是可以接受的,不过能否尝试下得到他的偏移值呢?因此,我想到了,直接用两点间的经纬度差值来比较两点间距离,依据两者的差值得到一个稍微精确的值。

*注:为什么使用差值而不是比例,只能说是个人感觉应该这样...毕竟传入参数是将经纬度看成了坐标,而实际经纬度并非是这样计算的,因此只能将差值作为偏移值按经纬度来相加减。(如果用比例...那么应该是按距离来乘除比例值,相反复杂化了...)

image.png

使用直角三角形来比较可以更简单粗暴的比较经度、纬度偏差

结果出来了

0.002632:252.91  ->  2632:2529  ->  103

0.000936:104.08  ->  0936:1040  ->  -104

将之前计算的第点经纬度(伪)与偏差值相加//所有经纬度精确到小数点后6位

得到120.227431,30.213604

这次再看下距离

image.png

已经很接近了,不过相对完全的精准定位...也许还需要再想想...



3点定位算法

2018-04-28 11:01
暂时关闭评论
暂无相关评论