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

Luca Sigfrido Percich sigfrido a tiscali.it
Gio 30 Giu 2011 16:59:23 CEST


Ciao Stefano,

dovresti joinare ogni riga con la precedente:

select gps_cur.trackid, gps_cur.id, azimut(gps_prev.pos, gps_cur.pos) 
from gps as gps_cur inner join gps as gps_prev 
on gps_cur.trackid = gps_prev.trackid and gps_cur.id = gps_prev.id + 1

Prova e facci sapere

Sig


Il giorno gio, 30/06/2011 alle 16.48 +0200, Stefano ha scritto:
> 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
> 
> 
> _______________________________________________
> Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
> Gfoss a lists.gfoss.it
> http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
> Questa e' una lista di discussione pubblica aperta a tutti.
> Non inviate messaggi commerciali.
> I messaggi di questa lista non rispecchiano necessariamente
> le posizioni dell'Associazione GFOSS.it.
> 518 iscritti al 3.6.2011



Maggiori informazioni sulla lista Gfoss