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

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

Глава 4. Использование PostGIS

Содержание

4.1. Объекты ГИС
4.1.1. OpenGIS WKB и WKT
4.1.2. PostGIS EWKB, EWKT и Канонические формы
4.1.3. SQL-MM часть 3
4.2. Использование стандартов OpenGIS
4.2.1. Таблица SPATIAL_REF_SYS
4.2.2. Таблица GEOMETRY_COLUMNS
4.2.3. Создание пространственной таблицы
4.2.4. Обеспечение геометрий, согласованных с OpenGIS
4.3. Загрузка данных ГИС
4.3.1. Использование SQL
4.3.2. Использование загрузчика
4.4. Восстановление данных ГИС
4.4.1. Использование SQL
4.4.2. Использование дампера
4.5. Разработка индексов
4.5.1. Индексы GiST
4.5.2. Использование индексов
4.6. Сложные запросы
4.6.1. Полезность индексов
4.6.2. Примеры пространственного SQL
4.7. Использование Mapserver
4.7.1. Основы использования
4.7.2. Часто задаваемые вопросы
4.7.3. Продвинутое использование
4.7.4. Примеры
4.8. Клиенты Java (JDBC)
4.9. Клиенты C (libpq)
4.9.1. Текстовые указатели
4.9.2. Бинарные указатели

4.1. Объекты ГИС

Объекты ГИС, поддерживаемые PostGIS, являются надмножествами "Простых возможностей", определенных Консорциумом OpenGIS (OGC). Начиная с версии 0.9, PostGIS поддерживает все объекты и функции, определенные OGC в спецификации "Простые возможности SQL".

PostGIS расширяет стандарт поддержкой координат 3DZ, 3DM и 4D.

4.1.1. OpenGIS WKB и WKT

Спецификация OpenGIS определяет два стандартных способа передачи пространственных объектов: в форме Well-Known Text (WKT) и в форме Well-Known Binary (WKB). WKT и WKB оба включают информацию о типе объекта и координаты расположения объекта.

Примеры текстового представления (WKT) пространственных объектов приведены ниже:

  • POINT(0 0)

  • LINESTRING(0 0,1 1,1 2)

  • POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1))

  • MULTIPOINT(0 0,1 2)

  • MULTILINESTRING((0 0,1 1,1 2),(2 3,3 2,5 4))

  • MULTIPOLYGON(((0 0,4 0,4 4,0 4,0 0),(1 1,2 1,2 2,1 2,1 1)), ((-1 -1,-1 -2,-2 -2,-2 -1,-1 -1)))

  • GEOMETRYCOLLECTION(POINT(2 3),LINESTRING((2 3,3 4)))

Кроме того, спецификация OpenGIS требует, чтобы внутренний формат хранения пространственных объектов включал систему идентификаторов пространственных ссылок (spatial referencing system identifier - SRID) для вставки в базу данных.

Ввод/вывод в этих форматах доступен с использованием следующих интерфейсов:

bytea WKB = asBinary(geometry);
text WKT = asText(geometry);
geometry = GeomFromWKB(bytea WKB, SRID);
geometry = GeometryFromText(text WKT, SRID);

Например, правильный запрос insert для создания и вставки пространственного объекта OGC может быть таким:

INSERT INTO geotable ( the_geom, the_name )
  VALUES ( GeomFromText('POINT(-126.4 45.32)', 312), 'A Place');

4.1.2. PostGIS EWKB, EWKT и Канонические формы

Формат OGC поддерживает только 2d геометрии, и соответствующие SRID-ы никогда не вставляются в вводимые/выводимые представления.

PostGIS расширяет форматы текущего набора OGC (всякий валидный WKB/WKT является валидным EWKB/EWKT), но это может измениться в будущем, если OGC выпустит новый формат, противоречащий нашим. Таким образом, вам НЕ СЛЕДУЕТ пользоваться этой возможностью!

В PostGIS-овский EWKB/EWKT добавлена поддержка координат 3dm, 3dz, 4d и встроена информация SRID.

