Page 79 - 6430
P. 79
синтаксис SQL, як у випадку звичайної, непросторових таблиці.
У разі просторових обмежень можна використовувати наступні
оператори:
& & - цей оператор використовується для перевірки, чи
перетинаються кордони однієї геометрії з межами іншої.
~ = - цей оператор перевіряє, чи дві геометрії геометрично
ідентичними. Наприклад, 'POLYGON ((0 0,1 1,1 0,0 0))' збігається
з 'POLYGON ((0 0,1 1,1 0,0 0))'.
= - Простіший оператор. Він перевіряє тільки збіг кордонів
геометрій.
Ви можете використовувати ці оператори в запитах.
Зауважимо, що якщо геометрії і обхвати одночасно вказуються у
рядку команди 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
79