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