Я могу думать только о 3 типах пространственных запросов, игнорируя любые атрибуты или запросы на основе хеша.
Пространственные запросы основаны на геометрии и используются для нахождения связей между векторными объектами. SQL пространственные запросы действительно просто alogorithms API низкого уровня , такие как Bentley-Ottmann - используемые в OpenLayers , чтобы проверить , если две линии пересекаются.
Как упоминал Кирк, типы отношений между объектами стандартизированы в расширенной по размеру модели из девяти пересечений :
- Равно
- Disjoint
- Intersects
- Прикосновения (встречается)
- Кресты
- Внутри (внутри)
- Содержит
- Перекрытия
- Крышки
- Покрыта
Можно утверждать, что пространственные запросы на основе индексов являются упрощенной формой геометрических запросов. Большинство запросов геометрии используют пространственный индекс в качестве запроса первого прохода, чтобы отфильтровать нерелевантные объекты перед сравнением отдельных геометрий, что требует больше времени. Они также реализованы в базах данных NoSQL, таких как MongoDB .
- Пространственные запросы на основе теории графов . Эти типы запросов реализуются в ГИС с помощью таких инструментов, как Network Analyst , и опять же на низком уровне находятся алгоритмы .
- Пространственные запросы, основанные на растровых сетках и теории множеств (и теории нечетких множеств ).
Есть несколько реализаций, которые объединяют вышеперечисленное, например StarSpan, который объединяет растровые и векторные запросы, хотя он действительно скрывает шаг предварительной обработки.
Существует множество API-интерфейсов, которые реализуют эти типы запросов, которые считываются как машинными, так и текстовыми. Там хорошая дискуссия о различных реализациях и их проблемах здесь .
В статье « На пути к трехмерному пространственному запросу» язык разбивает пространственные операторы на 4 типа, основанные на запросе, а не на типе данных (что, возможно, имеет больше смысла):
- операторы направления (такие как выше, ниже, север, юг)
- топологические операторы (такие как касание, содержат, равно, внутри)
- метрические операторы (например, расстояние)
- Булевы операторы (такие как объединение, пересечение)
Он также вводит терминологию для работы с трехмерными элементами (корпус и поверхность), которые не включены в DE-I9M.