2009/12/16 Etienne Chové <ch...@crans.org> > Le 16/12/2009 13:45, Emilie Laffray a écrit : > > Pour Postgis, tu peux avoir la distance entre deux points avec >> ST_Distance_sphere en mètres. Tu peux donc "facilement" écrire une >> requête qui calculera la distance d'une way en mètres. >> > > Dans ce cas, avec une base postgis tu peux faire : > > 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; > > pour avoir les distances sur Nantes, et tu obtiens : > highway | distance > ---------------+---------- > cycleway | 32259 > service | 61078 > footway | 89917 > motorway | 5648 > tertiary | 167958 > unclassified | 140163 > trunk_link | 11482 > pedestrian | 14227 > motorway_link | 1780 > residential | 479245 > steps | 2441 > trunk | 28421 > road | 3897 > path | 31083 > living_street | 284 > track | 2740 > secondary | 132896 > primary | 87875 > bus_guideway | 6703 > construction | 620 > > 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. >
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. http://postgis.refractions.net/documentation/manual-svn/ST_Length.html pour la version sur svn Documentation actuelle. http://postgis.refractions.net/documentation/manual-1.3/ch06.htmlST_Length_spheroid 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 http://trac.osgeo.org/postgis/wiki/UsersWikiNewbieMeasurementInMeters Emilie Laffray
_______________________________________________ Talk-fr mailing list Talk-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-fr