<<< предыдущая глава | оглавление | следующая глава >>>
Содержание
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.
Модуль PostGIS является расширением серверной части PostgreSQL. Поэтому для компиляции PostGIS 1.3.3 необходим полный доступ к заголовками сервера PostgreSQL. Исходный код PostgreSQL можно скачать с http://www.postgresql.org.
PostGIS 1.3.3 может быть собран только с PostgreSQL версии 7.2.0 или более старшей. Предыдущие версии PostgreSQL не поддерживаются.
Если вы планируете использовать функциональность GEOS, то вы можете попробовать связать PostgreSQL со стандартной библиотекой C++:
LDFLAGS=-lstdc++ ./configure [ЗДЕСЬ ВАШИ ОПЦИИ]
Это позволяет обойти мнимые ошибки C++ в старых средствах разработки. Если вы столкнулись с непонятными проблемами (неожидано закрывается сервер или что-то подобное), попробуйте этот подход. Разумеется, он подразумевает повторную компиляцию вашего PostgreSQL.
# gzip -d -c postgis-1.3.3SVN.tar.gz | tar xvf -
# ./configure
# make # make install
Все файлы устанавливаются с использованием информации, предоставленной pg_config.
wget http://download.osgeo.org/proj/proj-4.6.0.tar.gz tar xvzf proj-4.6.0.tar.gz cd proj-4.6.0 ./configure && make clean && make make install ldconfig cd ..
wget http://download.osgeo.org/geos/geos-3.0.3.tar.bz2 tar xvjf geos-3.0.3.tar.bz2 cd geos-3.0.3 ./configure && make clean && make make install ldconfig cd ..
# createlang plpgsql [yourdatabase]
# psql -d [yourdatabase] -f lwpostgis.sql
Теперь серверные расширения PostGIS загружены и готовы к использованию.
# psql -d [yourdatabase] -f spatial_ref_sys.sql
# psql -d [yourdatabase] -f postgis_comments.sql
Некоторые пакетные дистрибутивы 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
Обновление существующих пространственных баз данных может оказаться непростой задачей, требующей замены или введения новых определений объектов PostGIS.
К несчастью, не все определения могут быть легко заменены в существующей базе данных, поэтому лучше использовать dump/reload.
PostGIS предоставляет процедуру SOFT UPGRADE для незначительных релизов и исправлений ошибок, и процедуру HARD UPGRADE для значительных релизов.
Перед попыткой обновления PostGIS необходимо сделать резервное копирование данных. Если вы используете pg_dump с флагом -Fc, вы должны уметь восстанавливать дамп с помощью HARD UPGRADE.
SOFT-обновление заключается в выполнении скрипта lwpostgis_upgrade.sql для вашей пространственной базе данных:
$ psql -f lwpostgis_upgrade.sql -d your_spatial_database
Не стесняйтесь сначала использовать SOFT-обновление, так как если скрипт не может его выполнить, он будет отменен и вы будете оповещены о необходимости выполнения HARD-обновления.
Если вы не нашли файл lwpostgis_upgrade.sql, вероятно, вы используете версию ниже 1.1 и должны создать этот файл самостоятельно. Это делается следующей командой:
$ utils/postgis_proc_upgrade.pl lwpostgis.sql > lwpostgis_upgrade.sql
Под HARD-обновлением мы имеем в виду полный dump/reload баз данный использующих PostGIS. HARD-обновление необходимо, когда изменяются встроенные объекты PostGIS или когда невозможно SOFT-обновление. В приложении Примечания к релизам сообщается, необходим ли вам dump/reload (HARD-обновление) для перехода на тот или иной релиз.
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
Есть несколько вещей, которые могут неожиданно помешать вашей установке или обновлению.
SELECT version();
Если у вас RPM-дистрибутив, вы можете проверить наличие установленных пакетов с помощью команды rpm следующим способом: rpm -qa | grep postgresql
Также проверьте, что необходимые изменения внесены в начало Makefile.config. Они включают следующие изменения:
Расширения JDBC предоставляют соответствующие объекты Java внутренним типам PostGIS. Эти объекты могут быть использованы для написания Java-клиентов, совершающих запросы к базе данных PostGIS, получающих или обрабатывающих данные ГИС.
Расширения JDBC требуют чтобы драйвер PostgreSQL JDBC располагался в директории указанной в CLASSPATH в процессе сборки. Если драйвер PostgreSQL JDBC расположен в другом месте, можно передать его местоположение его файла JAR отдельно, используя параметр -D:
# ant -Dclasspath=/path/to/postgresql-jdbc.jar
Драйверы PostgreSQL JDBC могут быть загружены с http://jdbc.postgresql.org.
Загрузчик данных и дампер автоматически собирается и устанавливается как часть
сборки PostGIS. Собрать и установить его вручную можно так:
# cd postgis-1.3.3SVN/loader # make # make install
Загрузчик вызывается как shp2pgsql и конвертирует ESRI Shape-файлы в SQL подходящий для загрузки в PostGIS/PostgreSQL. Дампер вызывается как pgsql2shp и конвертирует таблицы (или запросы) в ESRI Shape-файлы. Более подробная документация доступна в онлайн-справке и руководстве.
<<< предыдущая глава | оглавление | следующая глава >>>
Обсудить в форуме Комментариев 21
Последнее обновление: December 03 2008
© GIS-Lab и авторы, 2002-2021. При использовании материалов сайта, ссылка на GIS-Lab и авторов обязательна. Содержание материалов - ответственность авторов. (подробнее).