当经纬度为已知点时计算100米距离
Posted
技术标签:
【中文标题】当经纬度为已知点时计算100米距离【英文标题】:Calculate 100 meter distance when the latitude and longitude is a known point 【发布时间】:2011-05-24 03:53:33 【问题描述】:我想知道是否可以计算已知纬度和经度的给定点周围 100 米的距离。我在 mysql 数据库中有一些坐标,想知道特定坐标是否位于给定点的 100 米范围内。
我使用的是安卓平台。我只知道我站立的一个坐标(经度和纬度)(当前位置),我想设置距离范围(比如 100 米)。
我在数据库中保存了更多坐标,并想计算数据库中保存的其他点是否在我当前位置的 100 米范围内。我不知道我是否可以在我的应用程序中使用 GIS 数据库。
【问题讨论】:
你在什么平台上做计算? MySql 还是 javascript? 在 100m 处,您可以 (a) 假设地球在该比例尺上是平的,并使用几个人已经给出的相当简单的公式,或者 (b) 关心高度,在这种情况下,您需要地理信息系统数据库。 【参考方案1】:给定经纬度计算两点距离的完整代码http://www.movable-type.co.uk/scripts/latlong.html
【讨论】:
【参考方案2】:给定的输入是_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.6 是英里/公里转换器。 60 是一个学位的分钟数; 1000是一公里的米数; 1.1515 是海里的法定英里数。事实:一海里是赤道纬度一分钟的长度。更多解释请参见:***.com/questions/389211/… 这个答案是正确的。我测试了它,它工作正常。 既然可以通过差值检查,为什么还要计算呢?【参考方案3】:如果有人还在寻找答案,计算距离很简单(精确获取方向很难计算,如果有人知道简单的答案,请添加)
因此请检查您的经纬度值之间的差异,十进制度数更改为 0.001 表示距离为 111 米。检查纬度和经度到十进制度的变化最大 0.001 将在您的点周围绘制一个 111m 半径的圆。
例如。您的起点是 A(Lat1,Lng1)。您要测试的点 B(LatB,LngB) , C(LatC,LngC) .....
if: (Lat1 - 0.001)
if: (Lat1 - 0.001)
十进制度参考https://en.wikipedia.org/wiki/Decimal_degrees
decimal | degrees | distance |
---|---|---|
0 | 1.0 | 111 km |
1 | 0.1 | 11.1 km |
2 | 0.01 | 1.11 km |
3 | 0.001 | 111 m |
4 | 0.0001 | 11.1 m |
5 | 0.00001 | 1.11 m |
6 | 0.000001 | 0.111 m |
7 | 0.0000001 | 1.11 cm |
8 | 0.00000001 | 1.11 mm |
【讨论】:
以上是关于当经纬度为已知点时计算100米距离的主要内容,如果未能解决你的问题,请参考以下文章
Java,Mysql-根据一个给定经纬度的点,进行附近500米地点查询–合理利用算法
用java写:求地球上任意两个点之间的距离,知道这两个点的经纬度