<br><br><div class="gmail_quote">2009/12/16 Etienne Chové <span dir="ltr"><<a href="mailto:chove@crans.org">chove@crans.org</a>></span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Le 16/12/2009 13:45, Emilie Laffray a écrit :<div class="im"><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Pour Postgis, tu peux avoir la distance entre deux points avec<br>
ST_Distance_sphere en mètres. Tu peux donc "facilement" écrire une<br>
requête qui calculera la distance d'une way en mètres.<br>
</blockquote>
<br></div>
Dans ce cas, avec une base postgis tu peux faire :<br>
<br>
SELECT route.highway, floor(sum(st_length(st_intersection(zone.way, route.way)))) AS distance FROM (SELECT highway, way FROM france_line WHERE highway<>'') AS route, (SELECT way FROM france_polygon WHERE name='Nantes') AS zone WHERE zone.way && route.way  AND st_intersects(zone.way, route.way) GROUP BY route.highway;<br>

<br>
pour avoir les distances sur Nantes, et tu obtiens :<br>
    highway    | distance<br>
---------------+----------<br>
 cycleway      |    32259<br>
 service       |    61078<br>
 footway       |    89917<br>
 motorway      |     5648<br>
 tertiary      |   167958<br>
 unclassified  |   140163<br>
 trunk_link    |    11482<br>
 pedestrian    |    14227<br>
 motorway_link |     1780<br>
 residential   |   479245<br>
 steps         |     2441<br>
 trunk         |    28421<br>
 road          |     3897<br>
 path          |    31083<br>
 living_street |      284<br>
 track         |     2740<br>
 secondary     |   132896<br>
 primary       |    87875<br>
 bus_guideway  |     6703<br>
 construction  |      620<br>
<br>
st_distance marche que pour deux points à en croire la doc, j'espère que st_length donne bien des mètre, mais ça semble être le cas.<br></blockquote></div><br>ST_Length ne retourne que des valeurs dans l'unite de la projection sauf si tu precises un spheroid. A noter qu'il faut Postgis 1.5 (en cours de development) pour avoir le support geodesique.<br>
<a href="http://postgis.refractions.net/documentation/manual-svn/ST_Length.html">http://postgis.refractions.net/documentation/manual-svn/ST_Length.html</a> pour la version sur svn<br><span class="term"><br>Documentation actuelle.<br>
<a href="http://postgis.refractions.net/documentation/manual-1.3/ch06.html">http://postgis.refractions.net/documentation/manual-1.3/ch06.html</a> ST_Length_spheroid<br><br>Si tu veux une distance en metres, il me semble que tu dois pouvoir faire une projection dans une zone UTM. Si tu fais la retroprojection a chaque calcul ca va etre tres lent evidemment<br>
<a href="http://trac.osgeo.org/postgis/wiki/UsersWikiNewbieMeasurementInMeters">http://trac.osgeo.org/postgis/wiki/UsersWikiNewbieMeasurementInMeters</a><br><br>Emilie Laffray<br></span>