Cerca geográfica: como encontrar se um ponto ou uma forma está dentro de um polígono usando o Oracle espacial
-
25-09-2019 - |
Pergunta
Como faço para encontrar se um ponto ou um polígono está dentro de outro polígono usando a consulta SQL espacial do Oracle
Aqui está o cenário;
Eu tenho uma tabela (state_table) que contém um tipo espacial (sdo_geometria) que é um polígono (de um estado), eu tenho outra tabela (University_table) que contém dados espaciais (sdo_geometry) (ponto/polígono) que contém universidades;
Agora, como faço para encontrar se uma universidade selecionada (é em um determinado estado usando a instrução SQL Select.
Principalmente, quero localizar a existência de objetos determinados em uma geofia.
Obrigado.
Solução
Você precisará usar sdo_contains ou sdo_relate com uma máscara de 'contém'
Por favor, consulte a documentação localizada em
Sdo_containshttp://download.oracle.com/docs/cd/e11882_01/appdev.112/e11830/sdo_operat.htm#sthref1064 por
ou
Sdo_relatehttp://download.oracle.com/docs/cd/e11882_01/appdev.112/e11830/sdo_operat.htm#i78531
Qualquer um deles você faria algo como o seguinte (assumindo que suas informações espaciais estejam contidas em uma coluna chamada 'geom' que é espacialmente indexada):
select
ST.NAME, UT.UNIVERSITY_NAME
from
STATE_TABLE ST
INNER JOIN UNIVERSITY_TABLE UT
ON SDO_CONTAINS(ST.GEOM, UT.GEOM) = 'TRUE'
Você terá que me perdoar, pois não me lembro especificamente da sintaxe correta para isso e não sei se a junção acima funcionará corretamente. Isso deve ser suficiente para apontá -lo na direção certa.