PostgreSQL+PostGIS+osm2pgsql

Ответить
Silentium
Активный участник
Сообщения: 114
Зарегистрирован: 20 апр 2010, 17:33
Репутация: 0

PostgreSQL+PostGIS+osm2pgsql

Сообщение Silentium » 08 дек 2010, 13:06

Добрый день!
Волнует такой вопрос. Попытался с помощью osm2pgsql пересчитать карту в PostgreSQL, которую скачал с CloudMade. После этого запустил постобработку для индексов. с помощью QGIS карта показывается.
Как теперь добавить еще одну карту? попытался запустить osm2pgsql с ключом -a. После долгого просчета попытался повторить процедуру с постпроцессом, но естественно ничего не сработало, в QGIS вижу попрежнему данные о старой стране. Сам в PostGreSQl почти не разбираюсь. Как мне удостоверится что информация о второй карте добавилась в базу, как посмотреть результат и нужно ли запускать какие нибудь скрипты для PostGreSQL для обновления индексов и тд?

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: PostgreSQL+PostGIS+osm2pgsql

Сообщение Denis Rykov » 08 дек 2010, 13:58

Что вы понимаете под словом "добавить еще одну карту"? В ту же таблицу или создать отдельно? Судя по ключу -a - вы хотите дописать новые данные в существующую таблицу. Насколько помню, раньше для использования ключа возможности дописывания данных требовалось установить какое-то расширение для PostgreSQL, точно не помню, но при его отсутствии при запуске osm2pgsql последний ругался и говорил название недостающего модуля. А проверить загрузились данные или нет - легко - просто попытайтесь найти новый объект, отсутствующий на старой карте. Пересчет пространственных индексов важен только для повышения быстродействия пространственных запросов, на доступность данных это не влияет. Кстати, наши ежедневные выгрузки в шейпы как раз основаны на использовании osm2pgsql c ключом -a.
Spatial is now, more than ever, just another column- The Geometry Column.

Silentium
Активный участник
Сообщения: 114
Зарегистрирован: 20 апр 2010, 17:33
Репутация: 0

Re: PostgreSQL+PostGIS+osm2pgsql

Сообщение Silentium » 08 дек 2010, 17:38

Вопрос поставлю по другому!
Создал 2 таблицы postgis и postgis1 для каждой карт своя бд. Через QGIS проверил POstGIS открывает слои для этих карт. Заметил что каждая таблица использует т.н. OID номер которых совпадает с номерами папок с файлами в PostgreSQL\8.4\data\base, которые в свою очередь появляются после работы osm2pgsql. Собственно можно ли както переключать базу postgis между этими OID чтобы не запускать все эти пересчеты занова? И вообще туда ли я копаю...
P.S Где почитать про ваши выгрузки поподробнее?

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: PostgreSQL+PostGIS+osm2pgsql

Сообщение Denis Rykov » 09 дек 2010, 05:35

Так давайте по-порядку. Вы пишите, что создали 2 таблицы - ок, но "для каждой карты своя бд". В чем смысл создавать для каждого слоя отдельную базу - создавайте 2 таблицы в одной базе. Всё что дальше вы написали - совсем не понятно. OID - уникальный идентификатор объекта на уровне базы, это просто поле таблицы. Что значит "переключать базу postgis между этими OID" не ясно. P.S. Алгоритм наших выгрузок пока нигде не опубликован, так как всё не доходят руки всё расписать.
Spatial is now, more than ever, just another column- The Geometry Column.

Silentium
Активный участник
Сообщения: 114
Зарегистрирован: 20 апр 2010, 17:33
Репутация: 0

Re: PostgreSQL+PostGIS+osm2pgsql

Сообщение Silentium » 09 дек 2010, 11:13

Прошу прощения, создаю 2 базы данных postgis и postgis1 для каждой страны, дублирующих таблиц я не создаю.
Ибо только так получается увидеть 2 карты, например Албании и Греции.
А непонятно мне было, собственно, почему после просчета с помощью osm2pgsql с -a карты Греции в одну бд с Албанией в QGIS при подключении PostGIS слоев выводится информация только о первой карте. Правильно ли я понимаю что там должны появляться обе страны?

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: PostgreSQL+PostGIS+osm2pgsql

