Ich habe eine Polylinie, die in mehrere Teile unterteilt ist, und diese Teile sind nicht gut geordnet, so dass die ID des Scheitelpunkts nicht der Darstellung der Polylinie folgt.
Diese Polylinie stellt eine Buslinie dar, und ich muss die Darstellung der Fahrbahn des Busses folgen lassen. Ich möchte wissen, wie man die Multiparts dieser Polylinie zusammenführt.
Ich habe bereits versucht, Split und Unsplit sowie Multipart to Single Part, Union, Merge usw. zu erstellen, aber niemand gibt mir das gewünschte Ergebnis.
Antworten:
Aus Ihren Tags geht hervor, dass Sie ArcGIS 10 ausführen. Für eine ähnliche Aufgabe habe ich die folgende Methode verwendet:
1) Verwenden Sie Multipart to Single Part
2) Verwenden Sie Unsplit
Damit dies funktioniert (dh damit Sie die Linien in der richtigen Reihenfolge haben), müssen Sie möglicherweise die Linie in die Endpunkte der Bestandteile aufteilen und dann die Richtung basierend auf einem Attribut ändern (z. B. 1 = Start, 2 = Ende). - Damit können Sie nur die Punkte bedingt verbinden, die unterschiedlich sind (Wenn 1 + 2, dann Verbindungslinien erstellen).
Wenn Sie mit einer IDE arbeiten, ist der Code dafür ziemlich lang, aber ich werde mein Bestes tun, um Ihnen zu helfen, wenn Sie spezielle Fragen haben.
quelle
Ich musste vor einiger Zeit genau das Gleiche mit AV 3.x und Avenue tun. Ich habe schnell nach dem Code gesucht, ihn aber nicht gefunden. Wenn ich mich richtig erinnere, ging die Logik ungefähr so: (Ich hatte auch die Bushaltestellen und Terminals als ein anderes Punkt-Shapefile, damit ich die Start- und Endteile bestimmen konnte):
So erhalten Sie den ersten Teil:
2a. Holen Sie sich das Teil, das dem Start des Terminals am nächsten liegt
2b. Holen Sie sich die Abstände des Start- und Endknotens dieses Teils zum Startterminal. Wenn der Startscheitelpunkt der nächstgelegene ist, fügen Sie diesen Teil der 'sortierten Polylinie' hinzu. Wenn es das Ende ist, drehen Sie es um und fügen Sie es dann hinzu.
... oder etwas ähnliches! :-)
Lassen Sie mich wissen, ob dies für Sie sinnvoll ist, und ich kann meinen ursprünglichen Avenue-Code erneut suchen.
quelle
Ich habe in einem ähnlichen Projekt gearbeitet und ArcObjects verwendet. Mein Ziel war es, zwei benachbarte Polylinien zu verbinden, wenn einer der Endpunkte der Startpunkt eines anderen ist, um zwei kurze Polylinien zu einer einzigen Polylinie zu machen. Mein Prozess war:
Beide Klassen überschreiben die Methoden "Equals" und "GetHashCode".
Durch diese Prozesse habe ich zwei Wörterbücher erstellt. Nach dem Erstellen von Wörterbüchern überprüfe ich, ob beide Wörterbücher denselben Punkt enthalten, und in beiden Wörterbüchern hat dieser Schlüssel nur ein Merkmal in der Merkmalsliste. Dann habe ich eine neue Polylinie mit diesen beiden Polylinien erstellt und zwei kurze Polylinien gelöscht.
So verbinden Sie zwei Polylinien zu einer:
quelle
Ich hatte genau das gleiche Problem aufgrund von Aktualisierungen, die ich mit dem Tool "Umformungsfunktion" an Buslinien vorgenommen habe. Dissolve, Merge und Unsplit funktionierten nicht, da die mehrteiligen Funktionen nicht übereinstimmten.
Wenn Sie dies bis jetzt noch nicht bemerkt haben, schauen Sie sich die Eckpunkte genauer an, die zwischen Ihren mehrteiligen Merkmalen übereinstimmen müssen. Nach Bedarf ausfahren, trimmen oder umformen und dann eines der oben genannten Werkzeuge verwenden.
quelle