Интернет, компьютеры, софт и прочий Hi-Tech

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

4.4. Восстановление данных ГИС

Данные могут быть извлечены из базы с помощью SQL или загрузчика/дампера шейп-файлов. В разделе об SQL мы обсудим некоторые запросы к пространственным таблицам и операторы для сревнения данных.

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

Самый простой способ вытащить данные из базы, - использовать SQL-запрос "SELECT" с сохранением результатирующих столбцов в форматированный текстовый файл:

db=# SELECT road_id, AsText(road_geom) AS geom, road_name FROM roads;

road_id | geom                                    | road_name
--------+-----------------------------------------+-----------
      1 | LINESTRING(191232 243118,191108 243242) | Jeff Rd
      2 | LINESTRING(189141 244158,189265 244817) | Geordie Rd
      3 | LINESTRING(192783 228138,192612 229814) | Paul St
      4 | LINESTRING(189412 252431,189631 259122) | Graeme Ave
      5 | LINESTRING(190131 224148,190871 228134) | Phil Tce
      6 | LINESTRING(198231 263418,198213 268322) | Dave Cres
      7 | LINESTRING(218421 284121,224123 241231) | Chris Way
(6 rows)

Однако, в силу каких-то ограничений может возникнуть необходимость сократить число возвращаемых полей. В случае ограничений на основе атрибутов, просто используйте тот же синтаксис SQL, как в случае обычной, непространственной таблицы. В случае пространственных ограничений доступны/полезны следующие операторы:

&&

Этот оператор используется для проверки, пересекаются ли границы одной геометрии с границами другой.

~=

Этот оператор проверяет, являются ли две геометрии геометрически идентичны. Например, если 'POLYGON((0 0,1 1,1 0,0 0))' совпадает с 'POLYGON((0 0,1 1,1 0,0 0))' (это верно).

=

Этот оператор более прост. Он проверяет лишь совпадение границ геометрий.

Теперь вы можете использовать эти операторы в запросах. Заметим, что когда геометрии и границы указываются в строке команды SQL, вы должны явно указывать необходимость конвертации строки в геометрию с помощью функции "GeomFromText()". Например:

SELECT road_id, road_name
  FROM roads
  WHERE roads_geom ~= GeomFromText('LINESTRING(191232 243118,191108 243242)',-1);

Этот запрос возвратит единственную запись таблицы "ROADS_GEOM", геометрия которой эквивалентна указанному значению.

Когда используется оператор "&&", вы можете для сравнения указывать как BOX3D так и GEOMETRY. Разумеется, если вы указываете GEOMETRY, для сравнения будут использоваться границы объекта.

SELECT road_id, road_name
FROM roads
WHERE roads_geom && GeomFromText('POLYGON((...))',-1);

Этот запрос будет использовать границы полигона для сравнения с сохраненными.

Большинство простых пространственных запросов, вероятно, являются "фрейм-ориентированными" ("frame-based") запросами, используемыми в клиентском ПО, таком, как просмотровщики данных и веб-мапперы, берущие данные для показа во "фрейме карты". Используйте для фрейма объект "BOX3D", как в запросе ниже:

SELECT AsText(roads_geom) AS geom
FROM roads
WHERE
  roads_geom && SetSRID('BOX3D(191232 243117,191232 243119)'::box3d,-1);

Заметим, что для определения проекции BOX3D используется SRID. Значение -1 используется для указания неопределенного SRID.

4.4.2. Использование дампера

Дампер таблиц pgsql2shp соединяется с базой данных и конвертирует таблицу (возможно, заданную запросом) в шейп-файл. Основной синтаксис:

pgsql2shp [<options>] <database> [<schema>.]<table>
pgsql2shp [<options>] <database> <query>

Опции командной строки:

-f <имя_файла>

Записать вывод в указанный файл.

-h <хост>

Хост базы данных, с которой осуществляется соединение.

-p <порт>

Порт базы данных, с которой осуществляется соединение.

-P <пароль>

Пароль, используемый при соединении с базой данных.

-u <пользователь>

Имя пользователя, используемое при соединении с базой данных.

-g <геометрический столбец>

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

-b

Использовать бинарный курсор. Это ускорит операцию, но не будет работать, если какой-то из НЕгеометрических атрибутов таблицы не может быть приведен к тесту.

-r

Сырой режим. Не удаляйте поле gid, или эскейпируйте имена столбцов.

-d

Для обратной совместимости: записывает дамп в 3-мерный шейп-файл для старых (до 1.0.0) баз данных PostGIS (по умолчанию в этом случае записывается 2-мерный шейп-файл). Начиная с PostGIS-1.0.0+, измерения полностью кодируются.


Назад Выше Вперед
4.3. Загрузка данных ГИС Начало 4.5. Разработка индексов
Биржа долевых инвестиций SIMEX.

Последнее редактирование: 2011-01-19 08:52:37

Метки материала: postgis, гис, руководство, sql, дампер, shp, manual, данные, база, db

Оставьте, пожалуйста, свой комментарий к публикации

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

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


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