После того как пространственная таблица создана, вы можете загружать данные ГИС в
базу. В настоящее время существуют два способа загрузить данные в базу
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 |
Последнее обновление: September 09 2008 (Наверх)
|