2010/3/31 sly (sylvain letuffe) <sylv...@letuffe.org> > On mercredi 31 mars 2010, ubu...@kagou.fr wrote: > > Bonjour :) > > > > Est il possible de calculer le nombre de kilomètres de routes/chemins > d'une > > commune ? > > Ma démarche va être pragmatique, Émilie cherche peut-être une précision en > centimètres et cherche donc les super plugins top moumoute, mais ce que je > vais faire, c'est juste un test tout con. Je suis pas convaincu que ce que > je > fais soit juste (même plutôt non !), mais je fais mon test sur une rue que > je > connais bien, je compare à une mesure faite sur google earth par exemple et > si ça semble pas trop pourri, c'est que ça doit être pas trop mal pour le > besoin exprimé : > > C'est parti : > > - mesure sur google earth de la rue test : "Rue du Chardonet" 148m (de > milieu > de route à milieu de route) > > - p'tit coup d'oeil à la doc postgis, on m'informe de st_length( ) > clair, ça ne doit pas tenir compte bien fort de la rotondité de la terre, > mais > pour une commune, ça devrait aller > > - J'ai une base avec des coordonnées en merkator > > - je tente un coup, erreur d'un facteur 2, bon, ça doit pas le faire pour > conserver les distances > > - prenons un truc de français, la projection lambert, j'ai ça dans ma table > des projections : "RGF93 / Lambert-93" (srid 2154) > > - on tente (elle est en deux morceaux dans osm) : > # select st_length(st_transform(way,2154)),name,osm_id from planet_osm_line > where osm_id=21818269 or osm_id=37417102; > st_length | name | osm_id > ------------------+------------------+---------- > 60.0128023671594 | Rue du Chardonet | 21818269 > 88.936417938514 | Rue du Chardonet | 37417102 > > putain con ! j'ai pas fais exprès : 149m, on va pas se plaindre ;-) > > Y'a pu qu'a : > > # select > sum(st_length(st_transform(rues.way,2154)))/1000 as longueur_totale, > commune.name > from > planet_osm_line as rues, planet_osm_polygon as commune > where > rues.highway is not null and rues.way && commune.way > and ST_Contains(commune.way, rues.way) > and commune.osm_id=-74386 group by commune.name; > longueur_totale | name > ------------------+---------- > 213.543132378272 | Chambéry > (1 row) > > 213km pour la commune de chambéry > > Pas de doute, il doit m'en manquer parce que certaines rue sont à cheval, > des > nationale ne font que traverser, ma technique doit être approximative, mais > ça flaire la bonne approximation > > Si quelqu'un veut me donner l'id osm pour tester une rue qu'il a mesuré, on > peut voir déjà si les résultats on un semblant de cohérence > > Bah avec ta conversion dans le lambert, tu fais exactement ce que le nouveau type geography fait automatiquement :) Le type geography est capable de trouver la bonne projection pour pouvoir continuer a bosser tranquillement. Ta requête actuelle serait fausse si tu la faisais sur une zone plus large. C'est le point qui avait été mentionné il y a quelques temps avec les zones UTM. Le support géodésique permet de se débarrasser de ce type d'erreurs et de calculer sur la terre entière d'un coup sans avoir a changer de projection.
Emilie Laffray
_______________________________________________ Talk-fr mailing list Talk-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-fr