已知一个点的纬度和经度,如何计算距离100米的位置?

12

我想知道是否可以在已知经纬度的情况下计算给定点周围100米的距离。我有一个MySQL数据库中的坐标,并希望知道特定坐标是否在距离给定点100米的范围内。

我正在使用Android平台。我只知道自己所在位置(当前位置)的一个坐标(经度和纬度),并希望设置距离范围(比如100米)。

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


你在哪个平台上进行计算?是MySql还是JavaScript? - Brad
在100米处,你可以(a)假设地球在那个尺度上是平的,并使用已经提供的相当简单的公式,或者(b)关心高度,在这种情况下,你需要一个GIS数据库。 - derobert
3个回答

8

7

输入的内容包括_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

我知道这篇文章很久以前就贴出来了-但是书面价值代表什么,即) * 60 * 1.1515 * 1.609344 * 1000)作为米 - 1.1515是什么? 1.609344是什么?等等。 - tember
1
@tember 1.6是英里/公里转换器。60是一度的分钟数;1000是一公里的米数;1.1515是一个海里中的英里数。事实:一个海里是赤道上一分纬度的长度。更多解释请参见此链接:https://dev59.com/j3RC5IYBdhLWcg3wK9yV - Pentium10
这个答案是正确的。我进行了测试,它运行良好。 - nntona
为什么要计算,当你可以通过差异来检查它呢? - iWasCloud

4
如果有人仍在寻找答案,计算距离很简单(确切地获取方向很难计算,如果有人知道简单的答案请添加)。因此,检查您的纬度-经度值之间的差异,将十进制度数的变化转换为0.001表示111米的距离。检查纬度和经度的十进制度数变化最大为0.001,将在您的点周围绘制一个111米半径圆。例如,您的起始点是A(Lat1,Lng1)。您要测试的点是B(LatB,LngB),C(LatC,LngC)...... 如果:(Lat1-0.001)
十进制度参考 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 毫米

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接