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