3点定位算法快速得出某经纬度
By 小鸟游·飒
已获取的数据情况:
已知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
和实际的第四点坐标差距还是有一点的,为了方便看清距离,附上地图截图
计算偏差值:
如果是模糊定位这个距离误差其实还是可以接受的,不过能否尝试下得到他的偏移值呢?因此,我想到了,直接用两点间的经纬度差值来比较两点间距离,依据两者的差值得到一个稍微精确的值。
*注:为什么使用差值而不是比例,只能说是个人感觉应该这样...毕竟传入参数是将经纬度看成了坐标,而实际经纬度并非是这样计算的,因此只能将差值作为偏移值按经纬度来相加减。(如果用比例...那么应该是按距离来乘除比例值,相反复杂化了...)
使用直角三角形来比较可以更简单粗暴的比较经度、纬度偏差
结果出来了
0.002632:252.91 -> 2632:2529 -> 103
0.000936:104.08 -> 0936:1040 -> -104
将之前计算的第四点经纬度(伪)与偏差值相加//所有经纬度精确到小数点后6位
得到120.227431,30.213604
这次再看下距离
已经很接近了,不过相对完全的精准定位...也许还需要再想想...