LBS基础信息
通过LBS采集可以获取到经度和纬度,由于地球是圆的,其实经纬度代表的是的是角度,而非平面坐标。
统一常用名称如下:
名称 | 中文含义 | 英文1 | 英文2 | 样例 |
---|---|---|---|---|
经度 | 方向-垂直 | longitude | meridian | 106.6866 |
纬度 | 方向-水平 | latitude | paralleld | 26.5477 |
高德地图定位网址:(经纬度查询106.6866,26.5477)
https://lbs.amap.com/console/show/picker
两点之间计算距离-精确到千米保留3位小数
1.欧式距离:虽然经纬度是角度,但抽象看成平面坐标,同样能实现距离
round(sqrt(power((meridian_work-meridian_submit),2)+power((parallel_work-parallel_submit),2))*100000/1000.0,3) as euc_dst
2.弧长距离:通过地球的半径结合角度计算弧长距离
round(6378.137*2*asin(sqrt(power(sin((parallel_submit*pi()/180.0-parallel_work*pi()/180.0)/2),2)+cos(parallel_submit*pi()/180.0)*cos(parallel_work*pi()/180.0)*power(sin((meridian_submit*pi()/180.0-meridian_work*pi()/180.0)/2),2))),3) as lbs_dst
l = n(圆心角)× π(圆周率)× r(半径)/180=α(圆心角弧度数)× r(半径)
Distance = 圆心角*Pi*R/180
圆心角计算可以使用Haversine:
haversin(d/R)=haversion(LatB-LatA)+cos(LatA)*cos(LatB)*haversion(LonB-LonA)
其中
haversin(圆心角)=sin2(圆心角/2)=(1-cos(圆心角))/2
所以
圆心角=2*开平方(haversin(圆心角))
为方便可以提前将常数Pi/180融入角度,即为常见的java代码
角度距离比较复杂,参考文献:
https://www.cnblogs.com/ycsfwhh/archive/2010/12/20/1911232.html
https://www.cnblogs.com/zhoug2020/p/8993750.html