Языки пространственных запросов

Стандарт OGIS как расширение языка SQL


Консорциум OGIS был создан ведущими производителями программного обеспечения с целью выработки промышленного стандарта, регламентирующего взаимодействие ГИС. Модель пространственных данных OGIS может быть встроена в большое количество различных языков программирования, например C, Java, SQL и т. д. В этом разделе мы остановимся на встраивании этой модели в язык SQL.

Стандарт OGIS основан на модели геометрических данных, представленной на рис. 2.2. Вспомним, что эта модель данных состоит из базового класса GEOMETRY, который является абстрактным, – иначе говоря, мы не можем описать объекты как экземпляры этого класса, – однако задает пространственную систему координат, применимую ко всем производным от него классам. Четыре основных класса, порожденных от предка GEOMETRY, – это Point, Curve, Surface и GeometryCollection. С каждым из этих классов связан набор операций, выполняемых над экземплярами классов. Некоторые важные операции, а также их назначение приведены в таблице 3.9.

Операции, определенные в стандарте OGIS, делятся на три категории.

Таблица 3.9. Примеры операций, входящих в стандарт OGIS [OGIS, 1999]



Базовые функции SpatialReference() Возвращает базовую систему координат геометрии
Envelope() Возвращает минимальный ортогональный ограничивающий прямоугольник геометрии
Export() Возвращает альтернативное представление геометрии
IsEmpty() Возвращает истинное значение, если геометрия является пустым множеством
IsSimple() Возвращает истинное значение, если геометрия является простой (без самопересечений)
Boundary() Возвращает границы геометрии
Топологические операции и операции над множествами Equal Возвращает истинное значение, если внутренние области и границы обеих геометрий пространственно равны
Disjoint Возвращает истинное значение, если границы и внутренняя область не пересекаются
Intersect Возвращает истинное значение, если геометрии имеют общие элементы
Touch Возвращает истинное значение, если границы двух поверхностей пересекаются, а внутренние области – нет
Cross Возвращает истинное значение, если внутренняя область поверхности пересекается кривой
Within Возвращает истинное значение, если внутренняя область одной геометрии не пересекается с внешней областью другой геометрии
Contains Проверяет, содержит ли одна геометрия другую
Overlap Возвращает истину, если внутренние области двух геометрий имеют непустое пересечение
Пространственный анализ Distance Возвращает кратчайшее расстояние между двумя геометриями
Buffer Возвращает геометрию, содержащую все точки, лежащие на указанном или меньшем расстоянии от данной геометрии
ConvexHull Возвращает наименьшее выпуклое геометрическое множество, заключающее в себе данную геометрию
Intersection Возвращает геометрическое пересечение двух геометрий
Union Возвращает геометрическое объединение двух геометрий
Difference Возвращает фрагмент геометрии, который не пересекается с другой геометрией
SymmDiff Возвращает фрагменты двух геометрий, которые не пересекаются друг с другом

1. Базовые операции, применимые ко всем геометрическим типам данных. Например, SpatialReference возвращает базовую систему координат, в которой описана геометрия объекта. К числу распространенных систем координат относятся широко известная система широт и долгот, а также часто используемая система Universal Traversal Mercator (UTM).

2. Операции, выявляющие топологические отношения между пространственными объектами. Например, операция overlap проверяет, имеют ли внутренние области двух объектов (см. главу 2) непустое множество пересечений.

3. Общие операции пространственного анализа. Например, операция distance возвращает кратчайшее расстояние между двумя пространственными объектами.



Содержание раздела