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

Répondre à