pgsql2osm

Начал ваять скриптик для экспорта из базы PostgreSQL+PostGIS в osm xml. Думаю, все должно получиться. Скорость радует - выборка всех нодов в пределах границы Москвы и выборка всех тэгов для них занимает меньше 5 минут на моем не самом быстром сервачке. По сравнению со скачиванием из ксапи - небо и земля. А если еще немного помутить с индексами то, думаю, будет еще быстрее.

Это первый шаг.

Второй шаг - контроль целостности релейшенов. Думаю реализовать его следующим образом: после того как сформирован список нодов и путей скачиваются все релейшены, в которых участвуют эти ноды и пути, из них берутся все включенные в них ноды и пути, дорбавляются в первоначально полученый список. Список чистится от повторов. После чего чистится список релейшенов - там тоже будут повторы. После чего готовится итоговый файл.

С радостью заслушаю критику, предлоожения, любые идеи на тему.

Мне думается, что приложение может быстро завоевать популярность, если его выпускать и обновлять от версии к версии и в .exe - варианте. (а на каком языке скриптик?)

Как вы собираетесь его распространять??? Он будет работать с локальной копией базы ОСМ. Я планирую сделать это онлайн-приложением (если удастся добиться высокой скорости работы) либо сделать схему работы такой, что пользователь вводит параметры запроса (изначально - только ббокс) и через некоторое время (после отработки его запроса, помещаемого в очередь на обработку) получает ссылочку на скачивание результата.

Технической возможности распространять скрипт не вижу - доступ извне к базе я, естественно, открывать не собираюсь. А база весит за 200 Гб. С дополнительными индексами - за 300.

Скрипт пишется на пхп.

А может кто-нибудь на пальцах объяснить несведующему зачем он вообще нужен

+1

Чтобы иметь возможность оперативно выкачать интересующую вас область произвольной конфигурации, не слишком напрягая “основной” osm-сервер (за излишнюю активность, говорят, даже могут забанить).

Понятно, т.е. вы хотите сделать альтернативный сервер osm api? Использовать планируете planet.osm? А накколько такие данные будут актуальными? Если я не ошибаюсь planet.osm обновляется раз в неделю…

Из чего сделан вывод об использовании palnet.osm???

а как обходится тот факт, что в постгрес грузятся данные лишь выборочно?
или используется собственный метод импорта / схема базы, отличная от мапниковской? :slight_smile:

Я так понимаю речь идет не об мапниковской схеме, а о схеме аналогичной осмосисовской или из rails port. Судя по размеру базы грузить ее себе хотят всю.
Вобщем ждем и надеемся. Хотелось бы еще поддержку целостности релейшнов, в т.ч. и вложенных, то есть релейшн в релейшн)
Еще хочется, чтобы можно было скрипт попросить поставить тег какой-то, который говорил бы как относится объект к выбранной области - целиком внутри, частично внутри, за пределами.

База полная, то есть тот из двух вариантов постгрешной базы базы, который осомсис создает под связку постгре+постгис. Вся планета. Грузить я ее не хочу, а уже загрузил и она уже работает. Актуальность максимально возможная, то есть 4 часа отставания от ОСМ, вызванные четырехчасовой задержкой публикации часовых дифов. (На минутные дифы переходить не планирую - там слишком часто ошибки.)

Контроль целостности релейшенов планируется, в том числе и вложеных. Надеюсь что на этой неделе будет время заняться скриптом вплотную, пока только начал делать первые скрипты запросов, выборка элементов в пределах ббокса. Это работает, работает шустро. Насколько шустро будет работать выборка по полигону с большим числом вершин - пока не знаю, очень надеюсь на мощь постгиса и пространственных индексов.

Насчет дополнительных тэгов для объектов - не совсем понял… Имеется в виду, что если объект попал на границу, то дополнительно пометить, что его часть ушла за границу? Я думал работать по схеме захвата целиком объекта, даже если он за границу вышел. То есть не обрезать.

Да, я имел ввиду захват целиком до обеспечения целостности, но то что выбилось мне кажется имеет смысл пометить. То есть если вей попадает частично, то его так и пометить, а ноды этого вея которые вышли за пределы мометить как не попавшие, но в дамп включить.

Уф… Ну это следующим этапом. Сначала надо освоить просто экспорт и контроль целостности.

Ну не через api же грузить 6Гб.

Ну вот, planet + дифы. Хотя я дилетант в этом вопросе, извините если что-то не так понял.

Первоначальным источником для локальной БАЗЫ является planet.osm, но обновляться это будет уже в базе, соответственно не раз в неделю, а раз в час.