Начнем с установки всего этого добра.
Итак по порядку.
QuantumGIS - по сути бесплатный аналог MapInfo или ArcGIS. Подробнее в википедии
PostGIS - расширение для PostgreSQL, позволяющее хранить и обрабатывать геопространственные данные. Это означает, что PostGIS сам по себе работать не будет. Ему нужна PostgreSQL. На сегодняшний день лучше ставить PostgreSQL 9.1 (посмотреть как установить и настроить можно в моей статье Установка и настройка PostgreSQL 9.1 в Ubuntu).
Соответственно все остальные компоненты нужно ставить с учетом версии PostgreSQL
pgRouting - набор методов для поиска кратчайшего пути по таким алгоритмам как Дейкстры и A*. Более подробно с возможностями можно ознакомиться на сайте проекта
Установка 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
Остальные скрипты запускаются аналогично.
Ну вот и все. В будущем попробую написать пост про то, как все это дело использовать при поиске наикратчайшего пути (тем более, что русской документации по этому очень сложно найти)