Интернет, компьютеры, софт и прочий Hi-Tech

Подписаться через RSS2Email.ru
Руководство по PostGIS. Глава 2. Инсталляция
Назад Вперед

Глава 2. Инсталляция

Содержание

2.1. Требования
2.2. PostGIS
2.2.1.Создание пространственных баз данных, совместимых с PostGIS, с помощью шаблона разработки
2.2.2. Обновление
2.2.3. Обычные проблемы
2.3. JDBC
2.4. Загрузчик/дампер

2.1. Требования

PostGIS имеет следующие требования для сборки и использования:

  • Полная инсталляция PostgreSQL (включая серверные заголовки). PostgreSQL можно взять на http://www.postgresql.org. Необходима версия 7.2 или выше.

  • Компилятор GNU C (gcc). Некоторые другие компиляторы ANSI C могут быть использованы для компиляции PostGIS, но у вас будет гораздо меньше проблем, если будете использовать gcc.

  • GNU Make (gmake или make). Для большинства систем GNU make является умолчальной версией make. Проверьте версию вызовом make -v. Другие версии make могут не обработать свойства Makefile-а PostGIS.

  • (Рекомендуется) Библиотека репроекций Proj4. Библиотека Proj4 используется в PostGIS для поддержки работы с репроекциями координат. Proj4 можно скачать с http://www.remotesensing.org/proj.

  • (Рекомендуется) Геометрическая библиотека GEOS. Библиотека GEOS используется в PostGIS для поддержки геометрических тестов (ST_Touches(), ST_Contains(), ST_Intersects()) и операций (ST_Buffer(), ST_Union(), ST_Difference()). GEOS можно скачать с http://geos.refractions.net.

2.2. PostGIS

Модуль PostGIS является расширением бакенд-сервера PostgreSQL. Поэтому PostGIS 1.3.3SVN включает полные заголовки доступа сервера PostgreSQL в порядке компиляции. Исходный код PostgreSQL можно скачать с http://www.postgresql.org.

PostGIS 1.3.3SVN может быть собран только с PostgreSQL версии 7.2.0 или более старшей. Предыдущие версии PostgreSQL не поддерживаются.

  1. До компиляции серверного модуля PostGIS вы должны скомпилировать и инсталлировать пакет PostgreSQL.

    Замечание

    Если вы планируете использовать функциональность GEOS, то вы можете попробоавать слинковать PostgreSQL со стандартной библиотекой C++:

    LDFLAGS=-lstdc++ ./configure [ЗДЕСЬ ВАШИ ОПЦИИ]

    Это есть обход багов интерактивных исключений C++ в старых средствах разработки. Если вы столкнулись с непонятными проблемами (неожидано закрывается бакенд или еще что нибудь такое), попробуйте этот фокус. Он, разумеется, предполагает перекомпиляцию вашего PostgreSQL.

  2. Скачайте архив исходных кодов PostGIS: http://postgis.refractions.net/postgis-1.3.3SVN.tar.gz. Распакуйте архив:

    # gzip -d -c postgis-1.3.3SVN.tar.gz | tar xvf -
  3. Перейдите в директорию postgis-1.3.3SVN и выполните:

    # ./configure
    • Если вам нужна поддержка репроекции координат, у вас должна быть инсталлирована библиотека Proj4. Если ./configure не находит ее, используйте --with-proj=PATH с указанием директории, куда инсталлирована Proj4.

    • Если вам нужна функциональность GEOS, у вас должна быть инсталлирована библиотека GEOS. Если ./configure не находит ее, используйте --with-geos=PATH с указанием полного пути, по которому находится программа geos-config.

  4. Выполните команды компиляции и инсталляции.

    # make # make install

    Все файлы инсталлируются с использованием информации, предоставленной pg_config.

    • Библиотеки инсталлируются в [pkglibdir]/lib/contrib.

    • Важные файлы поддержки, такие как lwpostgis.sql, инсталлируются в [prefix]/share/contrib.

    • Бинарники загрузчика и дампера инсталлируются в [bindir]/.

  5. PostGIS требует расширения процедурного языка PL/pgSQL. До загрузки lwpostgis.sql вы должны включить PL/pgSQL. Для этого следует использовать команду createlang. Было бы разумно обратиться за подробностями к Руководству программиста PostgreSQL.

    # createlang plpgsql [yourdatabase]
  6. Теперь загрузите описания объектов и функций PostGIS в вашу базу данных с помощью файла определений lwpostgis.sql.

    # psql -d [yourdatabase] -f lwpostgis.sql

    Теперь серверные расширения PostGIS загружены и готовы к использованию.

  7. Для завершения определения идентификаторов системы координат EPSG, вы можете загрузить файл определений spatial_ref_sys.sql и, тем самым, заполнить таблицу SPATIAL_REF_SYS.

    # psql -d [yourdatabase] -f spatial_ref_sys.sql

