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

Примеры запросов


1. Запрос. Перечислить все пары городов из таблицы City и расстояния между ними. SELECT C1.Name, C1.Distance(C2.Shape) AS ‘‘Расстояние’’ FROM City C1, City C2 WHERE C1.Name <> C2.Name

Примечания. Обратите внимание на объектно-ориентированную форму записи функции Distance в предложении SELECT. Сравните ее с обычной нотацией, использованной в разделе 3.5: Distance(C1.Shape, C2.Shape). Условие в предложении WHERE гарантирует, что функция Distance не применяется по отношению к двум копиям одного и того же города.

2. Запрос. Проверить правильность вычисления длин рек, которые приведены в таблице River, на основе геометрической информации в атрибуте Shape. SELECT R.Name, R.Length, R.Length() AS ‘‘Рассчитанная длина’’ FROM River R

Примечания. Этот запрос используется для проверки корректности данных. Длины рек уже содержатся в таблице River в виде атрибута Length. Используя функцию Length(), мы можем убедиться в целостности данных таблицы.

3. Запрос. Привести названия, численность населения и площадь всех стран, граничащих с США. SELECT C2.Name, C2.Pop, C2.Area() AS ‘‘Площадь’’ FROM Country C1, Country C2 WHERE C1.Name = ‘США’ AND C1.Touch(C2.Shape) = 1

Примечания. Area() – естественная функция, поддерживаемая АТД Polygon. Наряду с ней запрос также использует топологический предикат Touch.



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