База знаний LinxCloud Services

Расширение Postgis для PostgreSQL

Дополнения БД могут существенно расширить функциональность базы как сервиса. Например, добавить мониторинг, географические объекты, криптографию.

Установка расширений проводятся в личном кабинете Linx Cloud. Для этого перейдите в раздел «Базы данных» —> «Инстансы баз данных».

Нажмите на базу данных, в которую необходимо установить расширения. Перейдите на вкладку «Расширения» и нажать на кнопку «Добавить».

В открывшимся окне выберите необходимые расширения и нажмите «Добавить».

После начнется установка расширений и они появятся в списке установленных.

 

Расширение Postgis

PostGIS — расширение объектно-реляционной СУБД PostgreSQL предназначенное для хранения в базе географических данных. PostGIS включает поддержку пространственных индексов R-Tree/GiST и функции обработки геоданных, а также опциональные расширения для работы с адресами и топологией.

После добавления этого расширения в базу можно работать с ней специализированными запросами. Полный перечень запросов и другую полезную информацию можно прочитать на официальном ресурсе.

Доступные виды геометрических объектов

Вам доступны: point, line, polygon, multipoint, multiline, multipolygon, and geometrycollections (точка, линия, полигон, мультиточка, мультилиния, мультиполигон и геометрическая коллекция). Они определены в формате Well Known Text Open GIS с расширениями XYZ, XYM, XYZM.

Как построить пространственный запрос?

Чтобы построить пространственный запрос, вы должны создать таблицу со столбцом типа geometry, который будет содержать ваши ГИС-данные. Соединитесь с вашей базой данных с помощью PSQL и выполните SQL:

             CREATE TABLE gtest ( ID int4, NAME varchar(20) ); SELECT AddGeometryColumn('', 'gtest','geom',-1,'LINESTRING',2);

Если не получилось добавить столбец геометрии, то, вероятно, вы не загрузили функции и объекты PostGIS в свою базу данных. Смотрите инструкцию по установке.

Далее, вы можете вставлять геометрию в таблицу с помощью SQL-команды insert. Объект ГИС будет форматирован согласно формату well-known text Консорциума OpenGIS:

INSERT INTO gtest (ID, NAME, GEOM) VALUES ( 1, 'Первая геометрия', GeomFromText('LINESTRING(2 3,4 5,6 5,7 8)', -1) );

Подробную информацию о других объектах ГИС можно посмотреть в справочнике объектов. Просмотр ваших ГИС-данных в таблице:

             SELECT id, name, AsText(geom) AS geom FROM gtest;

Результат должен выглядеть примерно так:

id | name | geom ---+------------------+-----------------------------        1 | Первая геометрия | LINESTRING(2 3,4 5,6 5,7 8)       (1 row)

Как вставить объект ГИС в базу данных?

Так же, как вы строите другие запросы к базе данных, используя SQL-запрос для получения значений, функций, логических тестов.

При построении пространственных запросов следует учитывать:

  • существует ли пространственный индекс, которым можно воспользоваться;
  • нужно ли произвести сложные вычисления на большом числе геометрий.

Чаще всего вам будет нужен «оператор пересечения» (&&), который проверяет пересекаются ли границы объектов. Польза оператора && заключается в том, что он может использовать пространственный индекс, если он существует. Это ускорит выполнения запроса.

Кроме того, вы можете использовать пространственные функции, такие как Distance(), ST_Intersects(), ST_Contains() and ST_Within() и другие для сужения результатов поиска. Большинство пространственных запросов включают тест на индекс и тест на пространственную функцию. Тест индекса полезен тем, что ограничивает число проверок значений теми, которые могут попасть в требуемый набор. Далее используются пространственные функции для окончательной проверки условия.

             SELECT id, the_geom FROM thetable              WHERE              the_geom && 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'              AND              _ST_Contains(the_geom,'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))');

Таблица дополнений

Название Описание
Нормализатор адресов.
Нормализатор адресов для США.
Дополнение для работы с TIGER (Topologically Integrated Geographic Encoding and Referencing system).
postgis_topology
Дополнение для работы с топологией — вершинами, гранями, полигонами и т.д.
Дополнение для поиска кратчайшего пути.

Параметры, применимые в инфраструктуре Linx Cloud:

Название Описание
database
Перечень баз данных, на которых нужно развернуть расширение. Удаление баз данных из этого списка для установленного расширения не поддерживается.
extension_list
Список дополнений, которые надо включить (по умолчанию пусто). Удаление параметров из этого списка для установленного расширения не поддерживается.
Что вас интересует?
Получить демо-доступ

Спасибо за ваш запрос, мы свяжемся с вами в ближайшее время!