Установка 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.
Дальше необходимо настроить сам сервер БД. Не желая заниматься копипастом, просто приведу ниже пару ссылок, где об этом написано вполне доходчиво.
- Англоязычная статья на hocuspokus.net .
- Её русскоязычный перевод с примечаниями на 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, и залить их на наш сервер.
Экспорт
- Запускаем утилиту PostGIS 0 Shapefile and DBF Loader Exporter (ее можно найти в пуске) и выбираем вкладку Export
- Нажимаем кнопку ‘View connection details…’ и вводим реквизиты сервера
gis-lab.info - Нажимаем “ОК”, и видим, что подключение было успешным.
- Далее нажимаем кнопку “Add table” и выбираем в всплывающем окне перечень таблиц для экспорта (в нашем случае это ru_adm3_federal и ru_adm4_region).
- Нажимаем “ОК”, теперь они отображаются в основном окне утилиты, далее нажимаем на кнопку “Export”.
- Выбираем путь, следим, чтобы выгрузка производилась в формате “.shp” (шейп-файлы):
- Появляется статус-бар, ждем окончания.
- Все выгрузилось успешно!
Теперь нужно проверить результат.
Вот и все! Задача выполнена, можно приступать к настройке отчетов в 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/
Последовательность следующая:
- routing_core.sql
- routing_core_wrappers.sql
- routing_topology.sql
- 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
Остальные скрипты запускаются аналогично.
Ну вот и все. В будущем попробую написать пост про то, как все это дело использовать при поиске наикратчайшего пути (тем более, что русской документации по этому очень сложно найти)