当纬度和经度是已知点时,计算100米距离

Sil*_*der 11 mysql android geocoding distance

我想知道是否有可能计算出具有已知纬度和经度的给定点周围100米的距离.我在MySQL数据库中有一些坐标,想要知道特定坐标是否位于给定点的100米范围内.

我正在使用Android平台.我只知道我所站立的一个坐标(经度和纬度)(当前位置),我想设置距离范围(比如说100米).

我有更多的坐标保存在数据库中,并想计算数据库中保存的其他点是否在距我当前位置100米范围内.我不知道我是否可以在我的应用程序中使用GIS数据库.

bas*_*rat 8

给出纬度和经度的两点之间距离的完整代码http://www.movable-type.co.uk/scripts/latlong.html


Pen*_*m10 5

鉴于输入是_LATITUDE,_LONGITUDE_METERSRANGE

SELECT *, 
       ( ( ( Acos(Sin(( _LATITUDE * Pi() / 180 )) * Sin(( 
                  ` LATITUDE `* Pi() / 180 )) + 
                    Cos 
                      (( 
                        _LATITUDE * Pi() / 180 )) * Cos(( 
                    ` LATITUDE `* Pi() / 180 )) * 
                    Cos 
                      (( 
                        ( 
                             _LONGITUDE - ` LONGITUDE ` ) * Pi() / 180 ))) ) * 
           180 / Pi 
           () 
         ) * 60 * 1.1515 * 1.609344 * 1000 ) AS METERS 
FROM   MYTABLE 
WHERE  METERS <= _METERSRANGE
Run Code Online (Sandbox Code Playgroud)


Vik*_*vda 5

如果有人仍在寻找答案,计算距离很简单(精确获取方向很难计算,如果有人知道简单的答案,请添加)

因此,检查经纬度值之间的差异,将十进制更改为 0.001 意味着 111m 距离。检查纬度和经度到十进制的变化最大 0.001 将在您的点周围绘制一个半径为 111m 的圆。

前任。您的起点是 A(Lat1,Lng1)。您要测试的点 B(LatB,LngB) , C(LatC,LngC) .....

if: (Lat1 - 0.001) < LatB < (Lat1 + 0.001) && (Lng1 - 0.001) < LngB < (Lng1 + 0.001) == True // B 点在 100m 半径内。

if: (Lat1 - 0.001) < LatC < (Lat1 + 0.001) && (Lng1 - 0.001) < LngC < (Lng1 + 0.001) == False // 点 C 不在 100m 半径内。

十进制度参考https://en.wikipedia.org/wiki/Decimal_ Degrees

小数 距离
0 1.0 111 公里
1 0.1 11.1公里
2 0.01 1.11 公里
3 0.001 111米
4 0.0001 11.1米
5 0.00001 1.11米
6 0.000001 0.111米
7 0.0000001 1.11厘米
8 0.00000001 1.11毫米