пятница, 14 апреля 2017 г.

Qgis и PostgrSql

Часть первая доступна по ссылке
Для многопользовательского доступа к редактируемой карте в QGis используют базу Postgis. В ней будет хранится вся пространственная информация об объектах. Таким образом подключаясь к базе можно совместно работать над проектом.

1. Установить на сервер базу данных PostgrSql
2. Установить PostGis - добавляет поддержку географических объектов в реляционную базу данных PostgreSQL
3. Создать новую базу на сервере.
3.1 Через PgAdmin4 создаем базу данных например postgis_bd
3.2 В базе postgis_bd выполняем скрипты(правой кнопкой мыши по базе - Query Tool) которые находятся(для windows) в PostgreSQL\9.6\share\contrib\postgis-2.3\
т.е в окне запросов SQL запускаем следующие скрипты:
postgis.sql
postgis_comments.sql
topology.sql
topology_comments.sql
spatial_ref_sys.sql  
Скрипты содержат функции PostGIS и типы данных для QGIS.
После этого наша база postgis_bd готова к наполнению.
4. Создать в Qgis слой, рассматривалось в это статье
5. Сохраняем слой в формат shape-файла.
Таким образом получим на выходе 6 файлов:

Эти файлы будут конвертироваться в sql и на основе его формироваться таблица в БД. Для этого нужно их скопировать на сервер базы данных PostgrSql в каталог c:\Program Files\PostgreSQL\9.6\bin\
Затем запустим в данном каталоге командную строку и выполним следующие команды:
shp2pgsql -i -D -s 4326  original.shp  name_tables > name_tables.sql
psql -U postgres -f name_tables.sql -d postgis_bd
Описание:shp2pgsql - утилита для импорта shape- файлов в базу PostGis
original.shp - шейп файл. Cоздаем на основе его SQL таблицу с именем name_tables
Таблицу загружаем в postGis в базу данных postgis_bd 

После выполнения команд в базе создаться таблица name_tables, которую в QGIS можно подключить, для этого создадим новое подключение к базе данных PostGis
Подключение к PostGis
Подключившись к базе увидите таблицу name_tables, двойной клик по ней и можно добавлять объекты, как добавить подложку рассматривалось в это записи.
Если создаем нового пользователя в PostgrSQL не забываем дать права на таблицу слоя в базе, а также права на последовательности (sequences).