我目前在mysql数据库中的位置不到一百万个,都有经度和纬度信息.
我试图通过查询找到一个点和许多其他点之间的距离.它没有我想要的那么快,尤其是每秒100次点击.
是否有更快的查询或可能比mysql更快的系统?我正在使用此查询:
SELECT
name,
( 3959 * acos( cos( radians(42.290763) ) * cos( radians( locations.lat ) )
* cos( radians(locations.lng) - radians(-71.35368)) + sin(radians(42.290763))
* sin( radians(locations.lat)))) AS distance
FROM locations
WHERE active = 1
HAVING distance < 10
ORDER BY distance;
Run Code Online (Sandbox Code Playgroud)
注意:提供的距离以英里为单位.如果您需要公里数,请使用6371而不是3959.
我从这个页面中抓取了一个邮政编码数据库及其经纬度等 .它有以下字段:
ZIP,LATITUDE,LONGITUDE,CITY,STATE,COUNTY,ZIP_CLASS
数据在文本文件中,但我将其插入MySQL表中.我现在的问题是,我如何利用上面的字段来计算用户可以在网站上输入的两个邮政编码之间的距离?PHP中的工作代码将不胜感激
所以:我有以下功能,改编自在线找到的公式,它采用两个纬度/经度坐标,并以英里(沿着球形地球)找到它们之间的距离:
public static double distance (double lat1, double lon1, double lat2, double lon2) {
double theta = toRadians(lon1-lon2);
lat1 = toRadians(lat1);
lon1 = toRadians(lon1);
lat2 = toRadians(lat2);
lon2 = toRadians(lon2);
double dist = sin(lat1)*sin(lat2) + cos(lat1)*cos(lat2)*cos(theta);
dist = toDegrees(acos(dist)) * 60 * 1.1515 * 1.609344 * 1000;
return dist;
}
Run Code Online (Sandbox Code Playgroud)
据我所知,这很好用.
我需要的是第二个函数,它使用完全相同的地球几何模型,取一个纬度/经度对[A],航向和距离,并输出一个新的纬度/经度对[B],使得如果你从点[A]开始,并且在给定的航向上行驶了给定的距离,你就会在点[B]处结束.
这就是我的几何技能让我完全发挥作用的事实:)
任何帮助将非常感激!
谢谢,-Dan
我想知道是否有可能计算出具有已知纬度和经度的给定点周围100米的距离.我在MySQL数据库中有一些坐标,想要知道特定坐标是否位于给定点的100米范围内.
我正在使用Android平台.我只知道我所站立的一个坐标(经度和纬度)(当前位置),我想设置距离范围(比如说100米).
我有更多的坐标保存在数据库中,并想计算数据库中保存的其他点是否在距我当前位置100米范围内.我不知道我是否可以在我的应用程序中使用GIS数据库.