Recinzione geo: cerca numero di caratteristiche (punti / linee / poligoni) all'interno di un poligono utilizzando Oracle Spatial

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

  •  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.

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top