Recinzione geo: cerca numero di caratteristiche (punti / linee / poligoni) all'interno di un poligono utilizzando Oracle Spatial
-
26-09-2019 - |
Domanda
Come faccio a scrivere una query SQL (utilizzando Oracle Spatial) per trovare il numero di funzioni disponibili all'interno di un poligono (geofence);
Le caratteristiche possono essere o punti, linee o poligono stesso.
Grazie.
Soluzione
Prova questa affermazione:
select count(*) from geometry_table t where SDO_RELATE(t.geom_column, geofence, 'mask=INSIDE') = 'TRUE'
/
È mandetory che il primo parametro SDO_RELATE
è la colonna di geometria con un indice spaziale.
Altri suggerimenti
Aggiornamento: Ignorare completamente questo suggerimento, Albert Godfrind ha detto che sta ripetendo ciò che è già stato fatto internamente. Quindi è inefficiente e lento:
Per aggiungere Tims risposta, è buona pratica di combinare SDO_FILTER e SDO_RELATE per motivi di prestazioni. SDO_FILTER è veloce ma ritorna troppe geometrie, che vi darà tutte le geometrie cui minimo rettangolo di delimitazione interseca (MBR) con la geometria del recinto. SDO_RELATE è esatta, ma lento. Quindi combinare entrambi:
select count(*)
from geometry_table t
where SDO_FILTER(t.geom_column, geofence) = 'TRUE' and SDO_RELATE(t.geom_column, geofence, 'mask=INSIDE') = 'TRUE'
Saluti, Chris