J'ai une polyligne divisée en plusieurs parties et ces parties ne sont pas bien ordonnées de sorte que l'ID du sommet ne suit pas le tracé de la polyligne.
Cette polyligne représente une ligne de bus et j'ai besoin d'avoir le tracé suivant le chemin de conduite du bus. Je voudrais savoir comment fusionner les multiparts de cette polyligne?
J'ai déjà essayé de diviser et de séparer, ainsi que le multipartie en une seule partie, l'union, la fusion, etc. mais personne ne me donne le résultat que je veux.
Réponses:
Je constate à partir de vos balises que vous exécutez ArcGIS 10. J'ai utilisé la méthode suivante pour une tâche similaire:
1) Utiliser le multipartie pour une seule pièce
2) Utilisez Unsplit
Pour que cela fonctionne (c'est-à-dire pour que les lignes soient dans le bon ordre), vous devrez peut-être couper la ligne en points de terminaison constitutifs, puis changer la direction en fonction d'un attribut (par exemple, 1 = début, 2 = fin) - vous pouvez l'utiliser pour relier conditionnellement uniquement les points différents (si 1 + 2, créez des lignes de connexion).
Si vous travaillez avec un IDE, le code pour le faire est assez long, mais je ferai de mon mieux pour vous aider si vous avez des questions spécifiques.
la source
J'ai dû faire exactement la même chose il y a longtemps en utilisant AV 3.x et Avenue. J'ai jeté un coup d'œil au code mais je ne l'ai pas trouvé. Si je me souviens bien, la logique a ressemblé à ceci: (j'avais également les arrêts de bus et les terminaux comme un fichier de formes de points différent, donc j'ai pu déterminer les parties de début et de fin):
Pour obtenir la première partie:
2a. Obtenez la partie la plus proche du terminal de démarrage
2b. Obtenez les distances du nœud de début et de fin de cette partie au terminal de départ. Si le sommet de départ est le plus proche, ajoutez cette partie à la «polyligne triée». Si c'est la fin, retournez-le puis ajoutez-le.
... ou quelque chose comme ça! :-)
Faites-moi savoir si cela a du sens pour vous et je peux essayer de retrouver mon code Avenue original.
la source
J'ai travaillé dans un projet quelque chose de similaire, j'ai utilisé ArcObjects. Mon objectif était de connecter deux polylignes adjacentes si l'un de ses points d'extrémité est le point de départ d'un autre pour créer deux polylignes courtes en une seule polyligne. Mon processus était:
Les deux classes remplacent les méthodes "Equals" et "GetHashCode".
Par ces processus, j'ai créé deux dictionnaires. Après avoir créé des dictionnaires, je vérifie si les deux dictionnaires contiennent le même point et dans les deux dictionnaires, cette clé n'a qu'une seule fonctionnalité dans la liste des fonctionnalités, puis j'ai créé une nouvelle polyligne avec ces deux polylignes et supprimer deux polylignes courtes.
Pour joindre deux polylignes en une seule:
la source
J'ai eu exactement le même problème en raison des mises à jour que j'ai apportées aux itinéraires de bus à l'aide de l'outil "Reshape Feature". Dissolve, Merge et Unsplit ne fonctionnaient pas car les fonctionnalités en plusieurs parties n'étaient pas coïncidentes.
Si vous ne l'avez pas encore remarqué, examinez de plus près les sommets qui doivent coïncider entre vos entités en plusieurs parties. Prolongez, ajustez ou remodelez si nécessaire, puis utilisez l'un des outils indiqués ci-dessus.
la source