<<< предыдущая глава | оглавление | следующая глава >>>
Содержание
Объекты ГИС, поддерживаемые PostGIS, являются надмножествами "Simple Features", определенных Консорциумом OpenGIS (OGC). Начиная с версии 0.9, PostGIS поддерживает все объекты и функции, определенные OGC в спецификации "Simple Features SQL".
PostGIS расширяет стандарт поддержкой координат 3DZ, 3DM и 4D.
Спецификация OpenGIS определяет два стандартных способа определения пространственных объектов: в форме Well-Known Text (WKT) и в форме Well-Known Binary (WKB). WKT и WKB включают информацию о типе объекта и координаты, составляющие объект.
Примеры текстового представления (WKT) пространственных объектов приведены ниже:
Кроме этого, спецификация OpenGIS требует, чтобы внутренний формат хранения пространственных объектов включал идентификатор системы координат (spatial referencing system identifier - SRID). 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');
Формат OGC поддерживает только 2d геометрии, и соответствующие SRID никогда не вставляются в вводимые/выводимые представления.
PostGIS расширяет форматы текущего набора OGC (всякий валидный WKB/WKT является валидным EWKB/EWKT), но это может измениться в будущем, если OGC выпустит новый формат, противоречащий нашим. Таким образом, вам НЕ СЛЕДУЕТ полагаться на эту возможность!
В EWKB/EWKT PostGIS добавлена поддержка координат 3dm, 3dz, 4d и встроена информация SRID.
Примеры текстовых представлений (EWKT) пространственных объектов, расширенных описанными возможностями:
Ввод/вывод в этих форматах возможен с использованием следующих интерфейсов:
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)
Пространственная спецификация мультимедийных приложений SQL расширяет простые возможности спецификации SQL, определяя несколько кривых, интерполированных дугами.
Определения SQL-MM определяют координаты 3dm, 3dz и 4d, но не позволяют включать информацию о SRID.
WKT расширения еще поддерживаются не полностью. Ниже показаны примеры некоторых простых криволинейных геометрий:
В настоящее время PostGIS не поддерживает использование составных кривых в криволинейном полигоне.
Все числовые сравнения с плавающей точкой в SQL-MM выполняются в пределах допустимой точности, в настоящее время - 1E-8.
<<< предыдущая глава | оглавление | следующая глава >>>
Обсудить в форуме Комментариев 21
Последнее обновление: January 28 2015
© GIS-Lab и авторы, 2002-2021. При использовании материалов сайта, ссылка на GIS-Lab и авторов обязательна. Содержание материалов - ответственность авторов. (подробнее).