Я просто играю с набором данных моего региона, созданным JOSM. Я переместил его в базу данных mySQL с схемой 0,6 API с использованием Osmosis, и теперь я отчаянно пробовал следующее:OpenStreetMap Поиск близости с использованием mySQL
Я хочу получить все улицы города. AFAIK в данных OSM нет тега/отношения, чтобы определить это, поэтому я попробовал его с помощью поиска по близости, чтобы получить все узлы в радиусе вокруг узла, представляющего центр города.
Большую часть времени я смотрел на подходах here
То, что я получил это следующий SQL-код, который должен получить мне ближайших 100 узлов вокруг узла с идентификатором 36187002 и в радиусе 10 км.
set @nodeid = 36187002;
set @dist = 10;
select longitude, latitude into @mylon, @mylat from nodes where [email protected] 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 lats/lons умножаются на 10.000.000, и я не знаю, как я могу исправить эту функцию, чтобы она работала.
Есть идеи по этому вопросу? Все решения/альтернативы очень приветствуется!