Основная функция ГИС – определить пространственные отношения между объектами: Они пересекаются? Один содержится в другом? Один пересекает другой?
Геометрия может быть пространственно соотнесена различными способами. Далее представлено несколько примеров, как геометрия может пространственно соотноситься друг с другом.
- Геометрия А проходит через геометрию В.
- Геометрия А полностью содержится в геометрии В.
- Геометрия А полностью содержится в геометрии В.
- Геометрия не пересекается и не касается друг друга.
- Геометрия полностью совпадает.
- Геометрия накладывается друг на друга.
- Геометрия соприкасается в одной точке.
Чтобы определить, существуют ли эти взаимоотношения, используйте функции пространственных отношений. Эти функции сравнивают следующие свойства геометрии, определенные в вашем запросе:
- Внешняя часть геометрии (E – exterior), то есть все пространство, незанятое этой геометрией
- Внутренняя часть геометрии (I – interior), то есть все пространство, занятое этой геометрией
- Граница геометрии (B – boundary), то есть раздел между внутренней и внешней частью
При конструировании запроса пространственных отношений определите тип пространственного отношения, который вы запрашиваете, и геометрию, которую вы хотите сравнить. Запросы возвращаются либо как true или false, либо как взаимодействует ли геометрия друг с другом в заданных пространственных отношениях или нет. В большинстве случаев вы будете использовать пространственный запрос для фильтрации результата, размещая его через оператор WHERE.
Например, если у вас имеется таблица, в которой содержатся предполагаемые места развития, а другая таблица содержит археологически значимые места, возможно, вы захотите убедиться, что объекты таблицы мест развития не пересекают археологические места. Вы можете создать запрос, чтобы убедиться, что ни одно из мест предполагаемого развития не пересекает археологически значимые места, а если пересекает, то вернуть идентификаторы этих предполагаемых мероприятий. В этом примере используется функция ST_Disjoint.
SELECT d.projname,a.siteid
FROM dev d, archsites a
WHERE sde.st_disjoint(d.shape,a.shape)= 'f'
projname siteid
bow wow chow A1009
Этот запрос возвращает имя мероприятия и ID архелогически значимого места, но не те, которые не пересекаются – другими словами, места, которые пересекаются. Возвращается проект развития Bow Wow Chow, который пересекает археологически значимое место A1009.
Для более подробной информации о функциональности ST_Geometry, которая проверяет пространственные отношения в Oracle или PostgreSQL, см. Функции пространственных отношений для ST_Geometry. Информацию по функциям пространственных отношений, используемых с пространственными типами в IBM DB2, IBM Informix, Oracle Spatial, PostGIS, or Microsoft SQL Server, см. документацию по управлению базами данных этих систем.