2.2.1.Создание пространственных баз данных, совместимых с PostGIS, с помощью шаблона разработки

Некоторые пакетные дистрибутивы PostGIS (особенно инсталляторы под Win32 для PostGIS >= 1.1.5) загружают функции PostGIS в шаблон базы данных template_postgis. Если в вашей инсталляции PostgreSQL содержится база данных template_postgis, то пользователи и/или приложения могут создавать пространственно-совместимые базы данных с помощью единственной команды. Заметим, что в обоих случаях пользователь базы данных должен иметь привилегию на создание новых баз данных.

С помощью shell:

# createdb -T template_postgis my_spatial_db

С помощью SQL:

postgres=# CREATE DATABASE my_spatial_db TEMPLATE=template_postgis

2.2.2. Апгрейд

Апгрейд существующих пространственных баз данных может быть сложным, так как требует замены или введения новых определений объектов PostGIS.

К несчастью не все определения могут быть легко заменены в существующей базе данных, поэтому лучше иногда выполнять dump/reload.

PostGIS предоставляет процедуру SOFT UPGRADE для незначительных релизов и багфиксов, и процедуру HARD UPGRADE для значительных релизов.

Перед попыткой апгрейда postgis-а обязательно необхлдимо сделать бэкап данных. Если вы используете pg_dump с флагом -Fc, вы должны уметь восстанавливать дамп с помощью HARD UPGRADE

2.2.2.1. Апгрейд софта

Апгрейд софта заключается в выполнении скрипта lwpostgis_upgrade.sql на вашей пространственной базе данных:

$ psql -f lwpostgis_upgrade.sql -d your_spatial_database

Если скрипт для апгрейда софта завершился неудачно и вы были оповещены о необходимости выполнения HARD UPGRADE, не стесняйтесь повторить попытку снова.

Замечание

Если вы не нашли файл lwpostgis_upgrade.sql, значит, вероятно, вы используете версию ниже 1.1 и должны создать этот файл самостоятельно. Это делается следующей командой:

$ utils/postgis_proc_upgrade.pl lwpostgis.sql > lwpostgis_upgrade.sql

2.2.2.2. Апгрейд железа

Под HARD UPGRADE мы имеем в виду полный dump/reload баз данный с включенным postgis. Вы нуждаетесь в HARD UPGRADE, когда изменяются встроенные объекты postgis или когда невозможен SOFT UPGRADE. В приложении Примечания к релизам сообщается, необходим ли вам dump/reload (HARD UPGRADE) для перехода на тот или иной релиз.

PostGIS предоставляет полезный скрипт для востановления дампа, созданного коммандой pg_dump -Fc. Он является экспериментальным, и переназначение его вывода в файл может помочь в разрешении проблем. Это делается так:

Пусть база данных, которую вы хотите проапгрейдить, называется "olddb". Создайте ее дамп "custom-format".

$ pg_dump -Fc olddb > olddb.dump

Восстановим дамп после контекстуального апгрейда postgis-а в новую базу данных. Новая база данных не существует. postgis_restore принимает параметры createdb после имени файла с дампом, и это может быть использовано, например, если вы используете нестандартную кодировку символов в своей базе данных. Давайте назовем эту базу "newdb" и зададим на ней кодировку символов UNICODE:

$ sh utils/postgis_restore.pl lwpostgis.sql newdb olddb.dump -E=UNICODE > restore.log

Убедитесь, что все объекты восстанавливаемого дампа были реально восстановлены и не конфликтуют с определениями из lwpostgis.sql.

$ grep ^KEEPING restore.log | less

Если апгрейдится PostgreSQL < 8.0 на >= 8.0, вы можете удалить столбцы attrelid, varattnum и stats в таблице geometry_columns, которые больше не нужны. Но их сохранение также безвредно. УДАЛИТЕ ИХ, КОГДА ОНИ ДЕЙСТВИТЕЛЬНО НАЧНУТ МЕШАТЬ!

