Установка PostgreSQL. Создание расширения для базы данных. Включение расширения PostGIS

Делали в универе командный курсовик и нужно было использовать PostGIS. Дело в том, что курсовик был взят не из списка стандартных заданий, а являлся частью одного разрабатываемого мной проекта. Так как курсовик командный, то не удивительно, что у членов команды ОС отличались. Я, конечно, не говорю, что в случае командной работы у всех должны быть разные ОС, но в нашем случае вышло именно так. В конечный список ОС попали следующие: Windows XP, Windows 7, Ubuntu и LinuxMint. Принципиальных различий в процессе установки нет. Что XP - винда, что семерка - винда. Что Ubuntu - GNU/Linux, что LinuxMint - GNU/Linux, еще и основанная на Ubuntu. И там, и там можно ставить как с бинарников, так и с исходников. К тому же в unix-подобных системах есть репозитории. В процессе работы я еще мучил с десяток дистрибутивов GNU/Linux в ознакомительных целях и как-то решил поставить PostGIS на Mandriva. Не помню почему, но почему-то пришлось повозиться несколько дольше, чем при работе с другими дистрибутивами. Исходя из этого писать про Mandriva не буду. Хотел еще поставить на Gentoo и написать об этом, но пока что совсем нет времени колупаться с ней.
Итак, заканчивая лирическое вступление, скажу, в каких ОС будет рассмотрена установка PostGIS:


Windows XP

С виндой дела обстоят достаточно просто. Скачиваем 2 бинарника и запускаем их по очереди. Первый бинарник - это сам сервер постгрес. Его можно скачать на официальном сайте . Второй бинарник - это, как подсказывает Капитан Очевидность, сама примочка PostGIS. Её можно взять . В случае с виндой разработчики PostgreSQL всё сделали на удивление хорошо. Устанавливая сам сервер, Вам еще прикрутят PgAdmin, дадут каких-то пряников и сверху положат StackBuilder. Эта штука позволяет не рыться в недрах интернета и не искать всякие другие штуки, типа PostGIS и Slony-I. Так что, возможно, Вы захотите скачать только инсталлятор сервера, а дальше заставить StackBuilder делать своё грязное дело. Вам так же никто не запрещал устанавливать всё из исходников:).
О том, как всё это дело установить, разработчики уже написали и, как в детской книжке, все проиллюстрировали. Посмотреть на это можно прямо . Единственное, что хочу заметить, так это то, что в процессе установки PostGIS галочку "Create spatial database" лучше не снимать, если Вам нравится, когда кто-то за Вас делает какую-то работу. Лично мне нравится, когда инсталлятор устанавливает за меня необходимые функции и прочее, а потом еще и делает шаблон, на основании которого можно в будущем создавать базы данных двумя-тремя щелчками мыши.
Следует заметить, что установщик содержит версию 1.5 PostGIS (или свежее). Если после его установки необходимо обеспечить поддержку баз данных с более ранними версиями PostGIS, то скачать отсюда бинарники (архив) и добавить содежимое каталогов "lib" и "share" в одноимённые каталоги Postgres (например, C:\Program Files\PostgreSQL\8.4\)


Ubuntu 11.04
В убунте далеко ходить не надо. Открыли терминал, ввели указанные ниже команды и получили то, что нам нужно, а именно: сервер, клиент, библиотеки, документацию, постгис, графическое приложение для администрирования.
sudo apt-get install postgresql-8.4 postgresql-client-8.4 postgresql-contrib-8.4 postgresql-doc-8.4 postgresql-8.4-postgis sudo apt-get install pgadmin3 Как видно из команд, версия сервера у нас выйдет 8.4. Если быть точнее, то выполнив sql-запрос
SELECT version(); в моём случае версия определилась как 8.4.8.
Дальше необходимо настроить сам сервер БД. Не желая заниматься копипастом, просто приведу ниже пару ссылок, где об этом написано вполне доходчиво.
  1. Англоязычная статья на hocuspokus.net .
  2. Её русскоязычный перевод с примечаниями на welinux.ru .

