【发布时间】:2011-02-28 08:04:38
【问题描述】:
我只是在玩由 JOSM 生成的我所在地区的数据集。我使用 Osmosis 将它移到了带有 0.6 API 方案的 mySQL DB 中,现在我正在拼命尝试以下方法:
我想获得一个城市的所有街道。 AFAIK OSM 数据中没有标签/关系来确定这一点,所以我尝试使用邻近搜索来获取代表市中心的节点周围半径内的所有节点。
大部分时间我都在看方法here
我得到的是以下 SQL 代码,它应该让我在 id 为 36187002 的节点周围和半径 10 公里内获得最近的 100 个节点。
set @nodeid = 36187002;
set @dist = 10;
select longitude, latitude into @mylon, @mylat from nodes where id=@nodeid limit 1;
SELECT id, ( 6371 * acos( cos( radians(@mylon) ) * cos( radians( latitude ) ) *
cos( radians( longitude ) - radians(@mylat) ) + sin( radians(@mylon) ) * sin( radians( latitude ) ) ) )
AS distance
FROM nodes HAVING distance < @dist ORDER BY distance LIMIT 0 , 100;
嗯..它不起作用。 :( 我想主要问题是 OSM 经纬度乘以 10.000.000,我不知道如何纠正此功能以使其正常工作。
对此有什么想法吗?非常欢迎所有解决方案/替代方案!
【问题讨论】:
标签: mysql geo openstreetmap