Je peux recevoir des cartes de n'importe quelle source pour mon projet, et pour l'algorithme C ++ que je crée, il est impératif que l'algorithme sache où se trouvent les jonctions routières (nœuds où plus de deux segments de route se rencontrent). En outre, dans la plupart des cartes que je reçois, il y a des dépassements et des dépassements de routes (c'est-à-dire que les routes ne sont pas correctement connectées). Une façon de corriger le problème consiste à «nettoyer» le réseau routier à l'aide d'Autocad. Mes questions sont les suivantes:
- Existe-t-il un moyen efficace (n'importe quel logiciel qui peut le faire?) D'obtenir ma carte au format GML, qui contient des informations sur les carrefours routiers sur la carte? (peut-être avoir une balise GML qui dit qu'un nœud particulier est une jonction)
- Existe-t-il un autre moyen de «nettoyer» le réseau routier?
Des collègues ont suggéré FME, mais cela implique d'écrire des scripts et nous ne savons pas si le script serait suffisamment flexible pour répondre à toutes les cartes. La seule autre façon de détecter les jonctions est d'utiliser la force brute et de trouver les segments de route qui ont des nœuds communs. ArcGIS serait-il utile? (Je ne l'ai pas utilisé, mais j'en ai entendu parler) Je suis sûr qu'il devrait y avoir un meilleur moyen ...
Réponses:
Si vous avez les routes sous une forme spatiale, comme un Shapefile, vous pouvez les charger dans PostGIS et le faire rechercher automatiquement celles qui utilisent une requête SQL. Je l'ai déjà fait - l'instruction SQL est conçue pour trouver pour chaque route celles qui se croisent géographiquement et créer un point nodal pour chaque croisement.
Je vais essayer de nettoyer ça plus tard, mais voici le flux de base que vous pouvez prendre ...
Les fonctions ST_ * sont ce qui fait que cela fonctionne dans PostGIS
Les extraits suivants ne sont que des extraits, car je n'ai pas le temps de terminer, peut-être que quelqu'un peut les modifier avant de revenir ici ...
la source
Vous pouvez analyser les polylignes de manière incroyable en utilisant des tampons. C'est généralement inefficace - les tampons créent de nombreux sommets supplémentaires - mais (a) c'est une technique disponible dans de nombreux SIG (vectoriels ou raster) et (b) elle peut parfois produire des informations autrement difficiles à obtenir.
Dans ce cas, la mise en mémoire tampon de la route par une petite quantité, puis la mise en mémoire tampon par le négatif de la même quantité laisse de petites "îles" autour de tous les virages et autour de toutes les intersections. C'est facile à prouver géométriquement.
Voici un exemple de tampon polyligne de 10 m (gris) et de son tampon de -10 m (rouge clair) sur une carte de 650 m de large:
Maintenant, coupez la couche de polyligne d'origine avec ces polygones d'îles, fusionnez les segments par identifiant d'îlot et comptez les morceaux:
Les segments jaune clair désignent les pièces à nombre élevé et les segments cyan foncé désignent ceux à faible nombre. De cette façon, nous avons (a) trouvé tous les virages et intersections (y compris les auto-intersections) et les jonctions proches (voir l'extrême gauche, où les deux segments ne se rencontrent pas tout à fait)) et (b) différencié les virages des intersections. Nous pouvons trouver les quasi-jonctions en sélectionnant les îles qui contiennent deux segments connectés ou plus: les virages ne contiennent que des segments connectés.
En raison de la symétrie de la mise en mémoire tampon, les centroïdes des îles d'intersection sont les points d'intersection.
Un bel aspect de ce style d'analyse est qu'il ne se soucie pas de la façon dont la polyligne sous-jacente est représentée: il pourrait s'agir d'une entité unique, il pourrait s'agir d'une entité pour chaque segment de ligne, ou quoi que ce soit entre les deux.
la source
Oui, vous pouvez certainement le faire avec FME. Il existe de nombreux «transformateurs» qui gèrent le nettoyage, les intersections et la topologie; J'essaierais le transformateur TopologyBuilder dans ce cas.
Tout script est fait dans un environnement graphique, c'est donc très simple à faire.
Vous pouvez toujours obtenir une version d'essai sur www.safe.com
(Divulgation: Mark Ireland, alias FME Evangelist, Safe Software Inc.)
la source
Le GRASS GIS dispose d'outils très efficaces pour nettoyer les polygones comme vous le souhaitez, consultez: http://grass.fbk.eu/grass62/manuals/html62_user/v.clean.html
la source
L'analyste réseau Arcgis, que vous pouvez obtenir avec un essai gratuit, le fait en moins de 10 secondes et en quelques clics.
la source
Le processus peut être effectué dans ArcGIS avec un analyste réseau.
Il existe également un autre moyen dans ArcGIS: vous pouvez suivre les étapes suivantes: "Arctoolbox" → "Outils de gestion des données" → "entités" → "entités sommets vers points" et là, vous pouvez faire ce dont vous avez besoin.
la source