<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 14:53, Emilie Laffray a écrit :<br>
<div class="im">> ST_Length ne retourne que des valeurs dans l'unite de la projection sauf<br>
> si tu precises un spheroid. A noter qu'il faut Postgis 1.5 (en cours de<br>
> development) pour avoir le support geodesique.<br>
> <a href="http://postgis.refractions.net/documentation/manual-svn/ST_Length.html" target="_blank">http://postgis.refractions.net/documentation/manual-svn/ST_Length.html</a><br>
> pour la version sur svn<br>
><br>
> Documentation actuelle.<br>
> <a href="http://postgis.refractions.net/documentation/manual-1.3/ch06.html" target="_blank">http://postgis.refractions.net/documentation/manual-1.3/ch06.html</a><br>
> ST_Length_spheroid<br>
><br>
> Si tu veux une distance en metres, il me semble que tu dois pouvoir<br>
> faire une projection dans une zone UTM. Si tu fais la retroprojection a<br>
> chaque calcul ca va etre tres lent evidemment<br>
> <a href="http://trac.osgeo.org/postgis/wiki/UsersWikiNewbieMeasurementInMeters" target="_blank">http://trac.osgeo.org/postgis/wiki/UsersWikiNewbieMeasurementInMeters</a><br>
<br>
</div>Si je copie cette doc pour la projection UTM, ça donne :<br>
<div class="im"><br>
SELECT route.highway,<br>
        floor(<br>
         sum(<br>
          st_length(<br>
</div>           st_transform(<br>
            st_intersection(zone.way, route.way),<br>
            2163<br>
           )<br>
          )<br>
         )<br>
<div class="im">        ) AS distance<br>
FROM<br>
   (SELECT highway, way FROM france_line WHERE highway<>'') AS route,<br>
   (SELECT way FROM france_polygon WHERE name='Nantes') AS zone<br>
WHERE<br>
   zone.way && route.way AND<br>
   st_intersects(zone.way, route.way)<br>
GROUP BY<br>
   route.highway;<br></div></blockquote></div><br>2163 est une zone pour les USA. Ça ne marchera pas pour Nantes. Tu es obligée d'utiliser la fonction que tu trouves sur la page suivante:<br><a href="http://trac.osgeo.org/postgis/wiki/UsersWikiplpgsqlfunctionsDistance">http://trac.osgeo.org/postgis/wiki/UsersWikiplpgsqlfunctionsDistance</a><br>
<br>Sinon ça ne marchera pas. Tu obtiendras une valeur erronée. La zone UTM depend de l'endroit ou se trouve la géométrie. Une zone UTM ne couvre que 6 degrés, et donc ca implique qu'il y a des "déformations" vers les bords de la zone. C'est problématique pour les objets qui sont très longs. Seul un vrai support géodésique résoudra ce problème. Ce support géodésique va venir avec Postgis 1.5 mais ce n'est pas encore tout a fait la.<br>
<br>Emilie Laffray<br>