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

发布于 2024-10-07 15:40:45 字数 248 浏览 4 评论 0原文

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

我使用的是Android平台。我只知道我所站立的位置(当前位置)的一个坐标(经度和纬度),并且我想设置距离范围(例如 100 米)。

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

I want to know if it is possible to calculate a 100 meter distance around a given point with a known latitude and longitude. I have some coordinates in a MySQL database and want to know if a specific coordinate lies in 100 meter range from a given point.

I am using the Android platform. I know only one coordinate (Longitude and Latitude) where I am standing (current location) and I want to set the distance range (say 100 meters).

I have more coordinates saved in the database and want to calculate if the other points saved in the database are in 100 meter range from my current location or not. I don't know if I can use GIS database in my application.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

嘿咻 2024-10-14 15:40:45

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

A complete code for calculating the distance between two points given the latitude and longitude http://www.movable-type.co.uk/scripts/latlong.html

西瓜 2024-10-14 15:40:45

给定输入为 _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

Given input is _LATITUDE, _LONGITUDE and _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
走过海棠暮 2024-10-14 15:40:45

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

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

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

if: (Lat1 - 0.001) <纬度B (Lat1 + 0.001) && (Lng1-0.001)< LngB < (Lng1 + 0.001) == True // B 点半径为 100m。

如果:(Lat1 - 0.001) <纬度C < (Lat1 + 0.001) && (Lng1-0.001)<液化天然气碳< (Lng1 + 0.001) == False // C 点不在 100m 半径内。

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

十进制距离
01.0111公里
10.111.1公里
20.011.11公里
30.001111 m
40.000111.1 m
50.000011.11 m
60.0000010.111 m
70.00000011.11 cm
80.000000011.11毫米

if someone still looking for answer, calculating distance is simple ( getting direction precisely is hard to calculate, if someone knows simple answer for that please do add)

So check difference between your lat-long values, change in decimal degrees to 0.001 means 111m distance. checking both latitude and longitude to decimal degrees change max 0.001 will draw a 111m radius circle around your point.

Ex. your starting point is A(Lat1,Lng1). points you want to test B(LatB,LngB) , C(LatC,LngC) .....

if: (Lat1 - 0.001) < LatB < (Lat1 + 0.001) && (Lng1 - 0.001) < LngB < (Lng1 + 0.001) == True // point B is in 100m radious.

if: (Lat1 - 0.001) < LatC < (Lat1 + 0.001) && (Lng1 - 0.001) < LngC < (Lng1 + 0.001) == False // point C is Not in 100m radious.

Decimal degrees reference https://en.wikipedia.org/wiki/Decimal_degrees

decimaldegreesdistance
01.0111 km
10.111.1 km
20.011.11 km
30.001111 m
40.000111.1 m
50.000011.11 m
60.0000010.111 m
70.00000011.11 cm
80.000000011.11 mm
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文