7.15. PostGIS¶
Для добавления векторного слоя из БД PostgreSQL с модулем расширения PostGIS необходимо сначала создать ресурс — соединение PostGIS.
7.15.1. Соединение PostGIS¶
Нажмите кнопку Создать ресурс и выберите во всплывающем окне тип ресурса Cоединение PostGIS (см. Рис. 7.158.).

Рис. 7.158. Выбор типа ресурса «Соединение PostGIS»¶
В открывшемся окне укажите наименование PostGIS соединения (Рис. 7.159.). Оно будет отображаться в административном интерфейсе (не путайте это наименование и название слоёв в базе данных).

Рис. 7.159. Наименование соединения PostGIS¶
Также можно добавить Описание и метаданные.
На вкладке «Cоединение PostGIS» необходимо ввести параметры подключения к БД PostGIS, из которой будут забираться ваши данные (Рис. 7.160.).

Рис. 7.160. Окно параметров соединения PostGIS¶
Режимы SSL:
disable
- Отключает обработку SSLallow
- Сначала будет сделана попытка установить соединение без использования SSL, если попытка будет неудачной, будет установлено SSL-соединение.prefer
- Значение по умолчанию. Сначала будет сделана попытка установить SSL-соединение, если попытка будет неудачной, будет установлено соединение без использования SSL.require
- При включении этой настройки вся связь с сайтом должна быть зашифрована с помощью HTTPS.verify-ca
- обеспечивает шифрование и гарантирует, что сертификат сервера подписан доверенной организацией, но не проверяет, что имя хоста сервера соответствует сертификату.verify-full
- режим с высоким уровнем безопасности. При его использовании клиент проверяет как сертификат сервера, так и соответствие имени хоста сервера сертификату. Это гарантирует, что соединение зашифровано, а сервер аутентифицирован и соответствует ожидаемому имени хоста.
После указания параметров нажмите кнопку Создать.
7.15.2. Слой PostGIS¶
Далее можно приступать к добавлению отдельных слоёв PostGIS. Нажмите кнопку Создать ресурс и выберите во всплывающем окне тип ресурса Слой PostGIS (см. Рис. 7.161.).

Рис. 7.161. Выбор типа ресурса «Слой PostGIS»¶
На вкладке «Ресурс» указывается наименование слоя PostGIS (Рис. 7.162.). Оно будет отображаться в административном интерфейсе и дереве слоев веб-карты после добавления.

Рис. 7.162. Наименование Слоя PostGIS¶
Также можно добавить Описание и метаданные, описывающие содержимое данного слоя.

Рис. 7.163. Метаданные слоя PostGIS¶
На вкладке «Слой PostGIS» настраиваются параметры слоя (Рис. 7.164.).

Рис. 7.164. Окно параметров слоя PostGIS¶
Здесь необходимо выполнить следующие действия:
Из выпадающего списка выбрать подключение к БД (созданное ранее).
Выбрать схему БД, в которой находится слой PostGIS.
В одной базе данных PostgreSQL может быть несколько схем, внутри каждой схемы лежат таблицы и представления. Если схема одна, то она называется public. Подробнее смотрите в руководствах по СУБД PostgreSQL.
Выбрать название таблицы (слоя PostGIS).
Вам потребуется знать названия ваших таблиц и полей в базе данных.
Отображение таблиц и представлений не входит в задачи NextGIS Web. Для просмотра можно воспользоваться NextGIS QGIS или PgAdmin.
Выбрать «Поле ID».
При загрузке данных в PostGIS через NextGIS QGIS обычно создается поле с названием ogc_fid, при загрузке иным способом название поля может отличаться.
Поле ID должно удовлетворять ограничениям на тип данных: быть числовым (numeric) и являться первичным ключом.
Выбрать «Поле геометрии».
При загрузке данных в PostGIS через NextGIS QGIS обычно создается поле геометрии с названием wkb_geometry, при загрузке иным способом название поля может отличаться.
Поля «Тип геометрии», «Система координат», «Поля» и «SRID» являются не обязательными, и их значения могут быть оставлены по умолчанию.
После указания параметров нажмите кнопку Создать.
Важно
Чтобы добавить таблицу в NextGIS Web в ней должна быть колонка с уникальными целочисленными значениями. Если такой нет или колонка первичного ключа содержит неуникальные значения, можно добавить дополнительную колонку для этих целей.
Чтобы добавить такую колонку в таблицу, подключитесь к базе данных (используя psql, например, в QGIS) и выполните следующий запрос:
ALTER TABLE tablename ADD fid serial NOT NULL;
ALTER TABLE tablename ADD CONSTRAINT tablename_fid_unique UNIQUE (fid);
Затем эту колонку (fid) можно использовать в качестве колонки ID в NextGIS Web.

