[Gfoss] ST_Azimuth() su sequenza di punti, in postgresql 8.3

Stefano stefano.cudini a gmail.com
Gio 30 Giu 2011 16:48:44 CEST


Saluti a tutti

Ho una tabella con dentro delle posizioni gps sequenziali e devo per ognuna
calcolare l'azimut rispetto alla posizione precedente, questo mi serve per
disegnare una freccia di ogni posizione orientata rispetto al senso di
marcia(in OpenLayers), una implementazione che pensavo fosse molto diffusa
ed invece ho trovato solo questa query in rete:
*
SELECT round( degrees(ST_Azimuth(pos, LEAD(pos) OVER (PARTITION BY trackid
ORDER BY id)))::numeric) AS azimut*
FROM gps
ORDER BY id ASC

dove *pos* è un campo geometry di tipo point con le coordinate di una
posizione gps, *id* è un identificativo incrementato ad ogni nuova posizione
inserita e *trackid* è un identificativo di una sequenza di posizioni
contigue(sequenze di posizioni molto vicine hanno lo stesso *trackid*)
La sudetta query funziona abbastanza bene in postgresql 8.4 con postgis 1.5,
ma il problema è che fa uso di PARTITION BY che da quanto
ho visto è una funzionalità(le partizioni) di postgresql che è stata
inserita proprio dalla versione 8.4.
Qualcuno ha una idea di come posso modificare la query ed ottenere lo stesso
risultato senza utilizzare PARTITION BY? in modo che posso utilizzarla anche
in postgresql 8.3 con postgis 1.3, volevo evitare di dover compilare una
nuova versione di postgresql sul mio server debian lenny!


Grazie Mille
Stefano
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.gfoss.it/pipermail/gfoss/attachments/20110630/bf3cbf1a/attachment-0001.html>


Maggiori informazioni sulla lista Gfoss