Ilis, займёшься?)
Ненене! Я рисовать люблю.
Всё-таки скажите, у нас есть более-менее локальный держатель planet.osm? Чтобы не получать отлупы от ОСМ.орг, а сидеть локально и делать что угодно на пользу локальному обществу.
Котяр, а какие данные вообще нужны? Например, если маршруты, то можно брать гислабовский дамп, и фильтровать его осмозисом. Примерная схема:
Качаем дамп
wget http://gis-lab.info/data/osm/russia/rus.osm.bz2
Распаковываем чем-нибудь
…
Вырезаем, оставляя только relations route=*
osmosis --read-xml file=“rus.osm” --tag-filter accept-relations route=* --tag-filter reject-nodes --tag-filter reject-ways --write-xml file=“rus_routes.osm”
Колбасится меньше пяти минут, в результате получается файлик на пять мегов с отношениями маршрутов. Можно условия для осмозиса другие задавать. Не пригодится?
gps-Max, во-первых, дампы при поточной обработке никто не распаковывает.
Во-вторых, думаю, эта информация пригодится Stud555, который вызвался заняться этим вопросом
Нужен, в общем-то, эквивалент ксапи-запроса http://xapi.openstreetmap.org/api/0.6/relation[route=bus|trolleybus|tram|share_taxi]
Ну вообще да, это лишний шаг. Я просто привык каждый этап проверять глазами и джосмом, а при отлаженной работе это необязательно.
Ксапи в последнее время работает очень медленно, нет возможности сравнить результаты. Но вообще должно быть оно, сухой остаток в виде отношений route=*. Можно потом разбить по видам транспорта, либо выкинуть ненужные, что будет проходить почти мгновенно.
Глянь сам, насколько результат отличается от ксапишного:
http://rapidshare.com/files/419012737/rus_routes.osm
http://www.sendspace.com/file/cczgp9
(одно и то же, osm-файлик на 5 мегов, осмозисовский результат)
Посмотрел файл. Отличие одно. У тебя собраны ТОЛЬКО релейшаны, а ксапи выдает и сами веи. Кто из нас прав зависит от того, что нужно рисующиму скрипту. (релейшаны или веи+релейшаны).
Мапник (а рендерит дальше именно он) хочет видеть линии и точки. Исходя из этого, нужны ноды+веи+релейшены.
Это хуже. Как отфильтровать лишние, не входящие в заданные отношения, точки и линии, я пока не знаю, но строчкой “в лоб” там точно не обойдется, нет у осмозиса таких опций.
Нужны какие-то обходные пути. C ходу придумался пока только такой метод - парсить файл с отношениями, и тянуть их поодиночке, а после сливать в кучу. Это медленно и криво, и возможно есть лучшие способы.
Надо решать этот вопрос кардинально, а не какими-то обходными средствами.
В осмозисе есть ключ --used-node, который позволяет выбросить все точки, не входящие в заданные линии. Однако, если подняться на уровень выше, пока нет ключа --used-way, аналогичным образом отфильтровывавшего бы линии, не входящие в заданные отношения. Если бы он был, задача получения маршрутов со всем содержимым решалась бы точно так же в одну строчку.
Нужен человек с нехромающим английским, способный донести это пожелание до разработчиков осмозиса.
Доработал немного свой плугин: http://files.mail.ru/2EE5H6
Ключик --uwn с параметром usedByTag=false оставит только way и node участвующие в relation
Никак не привыкну, что все вокруг крутые разработчики
Да, всё работает. Крутится 10 минут вместо пяти, правда.
Сергей, а можно поподробнее про плугин, чего он еще умеет делать и вообще?
Он простой как гвоздь. Там сейчас ровно один фильтр (used-way-and-node, сокращённо uwn), сделан на основе стандартного used-node.
Выкидывает все неиспользуемые way и node. Если usedByTag=false, то использование считается только от вхождения в relation. В режиме usedByTag=true (по умолчанию) наличие любого тега (кроме created_by) так же считается использованием.
Если не секрет, а для какой программы плагин?
Для osmosis
Понятно. Спасибо.
Он простой как гвоздь. Там сейчас ровно один фильтр (used-way-and-node, сокращённо uwn), сделан на основе стандартного used-node.
Выкидывает все неиспользуемые way и node. Если usedByTag=false, то использование считается только от вхождения в relation. В режиме usedByTag=true (по умолчанию) наличие любого тега (кроме created_by) так же считается использованием.
Параметр usedByTag зрительно выбивается из стиля конфигов осмозиса, но это пофиг.
А не думали этот функционал замерджить в основную ветку? Ну или просто плагин куда-то вывесить. А то народ так и останется в неведении, что есть такая полезная штука.
Если не секрет, а для какой программы плагин?
http://wiki.openstreetmap.org/wiki/Osmosis
http://wiki.openstreetmap.org/wiki/Osmosis/Detailed_Usage
ну и там по ссылкам. Вкратце - обработчик данных OSM, скачанных локально в одноимённом формате или в БД Установка совершенно простая, без всяких заморочек. Данные удобнее всего брать с гислаба, хотя, конечно, можно и с xapi, и с редакторов.
Файл плагина Сергея кидаешь в подпапку plugins, после чего начинает работать описанная им выше команда. Скрипт целиком, уточненная примерная версия из целых двух строчек:
Качаем дамп
wget http://gis-lab.info/data/osm/russia/rus.osm.bz2
Вырезаем, оставляя только relations route=*
osmosis --read-xml file=“rus.osm.bz2” --tag-filter accept-relations route=* --uwn usedByTag=false --write-xml file=“rus_routes.osm”
На всякий случай, можно сравнить еще раз результаты.
Сегодня закинул часть остановок своего района и буду рисовать новые маршруты (в ожидании задания на дальнейшую работу), надеюсь latlon.org в ближайшее время все это дело отрисует
ну и там по ссылкам. Вкратце - обработчик данных OSM
Что такое Osmosis я себе представляю, сам им пользуюсь. Я просто сразу не вкурил, что плагин к нему.
Sergey Astakhov
Подскажите в какую папку кидать рлагин?
У меня в osmosis такой папки нет, её нудно самому создать или всетаки плагин в lib кидать?
Вот такие мы потеряхи :).