[Gfoss] POSTGIS e i dislivelli
Alessandro Pasotti
ale.pas a tiscali.it
Ven 2 Ott 2009 17:18:36 CEST
Il venerdì 02 ottobre 2009, Antonio Falciano ha scritto:
> Alessandro Pasotti ha scritto:
> > Il venerdì 02 ottobre 2009, Antonio Falciano ha scritto:
> >> Alessandro Pasotti ha scritto:
> >>> Ciao (scusate il cross-post errato in lista soci),
> >>>
> >>> devo calcolare i dislivelli in discesa e in salita di una polilinea 3D,
> >>> sapete se (e come) si può fare con postgis?
> >>
> >> SELECT ST_ZMAX(the_geom) as z_max, ST_ZMIN(the_geom) as z_min,
> >> (ST_ZMAX(the_geom) - ST_ZMIN(the_geom)) as delta_z FROM streets;
> >>
> >> se ti interessa il dislivello esistente in assoluto, mentre per quello
> >> relativo occorre usare anche ST_PointN.
> >>
> >> ciao
> >> Antonio
> >
> > Grazie!
> >
> > se ho capito bene le prime due funzioni restituiscono quote minime e
> > massime,
>
> ok
>
> > se voglio sapere i dislivelli relativi devo quindi scrivere una funzione
> > che iterando su tutti i punti della polilinea, sommi tutti i dislivelli
> > in un verso (convenzionalmente salita) e in quello opposto (discesa) ?
>
> No, perche' per via dei segni perderesti per strada buona parte
> dell'informazione. Cosi' facendo calcolaresti il dislivello tra il punto
> iniziale e finale e, a tal fine, basterebbe semplicemente recuperare la
> z di questi due agendo con ST_PointN (v. 2° es. in
> http://postgis.refractions.net/docs/ST_PointN.html
> Purtroppo cosi' si perdono tutti i dislivelli intermedi.
Ho dato per scontato che userei due variabili, una per accumulare i dislivelli
in discesa e l'altra per quelli in salita (pseudo codice):
for punto in linea
if punto_tmp
if punto.z > punto_tmp.z
salita += punto.z - punto_tmp.z
else
discesa += punto_tmp.z - punto.z
punto_tmp = punto
sbaglio qualcosa?
> Inoltre, potresti considerare anche la tipologia di tracciato (sterrato,
> pavimentato, ecc.) in modo considerare il grado di difficolta' nella sua
> percorrenza.
Ho anche le variabili del mezzo: a piedi, in bici ecc. ma non so se mi
spingerò così avanti.
Ciao
--
Alessandro Pasotti
itOpen - "Open Solutions for the Net Age"
w3: www.itopen.it
Linux User# 167502
Maggiori informazioni sulla lista
Gfoss