Я просто играю с набором данных моего региона, созданным JOSM. Я переместил его в базу данных mySQL со схемой API 0.6 с помощью Osmosis, и теперь я отчаянно пытаюсь сделать следующее:
Я хочу заполучить все улицы города. AFAIK нет тега / отношения в данных OSM для определения этого, поэтому я попробовал использовать поиск по близости, чтобы получить все узлы в радиусе вокруг узла, представляющего центр города.
В большинстве случаев я рассматривал подходы здесь
Я получил следующий код SQL, который должен предоставить мне ближайшие 100 узлов вокруг узла с идентификатором 36187002 в радиусе 10 км.
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, и я не знаю, как исправить эту функцию, чтобы она работала.
Есть идеи по этому поводу? Все решения / альтернативы приветствуются!