[OSM-dev-fr] requete pour trouver un way qui intersecte plusieurs communes
Christian Quest
cquest at openstreetmap.fr
Ven 15 Mai 16:33:46 UTC 2015
J'ai sorti un CSV du résultat sur la France entière:
http://osm105.openstreetmap.fr/~cquest/routes.csv
92750 cas à vérifier... ;)
Le 15 mai 2015 15:50, <didier2020 at free.fr> a écrit :
> - j'ai compris depuis ...
> 1,2,3,4,5 correspond aux select (id... km)
> mais sans les remettre - je connaissais pas cette syntaxe
>
> - j'ai ajouté having count(*)>1
> ça fait moins de lignes
>
> - du coup c'est meme pas long pour la france !
>
> encore merci christian !
>
>
> ----- Mail d'origine -----
> De: Christian Quest <cquest at openstreetmap.fr>
> À: Discussions développeur OSM en français <dev-fr at openstreetmap.org>
> Envoyé: Fri, 15 May 2015 14:04:36 +0200 (CEST)
> Objet: Re: [OSM-dev-fr] requete pour trouver un way qui intersecte
> plusieurs communes
>
> le group 5 c'est pour la longueur du way, vu qu'il n'y a pas d'aggregation
> dessus, il faut le mettre dans le group by.
>
> La requête a besoin d'un index sur le ref:INSEE pour être rapide... c'est
> le cas sur osm105 où j'ai testé ça.
>
> Le 15 mai 2015 10:43, didier2020 <didier2020 at free.fr> a écrit :
>
> > cool merci,
> >
> > group by 1,2,3,4,5 ?
> > goup by je vois mais c a 5 cela correspond à ?
> >
> > il me manquait les codes insee
> > pour trouver sur quelle commune etait le VRAI "name"
> > avec http://cadastre.openstreetmap.fr/fantoir/
> > (c'est pas toujours évident)
> >
> > la majorité des "erreurs" sont sur les RD
> > - name avec la valeur du ref
> > - name mis sans découpage du way sur l'emprise de la rue
> > - split d'un way sans enlever le name
> >
> >
> >
> > Le vendredi 15 mai 2015 à 09:32 +0200, Christian Quest a écrit :
> > > Voilà de quoi faire:
> > >
> > > select h.osm_id, h.highway, h.name, h.ref,
> > > st_length(st_transform(h.way,2154))/1000 as km, count(*) as nb,
> > > string_agg(c.tags->'ref:INSEE',' ' order by c.tags->'ref:INSEE') as
> > > insee from planet_osm_line h join planet_osm_polygon c on (c.boundary
> > > is not null and c.admin_level='8' and c.tags ? 'ref:INSEE' and
> > > st_intersects(c.way,h.way)) where h.highway is not null and
> > > c.tags->'ref:INSEE' like '94%' and h.name is not null group by
> > > 1,2,3,4,5 order by nb desc, km desc;
> > >
> > >
> > > ça sort ça pour le 94 en 1s...
> > >
> > > osm_id | highway | name |
> > > ref | km | nb | insee
> > >
> >
> -----------+-------------+------------------------------------------+------+------------------+----+-------------------------
> > > 28668562 | track | Chemin du Vieux Colombier |
> > > | 2.91488193057937 | 4 | 94004 94048 94070 94071
> > > 60738141 | path | Ligne de Paris-Bastille à Marles-en-Brie |
> > > | 3.02463682219015 | 3 | 94047 94048 94075
> > > 24913577 | track | Chemin du Parc aux Boeufs |
> > > | 2.44325866723766 | 3 | 94048 94060 94071
> > > 43369126 | track | Chemin du Poteau |
> > > | 2.23332426743423 | 3 | 94060 94070 94071
> > > 43368301 | track | Chemin de Saint-Nicolas |
> > > | 1.81601370313942 | 3 | 94053 94060 94071
> > > 4573532 | motorway | Autoroute du Soleil |
> > > A 6a | 1.4758116729325 | 3 | 94016 94038 94076
> > > 161231620 | residential | Chemin des Boeufs |
> > > | 1.27336749011341 | 3 | 94022 94028 94078
> > > 43368511 | track | Allée Dauphine |
> > > | 1.26276853571814 | 3 | 94060 94070 94071
> > > 284745962 | primary | Avenue de Lattre de Tassigny |
> > > N 19 | 1.12256190972095 | 3 | 94004 94048 94075
> > > 25150801 | motorway | Autoroute de l'Est |
> > > A 4 | 1.004138777096 | 3 | 94015 94017 94079
> > >
> > >
> > > On peut virer les motorway ;)
> > >
> > >
> > >
> > > Le 10 mai 2015 11:49, didier2020 <didier2020 at free.fr> a écrit :
> > > j'ai commencé par dégrossir les erreurs avec :
> > >
> > > select osm_id,name
> > > from planet_osm_line
> > > where
> > > highway is not null and
> > > name is not null and
> > > (
> > > upper(left(name,3)) = 'RUE'
> > > or upper(left(name,6))='AVENUE'
> > > or upper(left(name,5))='ALLEE'
> > > or upper(left(name,6))='PLACE'
> > > )
> > > and (ST_Length(ST_Transform(way,2154))/1000)>5.0
> > >
> > >
> > > Le samedi 09 mai 2015 à 15:28 +0200, Vincent de
> > > Château-Thierry a
> > > écrit :
> > > > Bonjour,
> > > >
> > > > Le 08/05/2015 12:24, didier2020 a écrit :
> > > > > voila c'est dans le titre ...
> > > > >
> > > > > depuis que je "banote" j'ai remarqué plusieur fois :
> > > > > un nom est mis sur une voie mais comme celle-ci n'est pas
> > > découpée,
> > > > > ce nom est erroné sur la commune voisine.
> > > > >
> > > > > donc
> > > > > le but est de trouver l'id d'un way
> > > > > de type route (primary, secondary,unclassified, ...)
> > > > > qui est "long" => tri decroissant par la longueur
> > > > > qui a un nom
> > > > > qui a une intersection avec au moins 3 communes
> > > > > => c'est la que je coinse !
> > > > >
> > > > > etape suivante
> > > > > si que 2 il faudrait connaitre la longueur sur les 2...
> > > pour avoir une
> > > > > longueur significative (2km,1km par exemple)
> > > >
> > > > Le souci à corriger peut commencer avec un way (pas
> > > forcément long) qui
> > > > est à cheval sur 2 communes, dès lors qu'il croise la limite
> > > de commune
> > > > plutôt que d'être confondu avec elle.
> > > >
> > > > Tu es dans quel environnement technique pour ça : une BD
> > > PostGIS ? En
> > > > supposant que oui, ta recherche revient à détecter les ways
> > > ayant
> > > > certains de leurs points strictement inclus dans un polygone
> > > "limite de
> > > > commune" et d'autres points dans une autre commune, toujours
> > > en stricte
> > > > inclusion, donc pas superposés à la limite.
> > > > Une manière d'approcher le résultat si tu as les ways et
> > > polygones sous
> > > > la main :
> > > > SELECTion de l'ID du way, et du code INSEE du polygone admin
> > > 8 dans
> > > > lequel est inclus le 1er point du way,
> > > > UNION
> > > > SELECTion de l'ID du way, et du code INSEE du polygone admin
> > > 8 dans
> > > > lequel est inclus le dernier point du way
> > > >
> > > > Ça va te sortir une liste où, pour un way inclus dans une
> > > seule commune,
> > > > tu auras une seule ligne en sortie (vu que le UNION
> > > dédoublonne). Ce qui
> > > > va t'intéresser c'est les ways pour lesquels tu as 2 lignes
> > > qui sortent
> > > > : ils sont à cheval sur 2 communes au moins.
> > > >
> > > > Ca ne gère pas tout, notamment les cas où le way commence et
> > > finit dans
> > > > la même commune mais fait un détour par une commune voisine.
> > > Mais ça
> > > > devrait permettre de dégrossir.
> > > >
> > > > Pour le 1er et le dernier point des ways tu as ST_StartPoint
> > > et
> > > > ST_EndPoint tous cuits.
> > > >
> > > > vincent
> > > >
> > > > _______________________________________________
> > > > dev-fr mailing list
> > > > dev-fr at openstreetmap.org
> > > > https://lists.openstreetmap.org/listinfo/dev-fr
> > >
> > >
> > >
> > > _______________________________________________
> > > dev-fr mailing list
> > > dev-fr at openstreetmap.org
> > > https://lists.openstreetmap.org/listinfo/dev-fr
> > >
> > >
> > >
> > >
> > > --
> > > Christian Quest - OpenStreetMap France
> > > _______________________________________________
> > > dev-fr mailing list
> > > dev-fr at openstreetmap.org
> > > https://lists.openstreetmap.org/listinfo/dev-fr
> >
> >
> >
> > _______________________________________________
> > dev-fr mailing list
> > dev-fr at openstreetmap.org
> > https://lists.openstreetmap.org/listinfo/dev-fr
> >
>
>
>
> --
> Christian Quest - OpenStreetMap France
>
>
> _______________________________________________
> dev-fr mailing list
> dev-fr at openstreetmap.org
> https://lists.openstreetmap.org/listinfo/dev-fr
>
--
Christian Quest - OpenStreetMap France
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://lists.openstreetmap.org/pipermail/dev-fr/attachments/20150515/aa5c1d0f/attachment.html>
Plus d'informations sur la liste de diffusion dev-fr