Re: [OSM-dev-fr] requete pour trouver un way qui intersecte plusieurs communes
Le dimanche 24 mai 2015 à 15:47 +0200, Frédéric Rodrigo a écrit : Bon ok on reste sur la France et un utilise la tag name en plus de highway. 1. Je prend quoi pour filtrer sur par name ? Rue Impasse Passage Ruelle Boulevard j'exclus Allée Avenue a cause des forets... 2. On peut faire exactement même chose avec highway.tags?'ref:INSEE' ? voir même en une seule fois avec un OR ? j'ai pas saisi ... 3) ajouter aux highway a exclure bridleway bus_guideway bus_stop steps viaferrata Voilà ce que j'ai : SELECT id, ST_AsText(intersection) FROM ( SELECT highway.id, highway.linestring, ST_ClosestPoint(highway.linestring, ST_Intersection(admin.linestring, highway.linestring)) AS intersection FROM relations JOIN relation_members ON relation_members.relation_id = relations.id AND relation_members.member_type = 'W' JOIN ways AS admin ON admin.id = relation_members.member_id AND ST_NPoints(admin.linestring) 1 JOIN ways AS highway ON -- les ways qui ne sont pas des autoroutes, qui ont un tag name et qui sont a 1km highway.tags?'highway' AND NOT highway.tags-'highway' IN ('construction', 'proposed', 'motorway', 'trunk', 'motorway_link', 'trunk_link', 'raceway') AND highway.tags?'name' AND ST_Length(highway.linestring, false) 1000 AND ST_NPoints(highway.linestring) 1 AND -- avec une intersection ST_Intersects(admin.linestring, highway.linestring) WHERE relations.tags?'type' AND relations.tags-'type' = 'boundary' AND relations.tags?'boundary' AND relations.tags-'boundary' = 'administrative' AND relations.tags?'admin_level' AND relations.tags-'admin_level' = '8' ) AS t WHERE -- la taille de l'intersection par rapport a la longueur de la voie est significative ST_Line_Locate_Point(linestring, intersection) BETWEEN .1 AND .9 ; Le 19/05/2015 18:16, Jérôme Amagat a écrit : liste des types de highway dans routes.csv avec leur occurance : Il faut se limiter à certains. Moi je dirais, ceux là : primary, secondary, tertiary, unclassified, residential, track,living_street plus surement ceux la : primary_link, secondary_link, tertiary_link, service, road peut être : trunk, trunk_link, footway, cycleway, bridleway, pedestrian, path, steps Mais pas ceux là : motorway, motorway_link, construction, proposed, raceway, corridor, bus_stop, via_ferrata, bus_guideway, platform Apres, il y a aussi le problème des routes nommés qui dépassent seulement de quelques mètres ou dizaines de mètre sur la commune d'à coté ou celles qui longent plus ou moins la frontière en empiétant des 2 cotés. Le 19 mai 2015 15:08, didier2020 didier2...@free.fr mailto:didier2...@free.fr a écrit : Le mardi 19 mai 2015 à 09:29 +0200, Frédéric Rodrigo a écrit : J'aimerais bien que l'analyse puisse être internationale. Filer sur un type de hygjway c'est possible ? pour la france je dirais 'primary','secondary','primary_link','secondary_link','tertiary','tertiary_link', 'residential', 'unclassified', 'service', 'road' mais je ne suis pas sur que cela vaut pour les autres pays... Le 18 mai 2015 23:01, didier2020 didier2...@free.fr mailto:didier2...@free.fr a écrit : aprés avoir corrigé un bon nombre de détection, je ne pense pas que cela soit la géométrie de l'intersection qui importe, mais plutôt la nature de la voie : J'ai remarqué que les intersections complexes sont plus liés aux écarts entre le tracé Bing vs tracé cadastre . Faire une analyse sans faux positifs grace au premier mot du name : upper(split_part(tag-'name',' ', 1) in () Toujours a corriger Rue , Place, Impasse Mitigé : Avenue - Allée (dans les forets) Faux positifs : Route Chemin Chaussée Le lundi 18 mai 2015 à 21:54 +0200, Frédéric Rodrigo a écrit : Le 17/05/2015 11:08, didier2020 a écrit : 1) colonne intersectioncomplexe ajoutée ( a prioris il y aura plus de faux positif si .t.) voir id=153318806 ou id=111737255 Pour osmose, on prend ou on prend pas ? on prend tout, le critere etant ailleur. ___ 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
Re: [OSM-dev-fr] requete pour trouver un way qui intersecte plusieurs communes
-l'analyse n'est pas du tout internationale, plutot pointue mais avec peu de faux positif (pour ce que j'ai corrigé jusqu'a maintenant) - il vaux mieux prendre des way qui sont longs, je pense que pour les plus petits, d'autres analyses serait plus pertinente ou aurait le meme effet de correction (point adresse eloigné du way, associated street sans tag complémentaire xx:left ou xx:right dont le way est sur plusieurs commune, analyse/verification de bano ou autre ?) select t.id, -- a adapter a osmose ST_AsText(ST_Centroid(t.linestring)) FROM ( SELECT highway.id, highway.linestring, ST_ClosestPoint(highway.linestring, ST_Intersection(admin.linestring,highway.linestring)) AS intersection FROM relations JOIN relation_members ON relation_members.relation_id = relations.id AND relation_members.member_type = 'W' JOIN ways AS admin ON admin.id = relation_members.member_id AND ST_NPoints(admin.linestring) 1 JOIN ways AS highway ON -- way qui sont a 2km et -- qui ont le debut du name qui commence par RUE et certain type de highway -- OU qui ont un code fantoir (avec ou sans name) highway.tags?'highway' AND ( ( highway.tags-'highway' IN ('primary','secondary','primary_link','secondary_link','tertiary','tertiary_link', 'residential', 'unclassified', 'service', 'road') and highway.tags?'name' AND upper(left(highway.tags-'name',3))='RUE' ) or highway.tags ? 'ref:FR:FANTOIR' ) and ST_Length(highway.linestring, false) 2000 AND ST_NPoints(highway.linestring) 1 AND -- avec une intersection ST_Intersects(admin.linestring, highway.linestring) WHERE relations.tags?'type' AND relations.tags-'type' = 'boundary' AND relations.tags?'boundary' AND relations.tags-'boundary' = 'administrative' AND relations.tags?'admin_level' AND relations.tags-'admin_level' = '8' AND relations.tags?'ref:INSEE' ) AS t WHERE -- la taille de l'intersection par rapport a la longueur de la voie est significative ST_Line_Locate_Point(linestring, intersection) 0.1 AND ST_Line_Locate_Point(linestring, intersection) 0.9 group by 1,2 ; ___ dev-fr mailing list dev-fr@openstreetmap.org https://lists.openstreetmap.org/listinfo/dev-fr
Re: [OSM-dev-fr] requete pour trouver un way qui intersecte plusieurs communes
J'aimerais bien que l'analyse puisse être internationale. Filer sur un type de hygjway c'est possible ? Le 18 mai 2015 23:01, didier2020 didier2...@free.fr a écrit : aprés avoir corrigé un bon nombre de détection, je ne pense pas que cela soit la géométrie de l'intersection qui importe, mais plutôt la nature de la voie : J'ai remarqué que les intersections complexes sont plus liés aux écarts entre le tracé Bing vs tracé cadastre . Faire une analyse sans faux positifs grace au premier mot du name : upper(split_part(tag-'name',' ', 1) in () Toujours a corriger Rue , Place, Impasse Mitigé : Avenue - Allée (dans les forets) Faux positifs : Route Chemin Chaussée Le lundi 18 mai 2015 à 21:54 +0200, Frédéric Rodrigo a écrit : Le 17/05/2015 11:08, didier2020 a écrit : 1) colonne intersectioncomplexe ajoutée ( a prioris il y aura plus de faux positif si .t.) voir id=153318806 ou id=111737255 Pour osmose, on prend ou on prend pas ? on prend tout, le critere etant ailleur. ___ 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 ___ dev-fr mailing list dev-fr@openstreetmap.org https://lists.openstreetmap.org/listinfo/dev-fr
Re: [OSM-dev-fr] requete pour trouver un way qui intersecte plusieurs communes
Christian Quest cqu...@openstreetmap.fr a ?crit : J'ai sorti un CSV du résultat sur la France entière: http://osm105.openstreetmap.fr/~cquest/routes.csv 92750 cas à vérifier... ;) Je crains qu'on passe encore à côté d'un certain nombre de cas à cause des redécoupages ultérieurs des voies: - un premier contributeur, il y a longtemps (dans une galaxie lointaine...) a mis le nom sur le way qui parcours 10 communes - un second contributeur a coupé le way en plusieurs morceaux pour mettre les ponts (sur la rivière formant la limite entre les communes) ou les limites de vitesses qui peuvent changer aux limites de communes Je pense qu'il faudrait une analyse qui aille au delà d'un seul way et qui regroupe les ways consécutifs portant le même nom. Je ne parle pas du troisième contributeur qui a renommé certains morceaux au milieu en constatant que ça ne collait pas au terrain :-p Eric ___ dev-fr mailing list dev-fr@openstreetmap.org https://lists.openstreetmap.org/listinfo/dev-fr
Re: [OSM-dev-fr] requete pour trouver un way qui intersecte plusieurs communes
Le mardi 19 mai 2015 à 09:29 +0200, Frédéric Rodrigo a écrit : J'aimerais bien que l'analyse puisse être internationale. Filer sur un type de hygjway c'est possible ? pour la france je dirais 'primary','secondary','primary_link','secondary_link','tertiary','tertiary_link', 'residential', 'unclassified', 'service', 'road' mais je ne suis pas sur que cela vaut pour les autres pays... Le 18 mai 2015 23:01, didier2020 didier2...@free.fr a écrit : aprés avoir corrigé un bon nombre de détection, je ne pense pas que cela soit la géométrie de l'intersection qui importe, mais plutôt la nature de la voie : J'ai remarqué que les intersections complexes sont plus liés aux écarts entre le tracé Bing vs tracé cadastre . Faire une analyse sans faux positifs grace au premier mot du name : upper(split_part(tag-'name',' ', 1) in () Toujours a corriger Rue , Place, Impasse Mitigé : Avenue - Allée (dans les forets) Faux positifs : Route Chemin Chaussée Le lundi 18 mai 2015 à 21:54 +0200, Frédéric Rodrigo a écrit : Le 17/05/2015 11:08, didier2020 a écrit : 1) colonne intersectioncomplexe ajoutée ( a prioris il y aura plus de faux positif si .t.) voir id=153318806 ou id=111737255 Pour osmose, on prend ou on prend pas ? on prend tout, le critere etant ailleur. ___ 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 ___ 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
Re: [OSM-dev-fr] requete pour trouver un way qui intersecte plusieurs communes
Le 19 mai 2015 18:16, Jérôme Amagat jerome.ama...@gmail.com a écrit : liste des types de highway dans routes.csv avec leur occurance : unclassified 20923 residential 20637 tertiary 16783 track 11960 secondary 10341 primary 5270 path 2762 service 1325 trunk 726 footway 697 cycleway 629 road 139 living_street 109 motorway_link 70 bridleway 68 trunk_link 55 pedestrian 55 primary_link 46 construction 26 proposed 21 raceway 19 tertiary_link 19 steps 16 bus_guideway 15 platform 14 secondary_link 13 corridor 3 bus_stop 3 via_ferrata 3 unclassified;residential 1 unclassified;tertiary 1 Il faut se limiter à certains. Moi je dirais, ceux là : primary, secondary, tertiary, unclassified, residential, track, living_street plus surement ceux la : primary_link, secondary_link, tertiary_link, service, road Pas road, ou alors juste comme un alias, synoryme de unclassified (certains ont d'autres avis justement parce qu'ils inclus des voies non routières dans les highways (par exemple les vias ferratas sont des voies nécessitant un équipement sportif particulier et un entrainement spécifique, sinon elles sont très dangereuses; et elles ne sont pas à pratiquer seul). peut être : trunk, trunk_link, footway, cycleway, bridleway, pedestrian, path, steps. OK pour steps, mais les bridleways sont davantage des restrictions d'accès que des équipements très spécifiques. Sinon ce sont des allées piétonnes comme les autres (et parfois aussi ouvert à certains véhicules privés autorisés). On en trouve rarement dans les espaces publics, ce sont surtout des chemins de service internes à des propriétés privées, clubs hippiques, ou hippodromes. Partout ailleurs il n'y a pas d'espace réservé aux seuls chevaux. D'ailleurs la plupart des bridleways (bon nombre en fait des chemins de ferme) sont maintenant des chemins piétons classiques, et ouverts aussi aux cyclistes, il n'y en a plus du tout dans les villes actuelles. D'ailleurs les voisins des fermiers se plaignent dans des animaux ou troupeaux utilisent les rues et routes normales (alors qu'ils ne peuvent plus faire autrement) et les bergers doivent demander des autorisations spéciales pour fermer les routes le temps de déplacer les troupeaux sur la voie publique. Et la gendarmerie fait vite dégager les cavaliers des routes du réseau principal ou secondaire (les cavaliers ne sont admis que sur le réseau tertiaire et dans des espaces limités des campagnes et forêts, et dont les routes sont balisées pour avertir la présence de chevaux) Mais pas ceux là : motorway, motorway_link, construction, proposed , raceway, corridor, bus_stop, via_ferrata, bus_guideway, platform - proposed: OK, car on utilise plutôt le tag proposed:highway=* - motorway: pas du tout d'accord (je ne vais pas être le seul, les autoroutes ne sont pas que des voies rapides du réseau primaire, alors que tu mets au donditionnel aussi les trunk !) - raceway: on peut envisager que c'est en fait une route de service (accès réservé à certains véhicules ayant une autorisation spéciale, interdit à tous les autres; cependant on est en plus dans des terrains privés, bref la législation devient floue à leur sujet, gormis les obligations relatives à l'accueil du public et la protection du voisinage; sinon ces lieux n'existent que temporairement le temps d'une course et rouverts ensuite à la circulation normale); à voir donc plutôt ave la façon plus générale de taguer les espaces sportifs (stades, etc... y compris pelouses, terrains marqués pour certains sports, gradins/tribunes, batiments, et pistes de toutes sortes: le circuit raceway est très secondaire dans tout ça et soit c'est un highwya normal réservé le temps d'une course, soit c'est une voie de service à suage sportif donc highway=service; service=raceway et sport=car_racing ou autres sports motorisés) Apres, il y a aussi le problème des routes nommés qui dépassent seulement de quelques mètres ou dizaines de mètre sur la commune d'à coté ou celles qui longent plus ou moins la frontière en empiétant des 2 cotés. Plus que la route seule, ce sont les propriétés longées et accessibles par cette route qui posent le problème des adresses qui font déborder beaucoup plus qu'on ne s'imagine le nom des voies, en incluant non seulement les façades mais une large surface derrière, et ce n'est pas parce que les occupants ont leur appartement du côté opposé à cette rue qu'il ne sont pas à la même adresse, il peut même arriver que le bâtiment soit à cheval sur la frontière communale et on peut se demander alors à quelle commune revient tel appartement dans le même immeuble quand tous ses accès se font uniquement d'un seul côté depuis la voirie publique qui est entièrement sur une seule commune). Le cas est plus fréquent dans les périphéries de villes assez grandes pour avoir une banlieue, dans les zones commerciales et industrielles, où tel ou tel entrepôt ou magasin peut se retrouver à cheval sur plusieurs communes. Mais des
Re: [OSM-dev-fr] requete pour trouver un way qui intersecte plusieurs communes
aprés avoir corrigé un bon nombre de détection, je ne pense pas que cela soit la géométrie de l'intersection qui importe, mais plutôt la nature de la voie : J'ai remarqué que les intersections complexes sont plus liés aux écarts entre le tracé Bing vs tracé cadastre . Faire une analyse sans faux positifs grace au premier mot du name : upper(split_part(tag-'name',' ', 1) in () Toujours a corriger Rue , Place, Impasse Mitigé : Avenue - Allée (dans les forets) Faux positifs : Route Chemin Chaussée Le lundi 18 mai 2015 à 21:54 +0200, Frédéric Rodrigo a écrit : Le 17/05/2015 11:08, didier2020 a écrit : 1) colonne intersectioncomplexe ajoutée ( a prioris il y aura plus de faux positif si .t.) voir id=153318806 ou id=111737255 Pour osmose, on prend ou on prend pas ? on prend tout, le critere etant ailleur. ___ 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
Re: [OSM-dev-fr] requete pour trouver un way qui intersecte plusieurs communes
1) colonne intersectioncomplexe ajoutée ( a prioris il y aura plus de faux positif si .t.) voir id=153318806 ou id=111737255 2) la meme route decoupée en plusieurs morceaux - 1 morceau etait un way de la frontiere entre 2 communes = pas dans analyse = ok (39219738) - 1 autre morceau avec une intersection avec encore une autre commune = trouvé dans analyse = ok(107747493) ce meme nom est bien présent dans fantoir : 591840060A 593660047V 594970200S en ne mettant pas ref:FR:FANTOIR, le rapprochement est fait (points bleu) = - l'analyse est ok - la description actuelle dans osm permet de faire le rapprochement bano (sans code fantoir) - faut-il splitter ce way et lui attribuer un code fantoir par commune ? -- l'analyse utilisée : -- SELECT id, st_astext(intersection) as locosmose, count(*) as nbintersection, sum(anadm)0 as intersectioncomplexe FROM ( SELECT highway.id, highway.linestring, ST_ClosestPoint(highway.linestring, ST_Intersection(admin.linestring,highway.linestring)) AS intersection, case when GeometryType(ST_Intersection(admin.linestring,highway.linestring))='MULTIPOINT' then 1 else 0 end as anadm FROM relations JOIN relation_members ON relation_members.relation_id = relations.id AND relation_members.member_type = 'W' JOIN ways AS admin ON admin.id = relation_members.member_id AND ST_NPoints(admin.linestring) 1 JOIN ways AS highway ON -- les ways qui ne sont pas des voies type autoroute ni des raceway, qui ont un tag name et qui sont a 1km highway.tags?'highway' AND NOT highway.tags-'highway' IN ('proposed', 'motorway', 'trunk', 'motorway_link', 'trunk_link','raceway') AND highway.tags?'name' AND ST_Length(highway.linestring, false) 1000 AND ST_NPoints(highway.linestring) 1 AND -- avec une intersection ST_Intersects(admin.linestring, highway.linestring) WHERE relations.tags?'type' AND relations.tags-'type' = 'boundary' AND relations.tags?'boundary' AND relations.tags-'boundary' = 'administrative' AND relations.tags?'admin_level' AND relations.tags-'admin_level' = '8' AND relations.tags?'ref:INSEE' ) AS t WHERE -- la taille de l'intersection par rapport a la longueur de la voie est significative ST_Line_Locate_Point(linestring, intersection) 0.1 AND ST_Line_Locate_Point(linestring, intersection) 0.9 group by 1,2 ; ___ dev-fr mailing list dev-fr@openstreetmap.org https://lists.openstreetmap.org/listinfo/dev-fr
Re: [OSM-dev-fr] requete pour trouver un way qui intersecte plusieurs communes
j'ai bati un truc a partir de la requete de christian sur une base osmosis . j'ai pas réussi a aggreger les communes - longueur du way dans la commune. Le samedi 16 mai 2015 à 11:42 +0200, Frédéric Rodrigo a écrit : Le 15/05/2015 18:36, Christian Quest a écrit : Suite à cet échange et à une demande de didier2020, j'ai sorti un CSV des highway qui portent un nom et qui croisent plusieurs communes. Les motorway ont été retiré, et c'est trié par nombre de communes croisées, puis par kilométrage décroissant. La liste des codes INSEE des communes croisées est indiquée. C'est ici: http://osm105.openstreetmap.fr/~cquest/routes.csv A affiner pour une future analyse osmose ? Si vous avais une requête qui tourne sur base osmosis je prends. ___ Talk-fr mailing list talk...@openstreetmap.org https://lists.openstreetmap.org/listinfo/talk-fr ___ dev-fr mailing list dev-fr@openstreetmap.org https://lists.openstreetmap.org/listinfo/dev-fr
Re: [OSM-dev-fr] requete pour trouver un way qui intersecte plusieurs communes
c'est mieux avec la requete ... Le samedi 16 mai 2015 à 16:25 +0200, didier2020 a écrit : j'ai bati un truc a partir de la requete de christian sur une base osmosis . j'ai pas réussi a aggreger les communes - longueur du way dans la commune. Le samedi 16 mai 2015 à 11:42 +0200, Frédéric Rodrigo a écrit : Le 15/05/2015 18:36, Christian Quest a écrit : Suite à cet échange et à une demande de didier2020, j'ai sorti un CSV des highway qui portent un nom et qui croisent plusieurs communes. Les motorway ont été retiré, et c'est trié par nombre de communes croisées, puis par kilométrage décroissant. La liste des codes INSEE des communes croisées est indiquée. C'est ici: http://osm105.openstreetmap.fr/~cquest/routes.csv A affiner pour une future analyse osmose ? Si vous avais une requête qui tourne sur base osmosis je prends. ___ Talk-fr mailing list talk...@openstreetmap.org https://lists.openstreetmap.org/listinfo/talk-fr select h.id, h.name as nameway, h.ref as refway, c.ref_insee as insee, ST_Length(st_intersection(c.polygon,h.wline),false)/1000 as km_in_com from ( -- les ways qui ne sont pas des autoroutes, qui ont un tag name et qui sont a 1km select id,tags-'highway' as highway,tags-'name' as name,tags-'ref'as ref,linestring::geography as wline from debugwithjosm.ways where tags ? 'highway' and not tags-'highway' in ('proposed','motorway','trunk','motorway_link','trunk_link') and tags ? 'name' and ST_Length(linestring,false)/10001.00 ) as h join ( -- les communes SELECT relations.id AS id, relations.tags-'ref:INSEE' AS ref_insee, ST_Polygonize(ways.linestring) AS polygon FROM debugwithjosm.relations JOIN debugwithjosm.relation_members ON relation_members.relation_id = relations.id AND relation_members.member_type = 'W' JOIN debugwithjosm.ways ON ways.id = relation_members.member_id AND ST_NPoints(ways.linestring) 1 WHERE relations.tags?'type' AND relations.tags-'type' = 'boundary' AND relations.tags?'boundary' AND relations.tags-'boundary' = 'administrative' AND relations.tags?'admin_level' AND relations.tags-'admin_level' = '8' and relations.tags?'ref:INSEE' GROUP BY relations.id, relations.tags-'ref:INSEE' ) as c -- avec une intersection on st_intersects(c.polygon,h.wline) where --ST_Length(st_intersection(c.polygon,h.wline),false)/10001.0 and -- la taille de l'intersection par rapport a la longueur de la voie est significative ST_Length(st_intersection(c.polygon,h.wline),false)/ST_Length(h.wline)0.20 ; ___ dev-fr mailing list dev-fr@openstreetmap.org https://lists.openstreetmap.org/listinfo/dev-fr
Re: [OSM-dev-fr] requete pour trouver un way qui intersecte plusieurs communes
Salut, Voilà ce que j'en ai fait, regarde un peut les résultats et si tu peux l'améliorer. Il y a un bug avec les voies qui reviennent dans la commune d'origine, à voir si c'est est acceptable. SELECT id FROM ( SELECT highway.id, highway.linestring, ST_ClosestPoint(highway.linestring, ST_Intersection(admin.linestring, highway.linestring)) AS intersection FROM relations JOIN relation_members ON relation_members.relation_id = relations.id AND relation_members.member_type = 'W' JOIN ways AS admin ON admin.id = relation_members.member_id AND ST_NPoints(admin.linestring) 1 JOIN ways AS highway ON -- les ways qui ne sont pas des autoroutes, qui ont un tag name et qui sont a 1km highway.tags?'highway' AND NOT highway.tags-'highway' IN ('proposed', 'motorway', 'trunk', 'motorway_link', 'trunk_link') AND highway.tags?'name' AND ST_Length(highway.linestring, false) 1000 AND ST_NPoints(highway.linestring) 1 AND -- avec une intersection ST_Intersects(admin.linestring, highway.linestring) WHERE relations.tags?'type' AND relations.tags-'type' = 'boundary' AND relations.tags?'boundary' AND relations.tags-'boundary' = 'administrative' AND relations.tags?'admin_level' AND relations.tags-'admin_level' = '8' AND relations.tags?'ref:INSEE' ) AS t WHERE -- la taille de l'intersection par rapport a la longueur de la voie est significative ST_Line_Locate_Point(linestring, intersection) 0.1 AND ST_Line_Locate_Point(linestring, intersection) 0.9 ; Le 16/05/2015 16:26, didier2020 a écrit : c'est mieux avec la requete ... Le samedi 16 mai 2015 à 16:25 +0200, didier2020 a écrit : j'ai bati un truc a partir de la requete de christian sur une base osmosis . j'ai pas réussi a aggreger les communes - longueur du way dans la commune. Le samedi 16 mai 2015 à 11:42 +0200, Frédéric Rodrigo a écrit : Le 15/05/2015 18:36, Christian Quest a écrit : Suite à cet échange et à une demande de didier2020, j'ai sorti un CSV des highway qui portent un nom et qui croisent plusieurs communes. Les motorway ont été retiré, et c'est trié par nombre de communes croisées, puis par kilométrage décroissant. La liste des codes INSEE des communes croisées est indiquée. C'est ici: http://osm105.openstreetmap.fr/~cquest/routes.csv A affiner pour une future analyse osmose ? Si vous avais une requête qui tourne sur base osmosis je prends. ___ Talk-fr mailing list talk...@openstreetmap.org https://lists.openstreetmap.org/listinfo/talk-fr ___ dev-fr mailing list dev-fr@openstreetmap.org https://lists.openstreetmap.org/listinfo/dev-fr
Re: [OSM-dev-fr] requete pour trouver un way qui intersecte plusieurs communes
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
Re: [OSM-dev-fr] requete pour trouver un way qui intersecte plusieurs communes
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 Bœufs | | 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
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
Re: [OSM-dev-fr] requete pour trouver un way qui intersecte plusieurs communes
- 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
Re: [OSM-dev-fr] requete pour trouver un way qui intersecte plusieurs communes
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, didier2...@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 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
Re: [OSM-dev-fr] requete pour trouver un way qui intersecte plusieurs communes
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
Re: [OSM-dev-fr] requete pour trouver un way qui intersecte plusieurs communes
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. ok (presque compris) en tout cas merci ! je vais essayer ca 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
Re: [OSM-dev-fr] requete pour trouver un way qui intersecte plusieurs communes
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
[OSM-dev-fr] requete pour trouver un way qui intersecte plusieurs communes
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) merci de vos suggestions didier ___ dev-fr mailing list dev-fr@openstreetmap.org https://lists.openstreetmap.org/listinfo/dev-fr