xBB – бесплатные скрипты PHP и доки для вебмастеров

Подписаться через RSS2Email.ru
Руководство по PostGIS. Глава 4. Использование PostGIS. 4.3. Загрузка данных ГИС
Назад Вперед

4.3. Загрузка данных ГИС

Однажды создав пространственную таблицу, вы можете загружать данные ГИС в базу. В настоящее время существуют два способа положить данные в базу PostGIS/PostgreSQL: использование команд в формате SQL или использование загрузчика/дампера шейп-файлов.

4.3.1. Использование SQL

Если вы можете конвертировать ваши данные в текстовое представление, то для загрузки данных в PostGIS проще всего использовать формат SQL. Как и в случае Oracle и других баз SQL данные могут быть загружены через терминал SQL из большого текстового файла, содержащего SQL-запросы "INSERT".

Файл (roads.sql для примера) с загружаемыми данными может выглядеть так:

BEGIN;
INSERT INTO roads (road_id, roads_geom, road_name)
  VALUES (1,GeomFromText('LINESTRING(191232 243118,191108 243242)',-1),'Jeff Rd');
INSERT INTO roads (road_id, roads_geom, road_name)
  VALUES (2,GeomFromText('LINESTRING(189141 244158,189265 244817)',-1),'Geordie Rd');
INSERT INTO roads (road_id, roads_geom, road_name)
  VALUES (3,GeomFromText('LINESTRING(192783 228138,192612 229814)',-1),'Paul St');
INSERT INTO roads (road_id, roads_geom, road_name)
  VALUES (4,GeomFromText('LINESTRING(189412 252431,189631 259122)',-1),'Graeme Ave');
INSERT INTO roads (road_id, roads_geom, road_name)
  VALUES (5,GeomFromText('LINESTRING(190131 224148,190871 228134)',-1),'Phil Tce');
INSERT INTO roads (road_id, roads_geom, road_name)
  VALUES (6,GeomFromText('LINESTRING(198231 263418,198213 268322)',-1),'Dave Cres');
COMMIT;

Данные из файла могут быть легко загружены в PostgreSQL с помощью терминального экрана SQL "psql":

psql -d [database] -f roads.sql

4.3.2. Использование загрузчика

Загрузчик данных shp2pgsql конвертирует шейп-файлы ESRI в соответствующий SQL для вставки в базу данных PostGIS/PostgreSQL. Загрузчик имеет несколько рабочих режимов, задаваемых флагами командной строки:

-d

Удалить таблицу базы данных перед созданием новой таблицы с данными из шейп-файла.

-a

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

-c

Создать новую таблицу и заполнить ее из шейп-файла. Этот режим включен по умолчанию.

-p

Произвести только код SQL для создания таблицы без добавления данных. Может быть использована, если вам нужно разделить шаги по созданию таблицы и загрузке данных.

-D

Использовать формат PostgreSQL "dump" для вывода данных. Эта опция может быть скомбинирована с -a, -c и -d. Это позволит ускорить загрузку по сравнению с умолчальным форматом SQL "insert". Используйте ее для очень больших наборов данных.

-s <SRID>

Создает и заполняет геометрические таблицы с указанным SRID.

-k

Сохранять регистр идентификаторов (столбец, схема и атрибуты). Заметим, что все атрибуты в шейп-файлах имеют ВЕРХНИЙ регистр.

-i

Привести все целые числа к стандартным 32-битным целым, не создавать 64-битных bigint-ов, даже если заголовочное описание DBF будет требовать другого.

-I

Создает индекс GiST на геометрическом столбце.

-w

Вывести формат WKT для использования в старых (0.x) версиях PostGIS. Заметим, что это приведет к изменению координат и удалению значений M из шейп-файла.

-W <кодировка>

Указывает кодировку вводимых данных (в файле DBF). При ее использовании все атрибуты в DBF будут конвертироваться из указанной кодировки в UTF8. Результирующий вывод SQL будет содержать команду SET CLIENT_ENCODING to UTF8. Таким образом, данные будут конвертированы из UTF8 в любую внутреннюю кодировку, с которой вы сконфигурировали базу данных.

Заметим, что -a, -c, -d и -p взаимно исключают друг друга.

Посмотрите пример сессии использования загрузчика для создания файла ввода и его загрузки:

# shp2pgsql shaperoads myschema.roadstable > roads.sql
# psql -d roadsdb -f roads.sql

В UNIX конвертация и загрузка могут буть выполнены за один шаг с помощью команды:

# shp2pgsql shaperoads myschema.roadstable | psql -d roadsdb

Назад Выше Вперед
4.2. Использование стандартов OpenGIS Начало 4.4. Восстановление данных ГИС

 
 

Последнее редактирование: 2010-03-09 13:56:06

Метки материала: postgis, гис, руководство, база данных, postgresql, sql, запросы, pgsql, учебник, server, системное администрирование, открытое по, map, manual, данные, геоинформационные системы, open source, бд, базы данных, it, gis

Оставьте свой комментарий:

Представиться как     Антибот:
   

Просьба не постить мусор. Если вы хотите потестить xBB, воспользуйтесь кнопкой предварительного просмотра на панели инструментов xBBEditor-а.


© 2007-2010, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.