Пространственные операции
Пространственные операции используют геометрические функции для получения пространственных данных в качестве входных, анализируют их и создают выходные данные, являющиеся результатом анализа входных.
К данным, вычисляемым с помощью пространственных операций, относятся:
- Полигон, который является буфером входного пространственного объекта
Простой пространственный объект, который является результатом анализа набора геометрии
- Простой пространственный объект, который является результатом сравнения для определения части объекта, не попадающей в то же физическое пространство, что и другой объект
- Простой пространственный объект, который является результатом сравнения для определения частей объекта, которые пересекают физическое пространство другого объекта
- Составной объект, который создается из всех частей входного объекта, не попадающих в физическое пространство другого объекта
- Объект, являющийся результатом объединения двух геометрий
При анализе входных данных возвращаются координаты или текстовое представление полученной геометрии. Эту информацию можно использовать как часть более сложного запроса для проведения дальнейшего анализа, или же использовать результат в качестве входных данных для другой таблицы.
Например, можно включить операцию буферизации в условие WHERE запроса пересечения, чтобы определить, пересекает ли указанная геометрия область определенного размера вокруг другой геометрии.
Ниже приведены примеры использования функции ST_Geometry. Чтобы узнать о специфических функциях геометрии и синтаксисе, используемом в других базах данных и с другими пространственными типами, обратитесь к документации по соответствующим базам данных и типам данных.
В этом примере всем владельцам недвижимости, находящейся на расстоянии 1000 футов от перекрываемой улицы, отправляются уведомления. Условие WHERE создает 1000-футовый буфер вокруг перекрываемой улицы. Затем буфер сравнивается с объектами в этой области, чтобы определить, какие из них пересекаются буферной зоной.
SELECT p.owner,p.address,s.stname
FROM parcels p, streets s
WHERE s.stname = 'Main'
AND sde.st_intersects (p.shape, sde.st_buffer (s.shape, 1000)) = 't';
В этом примере выбирается улица (Main) для условия WHERE, затем вокруг нее строится буфер, который сравнивается с объектами в таблице земельных участков для нахождения пересечений.* Для всех участков, которые пересекаются с буфером Main Street, возвращается список имен и адресов владельцев.
*Порядок выполнения частей условия WHERE зависит от оптимизатора базы данных.
Ниже приведен пример использования результата пространственной операции объединения таблиц с данными городских кварталов и школьными округами; полученные результаты записываются в отдельную таблицу:
INSERT INTO combo c (shape)
VALUES (
(SELECT sde.st_union (n.shape,d.shape)
FROM neighborhoods n, school_districts d),5);
Более подробная информация об использовании пространственных операторов с ST_Geometry находится в разделе Функции пространственных операций для ST_Geometry. Для получения информации об использовании пространственных операторов в IBM DB2, IBM Informix, Oracle Spatial, PostGIS или Microsoft SQL Server, см. документацию к этим СУБД.