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

2011-10-09 Par sujet Frédéric Rodrigo
J'ai écrit une requête sur un principe légèrement différent. Il ne 
cherche les culs de sac d'écart de niveau d'highway mais que sur les 
intersections.


CASE tags-'highway'
WHEN 'motorway' THEN 0
WHEN 'motorway_link' THEN 0
WHEN 'primary' THEN 1
WHEN 'primary_link' THEN 1
WHEN 'trunk' THEN 1
WHEN 'trunk_link' THEN 1
WHEN 'secondary' THEN 2
WHEN 'tertiary' THEN 3
WHEN 'unclassified' THEN 4
WHEN 'residential' THEN 4
ELSE 5
END AS level

Le principe est par exemple de trouver des primary (level:1) connectées 
directement et uniquement sur des level=3.


J'ai par contre un doute sur le level des trunks.

Voila un exemple d'erreur, il y a une unclassified pour relier deux 
secondary :

http://www.openstreetmap.org/browse/node/820904393

Fred

Le 16/03/2011 21:16, Vincent de Chateau-Thierry a écrit :

Le 16/03/2011 15:08, Frédéric Rodrigo a écrit :
 
  Effectivement les way sont brutalement coupé aux limites de région.
  Suivant les test ça crée de faux positifs. Il faut peut être trouver
  une solution à ça.
 

L'idéal serait d'avoir tous les objets connectés à ceux s'arrêtant à la
frontière, et tous ceux connectés à ceux qui la chevauchent. On pourrait
alors produire des analyses en restant dans l'emprise de la région, en
tolérant les ways chevauchant la limite, mais avec au moins la garantie
que tous les objets considérés sont complets.

Le 16/03/2011 18:56, Eric Marsden a écrit :


Un test similaire est implanté dans OsmInspector (vue routing), qui
identifie les discontinuités par le fait que deux noeuds appartenant à
des highway sont proches mais distincts. Très utile pour détecter et
corriger les bugs non visibles dans les rendus cartographiques mais
qui affectent le routage.

http://tools.geofabrik.de/osmi/



Oui, on reste sur la même thématique. La vue de Geofabrik permet
d'identifier des nodes à déplacer pour boucher les fuites de réseau.
Le filtre que je propose, même s'il détecte aussi les ways
géométriquement non connexes, vise plutôt à modifier les tags que la
géométrie, en reclassant des highways. Ça se complète.

vincent
  275007763
  288121371
  288125619
  290215802
  313889099
  339587652
  341873998
  389440584
  393445285
  393445295
  393445296
  415315237
  415315238
  415315270
  456262626
  461591701
  465201330
  470274638
  472456500
  485639083
  501581092
  501581135
  512506812
  535373322
  541408583
  541408594
  548395984
  559576000
  563270068
  567920816
  567920874
  568116425
  599021844
  599021857
  599133449
  599863628
  674039235
  682527371
  755810608
  755810612
  755810628
  773250635
  774473535
  796990658
  796990676
  796990787
  796990884
  796991027
  796991103
  807108406
  820904393
  823170683
  830372058
  832093389
  843099532
  848164936
  848164944
  848165034
  873908687
  880806366
  880806369
  881455476
  884729941
  885860071
  885860087
  885860115
  885860118
  892700540
  892701523
  900698333
  900698340
  916453538
  921929672
  930314554
  961432388
  981589125
  981644862
 1008125641
 1043924229
 1044724951
 1044725038
 1045612955
 1051094727
 1051660970
 1067816919
 1139668295
 1139722430
 1276843344
 1304783031
 1309066673
 1314232033
 1358272433
 1362213898
 1366573764
 1366645022
 1367771363
 1368766593
 1389360437
 1389360449
 1392894254
DROP VIEW highway_level CASCADE;
CREATE VIEW highway_level AS
SELECT
id,
nodes,
tags?'junction' AS junction,
CASE tags-'highway'
WHEN 'motorway' THEN 0
WHEN 'motorway_link' THEN 0
WHEN 'primary' THEN 1
WHEN 'primary_link' THEN 1
WHEN 'trunk' THEN 1
WHEN 'trunk_link' THEN 1
WHEN 'secondary' THEN 2
WHEN 'tertiary' THEN 3
WHEN 'unclassified' THEN 4
WHEN 'residential' THEN 4
ELSE 5
END AS level
FROM
ways
WHERE
tags?'highway'
;

