Questa sezione fornisce informazioni sulla creazione delle interrogazioni spaziali che utilizzano le funzioni spaziali e i predicati.
DB2 Spatial Extender include le funzioni che eseguono diverse operazioni sui dati spaziali. Gli esempi riportati in questa sezione indicano come utilizzare le funzioni spaziali per creare le proprie interrogazioni spaziali.
La Tabella 3 fornisce un elenco di funzioni spaziali e dei tipi di
operazione che possono essere eseguiti.
Tabella 3. Operazioni e funzioni spaziali
Tipo di funzione | Esempio di operazione |
---|---|
Calcolo | Calcolare la distanza tra i punti |
Confronto | Ricercare tutti i clienti ubicati in un'area a rischio |
Scambio di dati | Convertire i dati nei formati supportati |
Trasformazione | Aggiungere un raggio di cinque miglia ad un punto |
Per ulteriori informazioni sulle funzioni spaziali, consultare le sezioni Geometrie e funzioni spaziali associate e Funzioni spaziali per le interrogazioni SQL.
La seguente interrogazione ricerca la distanza media di un cliente da un centro commerciale. Le funzioni spaziali utilizzate in questo esempio sono ST_Distance e ST_Within.
SELECT s.id, AVG(db2gse.ST_Distance(c.location,s.location)) FROM customers c, stores s WHERE db2gse.ST_Within(c.location,s.zone)=1 GROUP BY s.id
La seguente interrogazione ricerca i clienti che vivono nell'area della Baia di San Francisco. Le funzioni spaziali utilizzate in questo esempio sono ST_AsText (data exchange) e ST_Within. ST_AsText converte i dati spaziali della colonna c.location nel formato OGC TEXT.
SELECT db2gse.ST_AsText(c.location,cordref(1)) FROM customers c WHERE db2gse.ST_Within(c.location,:BayArea)=1
La seguente interrogazione ricerca tutte le strade con lunghezza superiore a 10.5 miglia. La funzione spaziale utilizzata in questo esempio è ST_Length.
SELECT s.name,s.id FROM street s WHERE db2gse.ST_Length(s.path) > 10.5
Questa interrogazione ricerca i clienti che vivono all'interno dell'area a rischio o entro 2 miglia dai confini di questa area. Le funzioni spaziali utilizzate in questo esempio sono ST_Buffer (transformation) e ST_Within.
SELECT c.name,c.phoneNo,c.address FROM customers c WHERE db2gse.ST_Within(c.location,ST_Buffer(:floodzone,2))=1