【发布时间】:2011-08-15 06:30:39
【问题描述】:
我有两张桌子:
1) 一个是从安卓手机保存的位置表,由用户名、纬度、经度、日期、时间组成。
2) 另一个是我保存国家、地区、省份、邮政编码、城市、纬度、经度的表格。
我想在插入数据库之前使用表 2) 映射表 1) 的位置(lat,lng)。 看起来很简单,但问题是表 2) 的位置只是一个稳定的点,否则表 1) 的位置是遍历每个城市的点。 因此,表 1) 的位置 与表 2) 的位置不相似。
有人对这个问题有想法吗?任何公式或技术? 感谢您的帮助。
编辑:我在插入语句之前尝试了这个语句
$city = mysql_query("SELECT p.city
FROM place AS p
ORDER BY ACOS(SIN(p.lng)*SIN('".$lng."')+COS(p.lng)*COS('".$lng."')*COS(p.lat-'".$lat."'))",$con);
但是字段中的结果是Resource id #3,其他字段也这样显示。
c
【问题讨论】:
-
对于表 1 中的每个点,通过按纬度/经度对之间的最小距离排序,找到表 2 中最近的位置。您可以在您最喜欢的几何教科书或搜索引擎中查找如何计算球面距离。只需将公式插入您的查询。
-
这个公式:d = acos ( sin(x1) * sin(x2) + cos(x1) * cos(x2) * cos(y2- y1) ) * r,对吧?我会试试的,谢谢。
-
@Dan Grossman:我使用了这个公式,但结果看起来很奇怪。请参见上文,请告诉我我的错误是什么。欣赏。
-
"Resource id #3", mysql_query 返回一个资源,然后使用 $row = mysql_fetch_assoc($resource) 从该资源中读取一行,然后在 $row[' 中获取数据城市']
标签: mysql location latitude-longitude