$ psql newdb -c "ALTER TABLE geometry_columns DROP attrelid"
$ psql newdb -c "ALTER TABLE geometry_columns DROP varattnum"
$ psql newdb -c "ALTER TABLE geometry_columns DROP stats"

Таблица spatial_ref_sys восстанавливаектся из дампа для обеспечения сохранности пользовательских дополнений, но новый дистрибутив, возможно, модифицирует ее. Поэтому вам следует сделать бэкап ее содержимого, удалить таблицу и заново создать. Если вы создавали дополнения, думаем, что вы сможете забэкапить их перед апгрейдом таблицы. Их замена совершается так:

$ psql newdb
newdb=> drop spatial_ref_sys;
DROP
newdb=> \i spatial_ref_sys.sql

2.2.3. Обычные проблемы

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

  1. Проще всего распаковать дистрибутив PostGIS в директорию contrib в дереве исходников PostgreSQL. Однако, если это невозможно, вы можете задать переменную окружения PGSQL_SRC, указав путь к директории исходников PostgreSQL. Это позволит вам скомпилировать PostGIS, но make install может не сработать, поэтому, готовые копии библиотеки PostGIS и исполняемые файлы придется самостоятельно разнести по соответствующим местам.

  2. Проверьте, что у вас инсталлирован PostgreSQL 7.2 или старше, и что вы компилируете на исходниках той же самой версии PostgreSQL, что и запущена. Путаница может возникнуть, если в вашем дистрибутиве (Linux) уже инсталлирован PostgreSQL, или, если вы имеете другой давно забытый инсталлированный PostgreSQL. PostGIS будет работать только с PostgreSQL 7.2 или старше. Если вы попытаетесь использовать его со старой версией, то в результате получите странное, незнакомое сообщение об ошибке. Проверить версию запущенного PostgreSQL, можно подсоединившись к базе посредством psql и выполнив запрос:

    SELECT version();

    Если у вас RPM-основанный дистрибутив, вы можете проверить наличие установленных пакетов с помощью команды rpm следующим способом: rpm -qa | grep postgresql

Также проверьте, что внесли необходимые изменения в начало Makefile.config. Они включают:

  1. Если вы желаете работать с координатными репроекциями, вы должны инсталлировать на вашей системе библиотеку Proj4, в Makefile.config установить переменную USE_PROJ в 1, а пременной PROJ_DIR присвоить ваш инсталляционный префикс.

  2. Если вы желаете импользовать функции GEOS, вы должны инсталлировать библиотеку GEOS на вашей системе, в Makefile.config установить переменную USE_GEOS в 1, а переменной USE_GEOS присвоить ваш инсталляционный префикс.

2.3. JDBC

Расширения JDBC предоставляют внешним типам PostGIS соответствующие объекты Java. Эти объекты могут быть использованы для написания Java-клиентов, совершающих запросы к базе данных PostGIS, вытягивающих из нее или вычисляющих данные ГИС.

  1. Перейдите в поддиректорию jdbc дистрибутива PostGIS.

  2. Отредактируйте Makefile указав корректный путь к вашему java-компилятору (JAVAC) и интерпретатору (JAVA).

  3. Запустите команду make. Скопируйте файл postgis.jar туда, где вы храните ваши библиотеки java.

2.4. Загрузчик/дампер

Загрузчик данных и дампер автоматически собирается и инсталлируется как часть сборки PostGIS. Собрать и инсталлировать его можно так:

# cd postgis-1.3.3SVN/loader
# make
# make install

Загрузчик вызывается как shp2pgsql и конвертирует файлы ESRI Shape в соответствующий SQL для загрузки в PostGIS/PostgreSQL. Дампер вызывается как pgsql2shp и конвертирует таблицы (или запросы) в файлы ESRI Shape. Более подробная документация доступна в онлайн-хелпе и как страницы мануала.


Назад Выше Вперед
Глава 1. Предисловие Начало Глава 3. Часто задаваемые вопросы
Биржа долевых инвестиций SIMEX.

Последнее редактирование: 2011-01-27 07:12:35

Метки материала: postgis, gis, postgresql, гис, бд, базы данных, геоинформационные системы, установка по

Оставьте, пожалуйста, свой комментарий к публикации

Представиться как     Антибот:
   

Просьба не постить мусор. Если вы хотите потестить xBB, воспользуйтесь кнопкой предварительного просмотра на панели инструментов xBBEditor-а.


© 2007-2017, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.