Fence Geo: Encontre o número de recursos (pontos/linhas/polígonos) dentro de um polígono usando o Oracle Spatial

StackOverflow https://stackoverflow.com/questions/4611944

  •  26-09-2019
  •  | 
  •  

Pergunta

Como escrevo uma consulta SQL (usando o Oracle Spatial) para encontrar o número de recursos disponíveis dentro de um polígono (geofence);

Os recursos podem ser pontos, linhas ou um próprio polígono.

Obrigado.

Foi útil?

Solução

Experimente essa afirmação:

select count(*) from geometry_table t where SDO_RELATE(t.geom_column, geofence, 'mask=INSIDE') = 'TRUE'
/

É mandetório que o primeiro parâmetro de SDO_RELATE é a coluna de geometria com um índice espacial.

Outras dicas

ATUALIZAÇÃO: Desconsidere completamente essa sugestão, Albert Godfrind disse que está repetindo o que já está sendo feito internamente. Portanto, é ineficiente e lento:

Para adicionar ao Tims Responder, é uma boa prática combinar SDO_Filter e SDO_Relate por razões de desempenho. O SDO_Filter é rápido, mas retorna muitas geometrias, ele fornecerá todas as geometrias cujo retângulo delimitado mínimo (MBR) se cruze com a geometria da sua cerca. Sdo_relate é exato, mas lento. Então, combine os dois:

select count(*) 
from geometry_table t 
where SDO_FILTER(t.geom_column, geofence) = 'TRUE' and SDO_RELATE(t.geom_column, geofence, 'mask=INSIDE') = 'TRUE' 

Atenciosamente, Chris

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top