- 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 <cqu...@openstreetmap.fr>
À: Discussions développeur OSM en français <dev-fr@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 <didier2...@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 <didier2...@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@openstreetmap.org
> >         > https://lists.openstreetmap.org/listinfo/dev-fr
> >
> >
> >
> >         _______________________________________________
> >         dev-fr mailing list
> >         dev-fr@openstreetmap.org
> >         https://lists.openstreetmap.org/listinfo/dev-fr
> >
> >
> >
> >
> > --
> > Christian Quest - OpenStreetMap France
> > _______________________________________________
> > dev-fr mailing list
> > dev-fr@openstreetmap.org
> > https://lists.openstreetmap.org/listinfo/dev-fr
>
>
>
> _______________________________________________
> dev-fr mailing list
> dev-fr@openstreetmap.org
> https://lists.openstreetmap.org/listinfo/dev-fr
>



-- 
Christian Quest - OpenStreetMap France


_______________________________________________
dev-fr mailing list
dev-fr@openstreetmap.org
https://lists.openstreetmap.org/listinfo/dev-fr

Répondre à