Существует множество различных способов загрузки данных в БД PostGIS.
Это можно сделать из настольного приложения (например, QGIS), можно
воспользоваться штатной PostGIS-утилитой shp2pgsql (для загрузки *.shp файлов).
Вариант загрузки данных с помощью shp2pgsql описан в статье
[Основы работы с PostGIS](http://gis-lab.info/qa/postgis-work.html).
Мы же воспользуемся более универсальным инструментом -
[ogr2ogr](http://www.gdal.org/ogr2ogr.html).
ogr2ogr - это утилита, предназначнная для конвертации векторных данных между
различными форматами. Список поддерживаемых форматов доступен
[здесь](http://www.gdal.org/ogr_formats.html). Примеры использования
утилиты ogr2ogr можно найти в [статье](http://gis-lab.info/qa/ogr2ogr-examples.html).
Загрузку данных лучше осуществлять с того же хоста, на котором
расположена база данных, так как объем загружаемых данных
может быть достаточно велик и выполнение данной операции с удалённого
хоста может занять продолжительное время.
Установим ogr2ogr и архиватор на наш сервер:
sudo apt install gdal-bin p7zip-full
Загрузим в нашу базу 4 слоя на территорию г. Санкт-Петербург,
построенных на основе данных [OpenStreetMap](http://openstreetmap.org/).
Данные OpenStreetMap, в формате *.shp, которые мы будем загружать в PostGIS
можно получить на странице проекта
[NextGIS Data](http://data.nextgis.com), предварительно
зарегистрировавшись.
* **Водоёмы**, 1770 объект
* **Здания**, 99492 объектов
* **Дорожная сеть**, 87192 объекта
* **Железнодорожные станции**, 797 объект
Скачиваем и распаковываем данные в домашнюю директорию:
7z x RU-SPE.7z -o*
Загружаем данные:
ogr2ogr -lco "OVERWRITE=YES" -nlt POLYGON -f PostgreSQL PG:"host=localhost user=pguser password=topsecret dbname=dbvega" water-polygon.shp
ogr2ogr -lco "OVERWRITE=YES" -nlt MULTIPOLYGON -f PostgreSQL PG:"host=localhost user=pguser password=topsecret dbname=dbvega" building-polygon.shp
ogr2ogr -lco "OVERWRITE=YES" -nlt MULTILINESTRING -f PostgreSQL PG:"host=localhost user=pguser password=topsecret dbname=dbvega" highway-line.shp
ogr2ogr -lco "OVERWRITE=YES" -nlt POINT -f PostgreSQL PG:"host=localhost user=pguser password=topsecret dbname=dbvega" railway-station-point.shp
Открываем pgAdmin, перходим в базу данных `dbvega` и видим, что появилось
4 новых таблицы: помимо служебной `spatial_ref_sys` - это соответственно
`water_polygon`, `building_polygon`, `highway_line` и `railway_station_point`.
Открываем окно редактора SQL и выполняем команду:
SELECT ST_AsGeoJSON(wkb_geometry) from building_polygon LIMIT 10;
В результате которой будет получено GeoJSON представление 10 произвольных
геометрий (название поля, содержащего геометрию можно задавать
при загрузке данных, по умолчанию - `wkb_geometry`).