DROP VIEW way_ends CASCADE;
CREATE VIEW way_ends AS
(
SELECT
id,
nodes[1] AS nid,
level
FROM
highway_level
WHERE
NOT junction
)
UNION
(
SELECT
id,
nodes[array_length(nodes,1)] AS nid,
level
FROM
highway_level
WHERE
NOT junction
)
;

DROP VIEW h CASCADE;
CREATE VIEW h AS
SELECT
way_ends.nid,
way_ends.level AS nlevel,
highway_level.level
FROM
way_ends
JOIN way_nodes ON
way_ends.nid = way_nodes.node_id
JOIN highway_level ON
way_ends.id != highway_level.id AND
way_nodes.way_id = highway_level.id
GROUP BY
way_ends.nid,
way_ends.level,
highway_level.level
;


SELECT
nothaving.nid
FROM
h AS nothaving
LEFT JOIN h AS having_ ON
having_.level = nothaving.nlevel+1 AND
having_.nid = nothaving.nid
WHERE
having_.nid IS NULL
GROUP BY
nothaving.nid
;

___
dev-fr mailing list
dev-fr@openstreetmap.org
http://lists.openstreetmap.org/listinfo/dev-fr


Re: [OSM-dev-fr] [OSM-talk-fr] petit bug (?) sur analyser.openstreetmap.fr

2011-10-09 Par sujet Jocelyn Jaubert
Le 9 octobre 2011, sly (sylvain letuffe) a écrit :
 'soir (nuit ?), 
 
 Je ne sais plus si le développeur de analyser.openstreetmap.fr est
 parmi nous, mais je viens de tomber sur défaut d'analyse (faux
 négatif) de analyser.openstreetmap.fr
 
 Test case :
 http://analyser.openstreetmap.fr/cgi-bin/index.py?relation=1781467
 

C'est la pseudo-intersection que tu voudrais qu'elle soit détectée ?
Et est-ce qu'il y a des cas où ça marche comme tu le voudrais ?


J'ai tenté de regarder le code, mais c'est du java, et je ne veux pas
me lancer là-dedans :)

J'ai mis tout le code de l'analyser là (la majeure partie est en python)
http://analyser.openstreetmap.fr/src/

Et le bout de code qui détecte les intersections est là:
http://analyser.openstreetmap.fr/src/jts/Intersect.java


-- 
Jocelyn

___
dev-fr mailing list
dev-fr@openstreetmap.org
http://lists.openstreetmap.org/listinfo/dev-fr


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

2011-10-09 Par sujet Vincent de Chateau-Thierry

Bonsoir,

Le 09/10/2011 20:34, Frédéric Rodrigo a écrit :

J'ai écrit une requête sur un principe légèrement différent. Il ne
cherche les culs de sac d'écart de niveau d'highway mais que sur les
intersections.

CASE tags-'highway'
WHEN 'motorway' THEN 0
WHEN 'motorway_link' THEN 0
WHEN 'primary' THEN 1
WHEN 'primary_link' THEN 1
WHEN 'trunk' THEN 1
WHEN 'trunk_link' THEN 1
WHEN 'secondary' THEN 2
WHEN 'tertiary' THEN 3
WHEN 'unclassified' THEN 4
WHEN 'residential' THEN 4
ELSE 5
END AS level

Le principe est par exemple de trouver des primary (level:1) connectées
directement et uniquement sur des level=3.

J'ai par contre un doute sur le level des trunks.

Voila un exemple d'erreur, il y a une unclassified pour relier deux
secondary :
http://www.openstreetmap.org/browse/node/820904393



Jôli :-)
Si je comprends bien, ton approche permet de s'affranchir des 
culs-de-sac dûs au découpage des extracts ?


vincent

___
dev-fr mailing list
dev-fr@openstreetmap.org
http://lists.openstreetmap.org/listinfo/dev-fr