Загрузка геопространственных данных с помощью PostGIS
От шейпфайлов до PostgreSQL и Greenplum
Что такое PostGIS
PostGIS – это геопространственное расширение для БД PostgreSQL , включая Greenplum, MPP PostgreSQL, предназначенную для решения аналитических задач.
PostGIS позволяет эффективно работать с географическими объектами, векторными и растровыми геопространственными данными а также дает возможность выполнять запросы о местоположении чего-либо с помощью единого набора SQL-функций.
Установите расширение PostGIS для Вашей базы данных PostgreSQL, настройте поддержку растров (опционально), включите пространственную поддержку для существующих баз данных или создайте новую - вуаля, Вы готовы к работе!
Загрузка геопространственных данных с помощью SQL
Если Вам повезло, и Ваши пространственные данные уже доступны в текстовом представлении, то использование форматированного SQL может быть самым простым способом ввести данные в PostGIS:
CREATE TABLE geotest1 (
gid INT4, geom GEOMETRY(POINT, 4326), name VARCHAR(25));INSERT INTO geotest1 (gid, name, geom) VALUES (1, 'Olympia', ST_GeometryFromText('POINT(-122.90 46.97)', 4326)), VALUES (2, 'Renton', ST_GeometryFromText('POINT(-122.22 47.50)', 4326));
Если Ваши пространственные данные больше, чем пара точек данных, их также можно загрузить, передав большой текстовый файл, полный одинаковых операторов SQL INSERT, в psql или Ваш любимый SQL-клиент. Скорее всего, Ваш набор пространственных данных будет намного больше, чем этот, и тогда есть шанс, что он будет представлен в виде одного или нескольких шейп-файлов.
Шейп-файлы
Шейп-файл - это цифровой векторный формат хранения, предназначенный для пространственного описания векторных объектов, таких как точки, линии и полигоны, а также описательной информации, связанной с этим вектором, такой как цвет, имя или температура.
Под «шейп-файлом» обычно понимается коллекция файлов с расширениями .shp, .shx, .dbf, а также с другими расширениями, имеющими общий префикс. На самом деле шейп-файл относится именно к файлам с расширением .shp. Однако сам по себе файл .shp неполноценен без необходимых вспомогательных файлов.
Обязательный файлы:
.shp—шейп-формат; геометрия объекта
.shx— индекс шейп-формата; позиционный индекс геометрии объекта
.dbf—формат атрибута; столбчатые атрибуты для каждой фигуры, в формате dBase III
Опционные файлы:
.prj— формат проекции; система координат и информация о проекции, обычный текстовый файл, описывающий проекцию с использованием известного текстового формата.
Загрузка геопространственных данных с помощью утилиты shp2pgsql
Утилита загрузки данных shp2pgsql преобразует шейп-файлы ESRI в формат SQL, пригодный для вставки в базу данных PostGIS/PostgreSQL в формате геометрии или географии.
Загрузчик имеет несколько режимов работы, отличающихся флагами и опциями командной строки:
shp2pgsql [OPTIONS] shapefile [schema.]table
Наиболее полезными опциями, на мой взгляд, являются следующие:
-d Удаляйте таблицу, затем создавайте ее заново и заполняйте текущими данными шейп-файла.
-D Используйте формат PostgreSQL «dump» для выходных данных. Используйте именно этот формат для очень больших наборов данных, так как по сравнению с форматом SQL «insert», используемым по умолчанию, он загружается намного быстрее.
-s [<FROM_SRID>:]<SRID] Используйте его для создания и заполнения таблиц геометрии с указанным SRID. Идентификатор пространственной привязки (SRID) - это уникальный идентификатор, связанный с определенной системой координат, допуском и разрешением.
-I Создайте индекс GiST для столбца геометрии.
-i Используйте тип int4 для всех целочисленных полей dbf.
Полный перечень опций доступен на PostGIS.net .
Утилиту shp2pgsql можно использовать двумя способами:
- С помощью shp2pgsql подготовьте команды SQL в файл (sample.sql), а затем с помощью psql выполните их в два этапа:
# /usr/local/greenplum-db/bin/shp2pgsql -d -D -s 900913 -i sample-shapefile.shx schemaname.tablename > sample.sql # psql -d dbname -f sample.sql
- Используйте shp2pgsql и передавайте его вывод непосредственно в psql за один раз:
# /usr/local/greenplum-db/bin/shp2pgsql -d -D -s 900913 -i sample-shapefile.shx schema.tablename | psql -d dbname
Подытожим все вышесказанное:
- PostGIS - это геопространственное расширение для баз данных PostgreSQL и Greenplum, которое добавляет поддержку географических и геометрических объектов, работает с векторными и растровыми геопространственными данными и определяет набор SQL-функций для геопространственного анализа данных.
- В сценарии, когда GIS-информация поступает из сторонних источников, набор пространственных данных, скорее всего, будет предоставлен в виде одного или нескольких шейп-файлов, которые представляют собой цифровой формат для описания векторных элементов и описательной информации.
- Для преобразования шейп-файлов в SQL-запросы INSERT используйте утилиту shp2pgsql data loader. Выберите соответствующие опции shp2pgsql для того, чтобы использовать формат «dump» для очень больших наборов входных данных, выбрать идентификатор пространственной ссылки (SRID) и создать индексы GiST в целевой таблице.
Что дальше
Теперь Вы готовы начать использовать SQL для получения данных и выполнения запросов к пространственным таблицам.