Кое-что хочу добавить от себя. Во-первых, прописывая пути каталогов, будьте внимательны к версии сервера (у Вас же необязательно версия 8.3, как в примере)
Во-вторых, в файле "pg_hba.conf" строка
# Database administrative login by UNIX sockets local all postgres ident sameuser не понравилась серверу и пришлось заменить её на эту:
local all postgres md5 Это то, что касалось установки и настройки самого сервера.

Теперь нужно настроить PostGIS (вернее даже не настроить, а прикрутить к серверу).
Создадим новый шаблон и зарегистрируем диалект на сервере:
sudo su postgres createdb postgistemplate createlang plpgsql postgistemplate При этом нас попросят ввести пароль пользователя.
Далее необходимо наполнить шаблон функциями и информацией о типах данных.
psql -d postgistemplate -f /usr/share/postgresql/8.4/contrib/postgis-1.5/postgis.sql psql -d postgistemplate -f /usr/share/postgresql/8.4/contrib/postgis-1.5/spatial_ref_sys.sql psql -d postgistemplate -f /usr/share/postgresql/8.4/contrib/postgis-comments.sql Хочу заметить, что расположение скриптов может несколько отличаться, но обычно не больее, чем на 1-2 ветки. Теперь осталось перезапустить сервер и можно приступать к работе. Для наглядности создадим через pgAdmin новый сервер. Пример того, что получилось, представлен на рисунке ниже. Как видно, присутствуют два шаблона: postgres и созданный нами postgistemplate.

Недавно столкнулся с интересной технической задачей при работе с геоаналитикой GeoQlik . На моем проекте было необходимо интегрировать огромное количество картографических данных, которые при этом постоянно обновлялись.

Решать задачу с помощью постоянной перезаливки данных на сервер GeoQlik, естественно, нерационально. А если серверов несколько, то сложность задачи растет экспоненциально. Сегодня расскажу, как можно быстро справиться с такой задачей. А именно – как поднять небольшой картографический сервер на базе PostgreSQL и PostGIS для его последующего использования сервером GeoQlik.

PostgreSQL: установка

PostGIS: установка

Установку PostGIS можно осуществить полуавтоматически через Stack Builder и непосредственно скачав пакет PostGIS. Способы установки отличаются лишь методом получения установщика PostGIS. В первом случае Stack Builder запустится сам: «Пуск/PostgreSQL 8.4/Приложение Stack Builder». Рассмотрим подробнее именно этот вариант:


Если вы решили скачать установщик PostGIS самостоятельно, то последнюю версию PostGIS можно скачать на сайте.

Ход установки:


«Create spatial database» позволяет создать пространственную базу данных автоматически. Далее мы будем рассматривать процесс создания такой базы данных вручную, не прибегая к услугам установщика PostGIS, поэтому здесь мы отметку с этого пункта снимем.


Жмем «Next» для завершения установки. На этом установка PostGIS завершена!

PostGIS: настройка базы данных


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

PostGIS: наполнение базы данных

Чтобы наполнить базу данных нужно использовать утилиту PostGIS 2.0 Shapefile and DBF Loader Exporter (она установилась вместе с расширением Postgis, которое мы ставили через Stack Builder)

В нашем случае необходимо было экспортировать данные с сервера gis-lab.info, и залить их на наш сервер.

Экспорт

  1. Запускаем утилиту PostGIS 0 Shapefile and DBF Loader Exporter (ее можно найти в пуске) и выбираем вкладку Export
  2. Нажимаем кнопку ‘View connection details…’ и вводим реквизиты сервера
    gis-lab.info
  3. Нажимаем “ОК”, и видим, что подключение было успешным.
  4. Далее нажимаем кнопку “Add table” и выбираем в всплывающем окне перечень таблиц для экспорта (в нашем случае это ru_adm3_federal и ru_adm4_region).
  5. Нажимаем “ОК”, теперь они отображаются в основном окне утилиты, далее нажимаем на кнопку “Export”.
  6. Выбираем путь, следим, чтобы выгрузка производилась в формате “.shp” (шейп-файлы):
  7. Появляется статус-бар, ждем окончания.
  8. Все выгрузилось успешно!