Рис. 7.165. Добавление колонки с ID в QGIS¶
С другими особенностями использования PostGIS в NextGIS Web вы можете ознакомиться здесь.
7.15.3. Хранение нескольких геометрий в таблице¶
Программное обеспечение NextGIS Web поддерживает добавление таблиц, в которых в поле геометрии хранятся совместно точечные, линейные и полигональные геометрии. Это необходимо для отображения специфических наборов данных: например, если в одной таблице хранятся координаты городских парков в виде полигонов и мусорных урн в виде точек. В этом случае в NextGIS Web нужно добавить три отдельных слоя для каждого типа геометрии, и выбрать нужный элемент в поле «Тип геометрии».
После создания слоя для отображения подписей к геометриям необходимо задать атрибут наименования. Для этого следует зайти на страницу редактирования слоя и выбрать нужное поле в списке «Атрибут наименования».
Если в БД были изменены какие либо данные, касающиеся структуры (названия или типы полей, изменен их состав, переименованы таблицы и т. п.), то в свойствах соответствующего слоя необходимо обновить описания атрибутов. Для этого для выбранного слоя следует выбрать действие «Изменить», на вкладке «Слой PostGIS» в поле «Описания атрибутов» выбрать «Загрузить» из базы данных и нажать «Сохранить».
7.15.4. Диагностика PostGIS¶
Проверить корректность введенных данных при добавлении ресурса Соединение PostGIS или Слой PostGIS можно при помощи инструмента Диагностика. Для этого вам необходимо нажать на кнопку Диагностика на панели справа.
В случае, если при создании PostGIS-соединения или PostGIS слоя все поля заполнены верно - диагностика пройдет успешно.
В случае, если какие-то из введенных данных не корректны - появится сообщение об ошибке.
7.15.5. Возможные проблемы со слоями PostGIS¶
Вы создали подключение и пытаетесь создать на его основе слой PostGIS.
Если вы получаете ошибку:
Невозможно подключиться к базе данных!
Проверьте, доступна ли база данных к которой вы подключаетесь, правильная ли у вас учетная запись. Это удобно делать через pgAdmin или QGIS.
Имейте в виду, может быть так, что база временно отключена или изменились параметры доступа.
7.15.6. Создание слоя с условиями¶
В NextGIS Web нельзя указывать условия отбора записей из слоя (SQL конструкция WHERE). Это делается для обеспечения безопасности (исключения атак SQL Injection). Для обеспечения такой возможности необходимо в БД создать представления с соответствующими условиями отбора.
Для этого необходимо подключится к БД PostgreSQL/PostGIS при помощи pgAdminIII, перейти в схему данных, где следует создать представление и в элементе дерева «Представления» правой клавишей мыши вызвать контекстное меню и выбрать «Создать новое представление» (см. Рис. 7.166.. п. 1). Также диалог можно вызвать правым кликом на названии схемы, выбрав «Новый объект» и далее «Новое представление».Далее в открывшемся диалоге необходимо указать:
Название представления (вкладка «Свойства»).
Схему данных, в которой необходимо создать представление (вкладка «Свойства»).
Необходимый SQL запрос (вкладка «Определение»).

Рис. 7.166. Главное окно ПО pgAdminIII.¶
Цифрами на рисунка обозначено: 1 – дерево элементов базы данных; 2 – кнопка открытия таблицы (активна при выделенной таблице); 3 – содержимое запроса в представлении.
После этого, не выходя из pgAdminIII, можно открыть представление для проверки корректности введенного SQL запроса (см. Рис. 7.166.. п. 2).