Примеры текстовых представлений (EWKT) пространственных объектов, расширенных описанными возможностями:

  • POINT(0 0 0) -- XYZ

  • SRID=32632;POINT(0 0) -- XY с SRID

  • POINTM(0 0 0) -- XYM

  • POINT(0 0 0 0) -- XYZM

  • SRID=4326;MULTIPOINTM(0 0 0,1 2 1) -- XYM с SRID

  • MULTILINESTRING((0 0 0,1 1 0,1 2 1),(2 3 1,3 2 1,5 4 1))

  • POLYGON((0 0 0,4 0 0,4 4 0,0 4 0,0 0 0),(1 1 0,2 1 0,2 2 0,1 2 0,1 1 0))

  • MULTIPOLYGON(((0 0 0,4 0 0,4 4 0,0 4 0,0 0 0),(1 1 0,2 1 0,2 2 0,1 2 0,1 1 0)),((-1 -1 0,-1 -2 0,-2 -2 0,-2 -1 0,-1 -1 0)))

  • GEOMETRYCOLLECTIONM(POINTM(2 3 9), LINESTRINGM(2 3 4, 3 4 5))

Ввод/вывод в этих форматах возможен с использованием следующих интерфейсов:

bytea EWKB = asEWKB(geometry);
text EWKT = asEWKT(geometry);
geometry = GeomFromEWKB(bytea EWKB);
geometry = GeomFromEWKT(text EWKT);

Пример правильного запроса insert для создания и вставки пространственного объекта PostGIS:

INSERT INTO geotable ( the_geom, the_name )
  VALUES ( GeomFromEWKT('SRID=312;POINTM(-126.4 45.32 15)'), 'A Place' )

"Канонические формы" типов в PostgreSQL позволяют вам получить представления с помощью простых запросов (без вызова каких либо функций) и гарантируют выполнение простых insert-ов, update-ов или копирования. Эти формы для PostGIS-овского типа "geometry":

- Вывод
  - binary: EWKB
    ascii: HEXEWKB (EWKB в 16-ричной форме)
- Ввод
  - binary: EWKB
    ascii: HEXEWKB|EWKT 

Например, следующий запрос читает EWKT и возвращает HEXEWKB в процессе канонического ввода/вывода ascii:

=# SELECT 'SRID=4;POINT(0 0)'::geometry;

geometry
----------------------------------------------------
01010000200400000000000000000000000000000000000000
(1 row)

4.1.3. SQL-MM Часть 3

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

Определения SQL-MM определяют координаты 3dm, 3dz и 4d, но не позволяют включать информацию о SRID.

Известные текстовые расширения поддерживаются еще не полностью. Ниже показаны примеры некоторых простых криволинейных геометрий:

  • CIRCULARSTRING(0 0, 1 1, 1 0)

  • COMPOUNDCURVE(CIRCULARSTRING(0 0, 1 1, 1 0),(1 0, 0 1))

  • CURVEPOLYGON(CIRCULARSTRING(0 0, 4 0, 4 4, 0 4, 0 0),(1 1, 3 3, 3 1, 1 1))

  • MULTICURVE((0 0, 5 5),CIRCULARSTRING(4 0, 4 4, 8 4))

  • MULTISURFACE(CURVEPOLYGON(CIRCULARSTRING(0 0, 4 0, 4 4, 0 4, 0 0),(1 1, 3 3, 3 1, 1 1)),((10 10, 14 12, 11 10, 10 10),(11 11, 11.5 11, 11 11.5, 11 11)))

Замечание

В настоящее время PostGIS не поддерживает использование составных кривых в криволинейном полигоне.

Замечание

Все числовые сравнения с плавающей точкой выполняются в SQL-MM в пределах допустимой точности, - в настоящее время - 1E-8.


Назад Выше Вперед
Глава 3. Часто задаваемые вопросы Начало 4.2. Использование стандартов OpenGIS
Биржа долевых инвестиций SIMEX.

Последнее редактирование: 2008-03-14 20:44:42

Метки материала: PostGIS, ГИС, OpenGIS, WKB, WKT, EWKB, EWKT, Канонические формы, SQL-MM, map

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

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

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


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