xBB – бесплатные скрипты PHP и доки для вебмастеров | |||||||||||||
ДокументацияМетки (все метки)bbcode, html, php, xbb, базы данных, интернет, компьютер, программирование, сайт, софт
Подписаться через RSS2Email.ru
|
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, как в случае обычной, непространственной таблицы. В случае пространственных ограничений доступны/полезны следующие операторы:
Теперь вы можете использовать эти операторы в запросах. Заметим, что когда геометрии и границы указываются в строке команды 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> Опции командной строки:
Последнее редактирование: 2008-04-01 12:30:01 Метки материала: PostGIS, ГИС, руководство, SQL, дампер, shp, manual, данные, база Оставьте свой комментарий: |
||||||||||||
© 2007-2010, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.