[OSM-dev-fr] Détection de mailles de réseau ouvertes

Vincent de Chateau-Thierry vdct at laposte.net
Mer 16 Mar 13:56:00 GMT 2011


Bonjour,
Pour rebondir sur ce mail [1], et avec le retour d'Osmose et son schéma Osmosis,
je vous propose une requête [3] qui permet de detecter les discontinuités du réseau
par niveau de réseau (primary, secondary, etc.). 
Le principe des mailles de réseau imbriquées est rappelé sur le wiki [2]. L'idée de la
requête est de détecter les ruptures dans ces mailles, en cherchant les nodes qui
respectent les conditions suivantes :

- le node est situé à une extrémité de way d'un niveau de réseau donné (par ex : primary)
- le node n'est référencé qu'une seule fois par tous les ways du niveau donné et des
niveaux "supérieurs" (ici : primary, trunk et motorway, et les *_link correspondants).
Lorsque les deux conditions sont respectées, alors on a à faire à un "cul-de-sac" du
niveau de réseau donné.

Je n'ai testé que sur Nord-Pas-de-Calais, avec des cas qui marchent :

http://www.openstreetmap.org/browse/node/664044070
http://www.openstreetmap.org/browse/node/314072806
http://www.openstreetmap.org/browse/node/339723997
http://www.openstreetmap.org/browse/node/1083572614

et d'autres qui ne marchent pas :

http://www.openstreetmap.org/browse/node/955800025
http://www.openstreetmap.org/browse/node/900604729
http://www.openstreetmap.org/browse/node/717798691

La liste complete des IDs retournés (88 sur NPC) est en bas du mail [4].

Pour les cas qui ne marchent pas, j'ai dans mon extrait Nord-Pas-deCalais de Geofabrik
une définition différente (tronquée) des ways, et par suite un node en plein milieu du
way (en vrai) se retrouve chez moi en extrémité du way. Est-ce un effet de bord des
emprises d'extraction Geofabrik ?

Si des détenteurs de schéma Osmosis v6 peuvent tester ce que ça donne et faire un retour,
la requête pourrait (si c'est concluant) se convertir en test dans Osmose, en déclinant
le principe sur les différents niveaux de réseau.

merci pour vos retours
vincent

[1] : http://lists.openstreetmap.org/pipermail/talk-fr/2011-March/031186.html

[2] : 
http://wiki.openstreetmap.org/wiki/FR:France_roads_tagging#Exemple_2_de_ce_qu.27il_ne_fau
t_pas_faire

[3] :
--
-- index à créer au préalable
-- create index hidx_ways_tags on ways using gin(tags);

select nodes_at_end.node_id
from 
(
select wn.node_id
from ways w 
join way_nodes wn on w.id = wn.way_id
where w.tags @> 'highway=>primary' and
wn.sequence_id = 0
union 
select node_id 
from
( 
select w.id,wn.node_id,rank() over(partition by w.id order by 
wn.sequence_id desc)seq_inverse
from ways w 
join way_nodes wn on w.id = wn.way_id
where w.tags @> 'highway=>primary'
) i
where i.seq_inverse = 1
) nodes_at_end
join
(
select wn.node_id
from ways w join way_nodes wn on w.id = wn.way_id
where (
w.tags @> 'highway=>primary' 
or w.tags @> 'highway=>primary_link'
or w.tags @> 'highway=>motorway'
or w.tags @> 'highway=>motorway_link'
or w.tags @> 'highway=>trunk'
or w.tags @> 'highway=>trunk_link'
)
group by wn.node_id 
having count(*) = 1
) nodes_in_ways
on nodes_at_end.node_id = nodes_in_ways.node_id;
--

[4] :
/****** IDs des nodes detectés *********/
22601556
146850824
149375005
225048672
232445227
242836430
252509599
252509602
254492292
257821141
262107104
267272574
270367404
280062007
294806893
294806925
294810040
296497328
297296081
299846277
302933972
302944547
303443999
306222079
306222091
310171442
313919118
313919119
314072806
320432488
321684711
330618703
339723997
363728163
375919732
403788428
403788456
403797554
403797607
403800983
410493943
411853431
416379513
417102320
418365519
435655660
443822314
446020664
446020665
454631330
491082314
506769342
517498386
530185961
535308633
565683721
618287122
644618645
664044070
671151734
676823973
699932953
717798691
774479626
782738822
811997306
826152556
842210146
900604729
924656755
932372495
934920033
944696767
954557840
955800025
958383923
986682246
1014191255
1055566627
1075948347
1081117116
1083572614
1096401612
1165816015
1170511547
1172079796
1189344219
1189745680


Une messagerie gratuite, garantie à vie et des services en plus, ça vous tente ?
Je crée ma boîte mail www.laposte.net




Plus d'informations sur la liste de diffusion dev-fr