Сообщение Denis Rykov » 09 дек 2010, 11:33

Silentium писал(а):Прошу прощения, создаю 2 базы данных postgis и postgis1 для каждой страны, дублирующих таблиц я не создаю.
Речь идёт не о дублирующихся таблицах, а о том, зачем вы создаете для каждого слоя отдельную базу? Создайте одну PostGIS базу данных и в ней в отдельных таблицах храните отдельные слои.
Silentium писал(а):А непонятно мне было, собственно, почему после просчета с помощью osm2pgsql с -a карты Греции в одну бд с Албанией в QGIS при подключении PostGIS слоев выводится информация только о первой карте.
Даже если вы дописываете информацию в ту же базу, но в другую таблицу, вы и не увидите никаких изменений, если будете смотреть первую таблицу.
Spatial is now, more than ever, just another column- The Geometry Column.

Silentium
Активный участник
Сообщения: 114
Зарегистрирован: 20 апр 2010, 17:33
Репутация: 0

Re: PostgreSQL+PostGIS+osm2pgsql

Сообщение Silentium » 09 дек 2010, 13:55

У меня фиксированный набор таблиц,который создается при запуске osm2pgsql я вручную таблицы не создаю. Выглядят они примерно так (см. вложение)
Вложения
postgre1.JPG
postgre1.JPG (94.61 КБ) 14431 просмотр

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: PostgreSQL+PostGIS+osm2pgsql

Сообщение Denis Rykov » 09 дек 2010, 18:14

Хорошо, кажется, я вас наконец-то понял :) То есть вы хотите дописать информацию в существующую базу, ok. А можно посмотреть вывод osm2pgsql при попытке дописать данные? Всё проходит гладко или он на что-то ругается?
Spatial is now, more than ever, just another column- The Geometry Column.

Silentium
Активный участник
Сообщения: 114
Зарегистрирован: 20 апр 2010, 17:33
Репутация: 0

Re: PostgreSQL+PostGIS+osm2pgsql

Сообщение Silentium » 10 дек 2010, 13:08

Ну вот например, что у меня выводится при попытке добавить карту России к уже имеющейся
Вложения
osm2pgsql.JPG
osm2pgsql.JPG (57.25 КБ) 14411 просмотров

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: PostgreSQL+PostGIS+osm2pgsql

Сообщение Denis Rykov » 10 дек 2010, 15:44

О чём я и говорил - нужен модуль intarray, установите его в вашу базу. Просто откройте SQL файл /share/contrib/_int.sql в pgAdmin-e и выполните его.
Spatial is now, more than ever, just another column- The Geometry Column.

Silentium
Активный участник
Сообщения: 114
Зарегистрирован: 20 апр 2010, 17:33
Репутация: 0

Re: PostgreSQL+PostGIS+osm2pgsql

Сообщение Silentium » 13 дек 2010, 13:15

Спасибо заработало!
А подскажите, возможен ли перенос базы на другой компьютер? Т.е миграция осуществляется посредством дампа существующей базы или как то еще?

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: PostgreSQL+PostGIS+osm2pgsql

Сообщение Denis Rykov » 13 дек 2010, 14:12

Да, нужно сделать дамп, например с помощью утилиты pg_dump, идущей в комплекте с PostgreSQL:

Код: Выделить всё

pg_dump --host localhost --port 5432 --username postgres --format plain --column-inserts --verbose --file "dump.sql" --schema public "yourdb"
Spatial is now, more than ever, just another column- The Geometry Column.

Silentium
Активный участник
Сообщения: 114
Зарегистрирован: 20 апр 2010, 17:33
Репутация: 0

Re: PostgreSQL+PostGIS+osm2pgsql

Сообщение Silentium » 14 дек 2010, 10:01

Благодарю за помошь

Ответить

Вернуться в «PostGIS/PostgreSQL»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 24 гостя