banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

GEODATA DAYS 2024

#1 Fri 27 January 2012 18:15

RudyWI
Juste Inscrit !
Date d'inscription: 17 Feb 2011
Messages: 8

[OpenJump] Road-matching basé sur des données OSM

Bonjour,

J'ai un ESRI Shapefile avec des données vecteur.
Je souhaiterais appliquer un road-matching sur ces données en me servant d'OpenJump et du plugin Roadmatcher.

J'ai téléchargé les shapefiles OpenStreetMap pour m'en servir de données de référence.
Ensuite, j'ai suivi cet article http://wiki.openstreetmap.org/wiki/RoadMatcher pour effectuer le roadmatching.

Cependant, l'opération de road-matching échoue avec l'erreur suivante :

Code:

EdgeEnd with identical endpoints found
java.lang.IllegalArgumentException: Cannot compute the quadrant for point ( 0.0, 0.0 )
    at com.vividsolutions.jts.geomgraph.Quadrant.quadrant(Quadrant.java:61)
    at com.vividsolutions.jcs.graph.DirectedEdge.<init>(DirectedEdge.java:79)
    at com.vividsolutions.jcs.conflate.roads.model.RoadGraph.add(RoadGraph.java:24)
    at com.vividsolutions.jcs.conflate.roads.model.RoadNetwork.add(RoadNetwork.java:53)
    at com.vividsolutions.jcs.conflate.roads.ConflationSession.initializeSourceNetwork(ConflationSession.java:343)
    at com.vividsolutions.jcs.conflate.roads.ConflationSession.<init>(ConflationSession.java:179)
    at com.vividsolutions.jcs.plugin.conflate.roads.NewSessionPlugIn.createSession(NewSessionPlugIn.java:286)
    at com.vividsolutions.jcs.plugin.conflate.roads.NewSessionPlugIn.run(NewSessionPlugIn.java:181)
    at com.vividsolutions.jump.workbench.ui.task.TaskMonitorManager$TaskWrapper.run(TaskMonitorManager.java:151)
    at java.lang.Thread.run(Thread.java:662)

Avez-vous des une idée du problème ?

Merci.

Hors ligne

 

#2 Fri 27 January 2012 22:14

mmichaud
Participant occasionnel
Date d'inscription: 3 Jul 2007
Messages: 13

Re: [OpenJump] Road-matching basé sur des données OSM

Bonjour,

Je n'ai pas d'expérience directe de RoadMatcher mais celle que j'ai d'OpenJUMP me permet de vous donner quelques pistes :
Beaucoup de traitements géométriques nécessitent des données topologiquement propres en entrée, ce qui n'est pas forcément le cas des données OSM.
Les problèmes topologiques comme celui qui a généré cette erreur peuvent être dus à :
- des géométries invalides
- des géométries valides mais présentant des singularités (points doublés, segments colinéaires)
- des géométries d'un type inattendu pour le processus que l'on est en train d'exécuter

OpenJUMP possède beaucoup d'outils de diagnostic et quelques outils de correction
- le premier outil de diagnostic est Outils > Contrôler > Valider les couches sélectionnées
- pour aller plus loin dans l'analyse de vos données, vous pouvez peut-être utiliser QA
http://sourceforge.net/projects/jump-pi … %20Plugin/

Pour corriger les données, il n'y a pas d'outil magique, mais je crois par exemple qu'un lissage avec une tolérance nulle supprime les points doubles. D'autre traitements comme la transformation de lignes multiples en lignes simples, la fusion des lignes, le calcul des intersections... peuvent contribuer à rendre une couche plus exploitable.

Suivant le travail que vous avez à faire, vous pouvez aussi explorer le plugin Matching PlugIn
http://sourceforge.net/projects/jump-pi … 20Plugins/

Vous pouvez enfin suivre les fils de discussion de la liste OpenJUMP où l'utilisation de roadmatcher a récemment été abordée.
http://groups.google.com/group/openjump … c959618d9c

Michaël

Hors ligne

 

#3 Sun 29 January 2012 03:23

RudyWI
Juste Inscrit !
Date d'inscription: 17 Feb 2011
Messages: 8

Re: [OpenJump] Road-matching basé sur des données OSM

Bonjour,

Merci pour toutes ces informations, ça m'a permis d'avancer un peu :

Avec QuantumGIS j'ai trouvé des erreurs de Géométries dans les données OSM. J'ai donc extrait uniquement la zone dont j'avais besoin, et par chance elle a passé le test de validité de QuantumGIS.

Avec ces nouvelles données, l'opération de road-matching est arrivée au bout, mais ça n'a pas fonctionné.
Le controle qualité du road-matching indique des erreurs "Illegal Geometry" et "Coincident segment" dans mes shapefiles.

J'ai alors repris mes shapefiles avec QuantumGIS et appliqué les corrections "Simplifier la géométrie" et "Morceaux multiples vers morceau unique".
Tout cela m'a permis de réduire le nombre d'erreurs figurant dans le controle qualité après le road-matching, mais ce n'est toujours pas concluant.

Mes erreurs vous sont-elles familières ?
Quelles autres corrections puis-je tenter sur mes shapefiles ? avec quels outils ?

Merci

Hors ligne

 

#4 Mon 30 January 2012 22:38

mmichaud
Participant occasionnel
Date d'inscription: 3 Jul 2007
Messages: 13

Re: [OpenJump] Road-matching basé sur des données OSM

Après quelques tentatives, j'ai vu que des géométries qui pouvaient poser problème étaient des géométries "valides" mais pas "simples".
Une géométrie valide mais pas simple est une ligne qui s'intersecte elle-même.
OpenJUMP les détecte avec l'outil déjà cité.
Pour les corriger, vous pouvez utiliser l'outil intersection découpage dans Outils > Edition Géometrie (nécessite une version récente d'OpenJUMP).

Après cela, je n'ai plus les messages "Illegal Geometry" et "Coincident segment" mais je ne suis pas allé beaucoup plus loin dans les tests.
Si vous allez plus loin, merci de rapporter votre expérience.

Michaël

Hors ligne

 

#5 Tue 17 April 2012 21:59

tqhien
Participant actif
Lieu: Clamart
Date d'inscription: 22 Apr 2011
Messages: 78

Re: [OpenJump] Road-matching basé sur des données OSM

Bonjour,

Ayant intensivement utilisé Roadmatcher dans le cadre d'un projet, je peux apporter quelques pistes concernant les erreurs.

Tout d'abord, le plugin nécessite effectivement que les géométries soient "propres" :
- les entités doivent être de type LINESTRING. Les MULTILINESTRING (lignes à "trous"à génèrent des erreurs : le plugin ne pouvant pas rajouter de sommet "dans le vide" par exemple.
- les sommets consécutifs trop proches (cf paramètre de précision) génèrent également des erreurs (longueur du segment de taille nulle)
- les lignes ne doivent pas être sécantes : les boucles doivent être découpées en 3 entités
- les cercles posent des problèmes de conflation, à cause de leur unique sommet (exemple : un rond-point, à représenter plutôt comme des ensemble d'arcs de cercle)
- le nombre de lignes dans la couche fait parfois "planter" le plugin : le plugin "perd" les attributs des couches source, qui ne sont plus sélectionnables dans le fichier de conflate. Dans ce cas, fermer et rouvrir OpenJump.
- enfin dans le même ordre, si les couches présentent trop de vecteurs, le plugin plante purement et simplement. Dans ce cas, il faut choisir une emprise plus petite.

Voiclà pour les causes de pb qui me viennent à l'esprit.

Cordialement.

Hien.

Hors ligne

 

Pied de page des forums

Powered by FluxBB