OpenStreetMap logo OpenStreetMap

Vanchester's Diary

Recent diary entries

Задача образовалась в процессе подготовки почвы для создания поисковика на основе 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”