Импорт planet.osm в PostgreSQL

Нашел какой-то 001_create_osm_db.rb в db\migrate…
блин, руби - жуть) раньше с ним не работал…

create еще далеко не все, нужно потом еще 49 (ну или около того) миграций наложить.

По выкладыванию схемы - сегодня только вечером сделаю, на работе позакрывали порты нафиг, не могу удаленной зайти на сервак :frowning:

Сорри, завозился и забыл про эту тему.

Ловите свежую структуру для PostgreSQL.

http://ifolder.ru/14365295

Ezhick, Спасибо Большое!)

запросы не выполняются… под виндой не хватает какого-то /usr/lib/postgresql/8.3/lib/liblwgeom
ставлю убунту под виртуалку, надоело мучаться с виндой)

Я под виндой завести это все не смог, плюнул и поставил убунту. В ней все ок. Только вот производительности моего компа под полнуй дамп планеты маловато… Видимо придется строить отдельные производные таблицы под интересующие регионы, ибо апгрейд сервера пока не планировался…

Спасибо!

Ezhick, спасибо еще раз!
Настроил базу под убунтой, постгри настроил, dump.sql залился с первого раза и без ошибок, база создана!
Попробовал импортнуть osmosis’ом кусок Москвы… получаю те же ошибки что и под виндой(((

Осмосис, кстати, заработал после небольших мучений) Ничего в нем руками не допиливал…

Импорт делаю двумя скриптами, лежат они в osmosis-0.31 в папке bin

run.sh

clear all
./osmosis --read-xml-0.6 file="test.osm" --write-pgsql-0.6 host="localhost" database="osmdb" user="postgres" password="postgres"

При запуске в ошибках получаю:

Caused by: org.postgresql.util.PSQLException: ERROR: отношение "schema_info" не существует

runnov.sh

clear all
./osmosis --read-xml-0.6 file="test.osm" --write-pgsql-0.6 host="localhost" database="osmdb" user="postgres" password="postgres" validateSchemaVersion=no

Тут получаю:

Caused by: org.postgresql.util.PSQLException: ERROR: констрейнт "pk_users" не существует

Не понимаю в чем дело… опять что-то с базой? В вашем последнем дампе schema_info нету, да и чего это такое вообще… может ее уже убрали уже, а osmosis 0.31 не последняя версия?

Кстати, а какое железо сейчас стоит? Если запрашивать небольшие области, то PostgreSQL запрос долго выполняет?
С чистым xml даже пытаться не хочу работать… это же ужас… в десятках гигов искать)

Запрос неправильный. Смотри ключ api-db.

железо - p4 - 2,52, 1.5 Гб памяти. По запросам ничего не скажу - поставил, настроил обновление и на большее просто не было времени. Но импорт .построение индексов и постгисовских колонок занял чуть ли не неделю…

UPD
попробовал простенький запрос
select way_id from way_tags where k = ‘oneway’ and v = ‘no’ limit 1000

3 секунды почти. Индекса по этим колонкам нет.

Кстати, есть ще одна схема базы под посгре - постгре+постгисовская. Строится скриптами из осомсиса (см. папку scripts в осмосисе). Там добавляются постгисовские колонки дополнительные. Вот в нее осмосис у меня импорт делает без проблем!

В папке scripts нашел
pgsql_simple_schema_0.6.sql – Это я так понял структура самой базы, остальные не знаю для чего
pgsql_simple_schema_0.6_action.sql
pgsql_simple_schema_0.6_bbox.sql
pgsql_simple_schema_0.6_linestring.sql

Там есть schema_info, кстати!
Но структура маленькая, нету функций, например… типы какие-то не известны.
Я так понял это накидывается на postgis’овскую базу… в вашем дампе функции были. поэтому я взял отправил на базу запросы из dump.sql, а потом из pgsql_simple_schema_0.6.sql
чего-то там было, ошибки какие-то что мол уже существует…

при импорте словил

Caused by: org.postgresql.util.PSQLException: ERROR: нельзя удалить констрейнт pk_users на таблица users по причине наличия зависимых объектов

на schema_info вроде уже не жалуется.

У девелоперов нету образа виртуальной машины с установленным сервером?
Где-то в вики проскакивало что-то подобное… нийти не могу

pgsql_simple_schema_0.6.sql - это отдельная схема! Ее не надо накатывать на ту, что я дал. Это разные схемы!!!

pgsql_simple_schema_0.6_action.sql
pgsql_simple_schema_0.6_bbox.sql
pgsql_simple_schema_0.6_linestring.sql

Добавляют постгисовские колонки и индексы к базе на основе pgsql_simple_schema_0.6.sql.

Сильно сомневаюсь, что там будет что-то свежее :frowning:

Вот тему нашел… VMWare Image
там по шагам расписана установка и настройка сервака, попробую)

Не надо пробовать!

Там используется osm2pgsql который режет инфу под мапник, схема будет неполная. Я точно не знаю, что он режет ,но это будет совсем не зеркало родной базы!!!

Пытаюсь поднять рабочую копию базы с помощью осмосиса, но столкнулся с проблемой, с которой тут как раз пытаются помочь.

Caused by: org.postgresql.util.PSQLException: ERROR: constraint "pk_users" does not exist

Взял дамп.скл, который предложил Ежик. Проблема осталась :frowning:
Взял транк из свна, поправил исходники немного (осмосис дропает индексы перед началом импорта), пересобрал, запустил… Свалилось на импорте пользователей

Дальше править исходники не стал - слишком разные схемы базы.

Вопрос - под какую версию АПИ выложен дамп.скл? --write-pgsql-0.5 не пошел, --write-pgsql-0.6 тоже не пошел, что удивительно но и простой write-pgsql не работает.

Еще вопрос - я так понимаю, что единственным адекватным способом поставить себе копию базы - это руби и скрипты? Взять схему базы и просто влить туда данные осмосисом не получится? Мне не нужна полная копия земля.осм, нужен лишь небольшой кусочек.

Мы для схожей задачи использовали osm2pgsql. Правда список полей не правили, но там ест файл default.style - как я понимаю с помощью него можно настроить набор полей БД.
Вполне работоспособный вариант - проверено.

Это схема не под PostGIS tasks, а под ApiDB

http://wiki.openstreetmap.org/wiki/Osmosis/DetailedUsage#–write-apidb_.28–wd.29

Если нужна заведомо рабочая под постгис и осмосис - выложу. Но она сильно отличается от родной базы. Но работает.

Толи я был невнимателен до этого, или это новые изменения и osm2pgsql нарезает кусками обычную цельную линию? Т.е. с отношением мультиполигона понятно, надо клеить, а тут-то я не совсем понял зачем. Ну или я чего-то начудил:)

Ребят, что за ошибка при импорте на PostGISQL?

failed: ERROR:  type "geometry" does not exist

Добавьте расширение PostGIS в импортирующую базу.