[Gfoss] POSTGIS e i dislivelli

Antonio Falciano afalciano a yahoo.it
Ven 2 Ott 2009 16:43:11 CEST


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.

> L'idea è generare i valori per il costo e usarli per il routing 
> escursionistico, dove oltre alla distanza contano i dislivelli.

Se ti interessa calcolare una funzione di costo a partire dalle
geometrie, la pendenza media e' sicuramente il parametro piu'
rappresentativo del "lavoro" necessario a percorre l'intero itinerario.
Inoltre, potresti considerare anche la tipologia di tracciato (sterrato,
pavimentato, ecc.) in modo considerare il grado di difficolta' nella sua
percorrenza. Davvero interessante la tua applicazione, buon lavoro!

Ciao
Antonio

-- 
Antonio Falciano
http://www.linkedin.com/in/antoniofalciano






Maggiori informazioni sulla lista Gfoss