Поднятие PostgreSQL 9.1 + PostGIS 1.5 в качестве зеркала БД OSM
Posted by Vanchester on 8 May 2012 in Russian (Русский). Last updated on 9 May 2012.Задача образовалась в процессе подготовки почвы для создания поисковика на основе OSM. Инструкции вроде как и есть, но: некоторые для PGSQL 8.4, некоторые для других схем и т.п. Вобщем, задача заняла время, а значит она не тривиальная.
Имеем:
-
Ubuntu Server 12.04;
-
Данные любимого края (я использую формат PBF), ну или всей планеты, если у вас есть ресурсы. Взято отсюда;
Шаг 1. Установка пакетов.
Все свежие версии пакетов есть в репозиториях, поэтому просто выполняем:
$ sudo apt-get install osmosis postgresql-9.1-postgis postgresql-contrib-9.1
Шаг 2. Создание и подготовка БД
В целом, взято отсюда: PostGIS Setup
С этого момента у нас в системе есть пользователь postgres, который имеет полные права администрирования PostgreSQL. От его имени мы создаём БД и пользователя этой БД (изначально postgres имеет пустой пароль):
$ su postgres
$ createuser –superuser gisuser
$ createdb -E UTF8 -O gisuser osm
$ exit
Теперь нужно подготовить PostGIS:
Заметка: не пренебрегайте указанием хоста при использовании psql, без использования этого ключа у меня не проходила аутентификация.
Заметка: если в вашей системе нет используемых файлов, попробуйте найти их при помощи команды locate. При этом предварительно выполнив sudo updatedb.
$ psql -h localhost -U gisuser -d snapshot -f /usr/share/postgresql/9.1/contrib/postgis-1.5/postgis.sql
$ psql -h localhost -U gisuser -d snapshot -f /usr/share/postgresql/9.1/contrib/postgis-1.5/spatial_ref_sys.sql
Устанавливаем схему базы:
$ psql -h localhost -U gisuser -d snapshot -c “CREATE EXTENSION hstore;”
$ psql -h localhost -U gisuser -d snapshot -f /usr/share/doc/osmosis/examples/pgsnapshot_schema_0.6.sql
С этого момента у нас есть абсолютно пустая база нужной структуры.
Шаг 3. Заполнение базы.
Делается единственной командой:
$ osmosis –read-pbf file=”/path/to/file.osm.pbf” –write-pgsql host=”localhost” database=”snapshot” user=”gisuser”