Só consigo pensar em três tipos de consulta espacial, ignorando qualquer atributo ou consulta baseada em hash.
Consultas espaciais baseadas na geometria e são usadas para encontrar os relacionamentos entre os recursos do vetor. As consultas espaciais do SQL são realmente apenas um alogoritmo de baixo nível da API, como o Bentley-Ottmann - usado no OpenLayers para verificar se duas linhas se cruzam.
Como Kirk mencionou, os tipos de relacionamento entre os recursos padronizaram o modelo de nove interseções estendido dimensionalmente :
- É igual a
- Disjuntar
- Cruza
- Toques (atende)
- Cruzes
- Dentro (dentro)
- Contém
- Sobreposições
- Capas
- Coberto por
Pode-se argumentar que as consultas espaciais baseadas em índices são uma forma simplificada de consultas de geometria. A maioria das consultas de geometria usa um índice espacial como uma consulta de primeira passagem para filtrar recursos irrelevantes antes de comparar geometrias individuais, que consomem mais tempo. Eles também são implementados em bancos de dados NoSQL , como o MongoDB .
- Consultas espaciais baseadas na teoria de grafos . Esses tipos de consulta são implementados no GIS por meio de ferramentas como o Network Analyst , e novamente em um nível baixo são algoritmos .
- Consultas espaciais baseadas em grades raster e teoria dos conjuntos (e teoria dos conjuntos difusos ).
Existem algumas implementações que combinam as opções acima, como o StarSpan, que combina consultas de varredura e vetor - embora oculte realmente uma etapa de pré-processamento.
Existem inúmeras APIs que implementam esses tipos de consultas legíveis por máquina e texto. Há uma boa discussão sobre diferentes implementações e seus problemas aqui .
O artigo Towards a 3d Spatial Query Language divide os operadores espaciais em 4 tipos, com base na consulta e não no tipo de dados (o que talvez faça mais sentido):
- operadores direcionais (como acima, abaixo, northOf, southOf)
- operadores topológicos (como toque, contém, igual, interior)
- operadores métricos (como distância)
- Operadores booleanos (como união, interseção)
Ele também traz terminologia para lidar com os recursos 3D (corpo e superfície), que não estão incluídos no DE-I9M.