Теперь нужно проверить результат.


Вот и все! Задача выполнена, можно приступать к настройке отчетов в GeoQlik.

В завершение хочу дать вам один полезный ресурс, на котором можно найти административные деления всех стран.

Успехов Вам в геоаналитике!

Со времен университета зарекался никогда не влезать в ГИС и все, что с этим связано. И со времен все того же университета все эти ГИС преследуют меня постоянно:) На одном из предыдущих мест работы мне приходилось работать со связкой MapInfo + Oracle. Теперь же пришлось испытать опенсорсные проекты QuantumGIS + PostGIS.
Начнем с установки всего этого добра.

Итак по порядку.
QuantumGIS - по сути бесплатный аналог MapInfo или ArcGIS. Подробнее в википедии
PostGIS - расширение для PostgreSQL, позволяющее хранить и обрабатывать геопространственные данные. Это означает, что PostGIS сам по себе работать не будет. Ему нужна PostgreSQL. На сегодняшний день лучше ставить PostgreSQL 9.1 (посмотреть как установить и настроить можно в моей статье ).
Соответственно все остальные компоненты нужно ставить с учетом версии PostgreSQL
pgRouting - набор методов для поиска кратчайшего пути по таким алгоритмам как Дейкстры и . Более подробно с возможностями можно ознакомиться на сайте проекта

Установка PostGIS и QuantumGIS

Для тех, кто работает с ГИС в убунту существует хороший репозиторий UbuntuGIS . Добавить его несложно:

Sudo add-apt-repository ppa:ubuntugis/ubuntugis-unstable
sudo apt-get update

В этом репозитории нас интересуют PostGIS и QuantumGIS.

Sudo apt-get install postgresql-9.1-postgis
sudo apt-get install qgis

PostGIS устанавливается как расширение (extension) в PostgreSQL. Поэтому для того чтобы создать базу данных, предназначенную для хранения и обработки геопространственных данных необходимо в имеющуюся базу добавить расширение postgis. Делается это в pgAdmin. Найдите в дереве свою базу данных, а в ней узел Extensions и добавьте туда расширение postgis. Если такого расширения нет, то попробуйте обновить ветку с вашей базой данных, а если не поможет, то отсоединиться и присоединиться к серверу заново.

Установка pgRouting

pgRouting берем из репозитория команды Georepublic.

Sudo add-apt-repository ppa:georepublic/pgrouting
sudo apt-get update
sudo apt-get install postgresql-9.1-pgrouting

На сим установка pgRouting не закончилась. Необходимо в определенной последовательности выполнить специальные скрипты.
Все скрипты находятся по пути /usr/share/postlbs/
Последовательность следующая:

  1. routing_core.sql
  2. routing_core_wrappers.sql
  3. routing_topology.sql
  4. matching.sql

Можно их открыть в pgAdmin и выполнить там. Заодно можно ознакомиться с содержимым этих скриптов.
Тем, кто слишком крут для графических оболочек;) необходимо выполнить следующую последовательность команд:

Psql -U postgres -f /usr/share/postlbs/routing_core.sql
psql -U postgres -f /usr/share/postlbs/routing_core_wrappers.sql
psql -U postgres -f /usr/share/postlbs/routing_topology.sql
psql -U postgres -f /usr/share/postlbs/matching.sql

При выполнении этих команд можно отхватить ошибку

Psql: FATAL: Peer authentication failed for user "postgres"

Это означает что вы не можете выполнить эти команды на сервере, потому что у вас недостаточно прав. Тут может возникнуть некоторое замешательство: вроде SQL-команда запускается от имени администратора postgres, а в то же время не достаточно прав. Все дело в том, что сама команда psql запускается от имени вашего текущего пользователя, а он, в свою очередь, не может даже соединиться с PostgreSQL (куда уж там до выполнения каких-либо команд). Из подобной ситуации есть выход - запустить psql от имени пользователя postgres

Sudo -u postgres psql -U postgres -f /usr/share/postlbs/routing_core.sql

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



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: