我只是在玩 JOSM 生成的我所在地区的数据集。我使用 Osmosis 将它移到了带有 0.6 API 方案的 mySQL DB 中,现在我正在拼命尝试以下操作:
我想得到一个城市的所有街道。AFAIK OSM 数据中没有标签/关系来确定这一点,所以我尝试使用邻近搜索来获取代表市中心的节点周围半径内的所有节点。
大多数时候我都在看这里的方法
我得到的是以下 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,我不知道如何更正此函数以使其工作。
有什么想法吗?非常欢迎所有解决方案/替代方案!