postgis. Поддержка геоданных#
Версия: 3.4.4.
В исходном дистрибутиве установлено по умолчанию: нет.
Связанные компоненты: См. раздел «Системные требования» этой статьи.
Схема размещения:
ext;
topology;
tiger;
tiger_data.
Расширение PostGIS представляет собой реализацию стандарта OpenGIS на основе стандарта SQL/MM.
Для реализации требований вводятся новые типы данных:
geometry;
geography;
bod2d;
box2df;
box3d;
raster;
spheroid.
Добавляются также функции для работы с этими типами.
Функциональное обеспечение позволяет работать с геометрическими, географическими и растерными объектами.
Данные могут быть представлены в двумерной, трехмерной или четырехмерной системе координат.
Расширение PgRouting предоставляет дополнительную функциональность к PostGIS, позволяющую определять расстояние между географическими объектами.
Тип данных geography предусматривает указание SRID (Spatial Reference Identifier) системы SRS (Spatial Reference System).
Системные требования#
В поставку продукта как библиотеки третьей стороны (3rd party) добавляются расширения:
postgis;postgis_topology;postgis_sfcgal;postgis_raster;postgis_tiger_geocoder;address_standardizer;address_standardizer_data_us;pgrouting.
Системные пакеты, необходимые для работы расширений:
Для ALT 8 SP (8.4):
libboost_thread1.67.0;
libboost_atomic1.67.0;
libboost_chrono1.67.0;
libboost_date_time1.67.0;
libboost_serialization1.67.0;
libtiff5;
json-c;
libpcre16;
libmpfr6.
Команда установки:
sudo apt-get install libboost_thread1.67.0 libboost_atomic1.67.0 libboost_chrono1.67.0 libboost_date_time1.67.0 libboost_serialization1.67.0 libtiff5 json-c libpcre16 libmpfr6Для RedHat 7:
boost-thread;
boost-atomic;
boost-chrono;
boost-date-time;
boost-serialization;
libtiff;
json-c;
pcre.
Команда установки:
sudo yum install boost-thread boost-atomic boost-chrono boost-date-time boost-serialization libtiff json-c pcre
Для работы расширений требуются библиотеки:
GDAL;
PROJ;
SFCGAL;
cgal;
geos.
Доработка#
В Postgresql SE включены инструменты для работы с геоданными (Spatial).
Вводимая функциональность исключает инструменты командной строки и GUI для загрузки и выгрузки данных, в отличие от свободно распространяемой версии. Исключение связано с фактом необходимости указывать пароль пользователя в открытом виде. Загрузка и выгрузка данных в систему производится стандартным образом при работе с доверенным ресурсом.
Убраны инструменты Imp/Exp данных.
Ограничения#
Текущие ограничения расширения:
в поставку не добавляются инструменты для загрузки или конвертации данных, а также пользовательские GIS-системы. Это связано с тем, что они используют пароли БД в открытом виде;
в поставку не добавляется jdbc драйвер PostGIS по причине наличия у драйвера лицензии GPL;
расширения входят в состав дополнительной части продукта (3rd party) и могут быть лицензированы «вирусными» лицензиями GPL, AGPL;
из поставки исключены функции ST_AsMVTGeom, ST_AsMVT, ST_AsGeobuf, поскольку они используют protobuf, отсутствующий в RHEL7. Аналогичное исключение применяется в свободно распространяемом Postgresql для RHEL7.
Установка#
Установка системных зависимостей#
Установите системные пакеты, необходимые для работы расширений:
Для ALT 8 SP (8.4):
sudo apt-get install libboost_thread1.67.0 libboost_atomic1.67.0 libboost_chrono1.67.0 libboost_date_time1.67.0 libboost_serialization1.67.0 libtiff5 json-c libpcre16 libmpfr6Для RedHat 7:
sudo yum install boost-thread boost-atomic boost-chrono boost-date-time boost-serialization libtiff json-c pcre
Установка поддерживающих библиотек#
Для установки необходимых библиотек необходимо распаковать одноименные архивы «.tar.gz» в корень операционной системы:
distrib="путь до распакованного дистрибутива расширений и поддерживающих библиотек"
cd /
sudo tar -xzf $distrib/3rdparty/postgis/GDAL.tar.gz
sudo tar -xzf $distrib/3rdparty/postgis/PROJ.tar.gz
sudo tar -xzf $distrib/3rdparty/postgis/SFCGAL.tar.gz
sudo tar -xzf $distrib/3rdparty/postgis/cgal.tar.gz
sudo tar -xzf $distrib/3rdparty/postgis/geos.tar.gz
Библиотеки настроены на установку и работу по пути «/usr/local».
В зависимости от настроек операционной системы путь /usr/local может не распознаваться для поиска библиотек.
Проверьте наличие путей — это можно сделать, проверив все ли библиотеки найдены для исполняемого файла СУБД:
ldd $PGHOME/lib/postgis-3.so | grep "not found"
Для включения данного пути в список системных путей поиска библиотек можно воспользоваться следующими командами:
echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/local.conf
sudo ldconfig
Установка расширений#
Установка расширений осуществляется путем распаковки архивов с расширениями в директорию установки продукта Pangolin:
distrib="путь до распакованного дистрибутива расширений и поддерживающих библиотек"
product="путь до директории с установленным продуктом Pangolin"
cd $product
sudo tar -xzf $distrib/3rdparty/postgis/postgis.tar.gz
sudo tar -xzf $distrib/3rdparty/postgis/pgrouting.tar.gz
Директорией установки продукта по умолчанию может быть /usr/pgsql-se-04, а начиная с версий 5.х – /usr/pangolin.
Перезагрузка сервера#
Перед использованием расширений необходимо выполнить перезагрузку сервера СУБД Pangolin (restart --force).
Настройка#
Настройка не требуется.
Использование расширения#
Отключение аудита#
На момент создания расширения рекомендуется отключить аудит, если он был включен. Если этого не сделать, процесс включения расширения займет значительное время и потребует большого количества оперативной памяти (не менее 24 ГБ).
Отключить аудит можно выполнив SQL запрос:
ALTER ROLE current_user SET pgaudit.log='none';
После этого необходимо переподключиться к сервису.
Включение расширения#
Подключитесь к базе данных и выполните команды по загрузке всех или только необходимых расширений:
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_raster;
CREATE EXTENSION postgis_sfcgal;
CREATE EXTENSION postgis_tiger_geocoder CASCADE; -- needed extension fuzzystrmatch
CREATE EXTENSION postgis_topology;
CREATE EXTENSION address_standardizer;
CREATE EXTENSION address_standardizer_data_us;
CREATE EXTENSION pgrouting;
Включение аудита#
После создания расширения необходимо включить аудит, если он был включен до установки:
ALTER ROLE current_user RESET pgaudit.log;
После этого необходимо переподключиться к сервису.
Ссылки на документацию разработчика#
Дополнительно поставляемый модуль postgis: https://postgis.net/docs/manual-3.1/.