Hier ist eine Illustration des Workflows, den ich im obigen Kommentar erwähnt habe, und obwohl ich keine einfache vordefinierte Routine dazu kenne, habe ich eine Excel-Tabelle angehängt, in die man einen Satz von Ursprungs- / Zielkoordinaten und importieren kann Das Blatt erstellt dann eine festgelegte oder kreisförmige Linienkoordinate (Tabelle hier ). Es sind Formeln eingerichtet, so dass es ziemlich einfach ist, neue OD-Koordinaten zu importieren und die Formeln zu erweitern, um die Ergebnisse auszufüllen. Ich werde jedoch die Logik des Prozesses expliziter durchgehen, und andere können Ratschläge geben, wie sie vollständig in Skripten geschrieben werden können ArcMap (oder was auch immer).
Kurz gesagt, ich denke, dies ist sinnvoll für die Visualisierung von OD-Daten, hauptsächlich aus dem gleichen Grund, aus dem Großkreislinien beliebt sind. Sie bieten eine bessere visuelle Unterscheidung zwischen Linien. Der von mir vorgeschlagene Ansatz hat auch einen Vorteil gegenüber Großkreislinien, da die Strömungsrichtung im Halbkreis codiert ist. In dieser anderen Antwort auf der Website gebe ich einen allgemeineren Überblick über Visualisierungstechniken für die Flusszuordnung, und viele dieser Techniken können zusätzlich zur Erstellung solcher Bögen angewendet werden.
Um zu beschreiben, wie man Linien zeichnet, wie ich es vorschlage, habe ich im Wesentlichen nur 3 Schritte für den Prozess: 1) Finden Sie die Ausrichtung des Flusses, 2) Finden Sie den Mittelpunkt und den Abstand des Flusses, 3) Behandeln Sie den Mittelpunkt als Mittelpunkt eines Kreises, und zeichnen Sie dann den Bogen (einen Halbkreis vom Ursprung zum Ziel). Um klar zu sein, beginne ich mit einem festgelegten Paar projizierter Ursprungs- (x1,y1)
und Zielkoordinaten (x2,y2)
.
Also 1) finde die Ausrichtung der Strömung. Man verwendet zuerst die Formel ATAN((y2 - y1)/(x2 - x1))
und weist dann abhängig von der Richtung eine Ausrichtung zu, abhängig davon, ob die Richtung nach Osten oder nach Westen gerichtet ist. Ein Beispiel-Pseudocode unten (ich weise OD-Punkte, die beide an denselben Koordinaten liegen, eine Ausrichtung von Null zu). Hier soll die Variable or_rad
eine Abkürzung für "Orientierung im Bogenmaß" sein und pi
bezieht sich auf den Wert von pi.
#tan_or = ATAN((y2 - y1)/(x2 - x1)).
Do If x2 = x1 and y1 <= y2.
compute or_rad = 0.
Else if x2 = x1 and y1 > y2.
compute or_rad = pi.
Else if x1 > x2.
compute or_rad = 270/180*pi - #tan_or.
Else if x1 < x2.
compute or_rad = 90/180*pi - #tan_or.
End If.
2) Finden Sie den Mittelpunkt und den Abstand der Strömung. Dies ist sehr einfach, da nur ein Satz gepaarter Koordinaten der Mittelpunkt in (x, y) -Koordinaten ist (x1+x2/2,y1+y2/2)
. Also lasst uns definieren mid_x = (x1 + x2)/2
und mid_y = (y1 + y2)/2
für den nächsten Teil. Der Abstand unter Verwendung des Pythagoreum-Theorums ist einfach distance = SQRT((x1 - x2)^2 + (y1 - y2)^2)
.
3) Zeichnen Sie dann anhand dieser Informationen den Kreis über eine vorgegebene Gradzahl und einen Radius (der die Hälfte des Abstands zwischen den beiden Punkten beträgt). Nehmen wir zum Beispiel an, wir beginnen mit einer Reihe von OD-Koordinatenpaaren bei (1,3):(3,2)
. Die Ausrichtung in Grad (2,2.5)
beträgt ~ 116 (und im Bogenmaß ~ 2), der x, y-Mittelpunkt beträgt und der Abstand zwischen den beiden Punkten beträgt etwa 2,2.
Nehmen wir also an, wir möchten den Halbkreis um 180 Grad zeichnen. Im Pseduo-Code (unter Verwendung der Variablen, die ich bereits definiert habe) sehen die Iterationen ungefähr so aus;
for i in (0 to 180 degrees)
rad_i = i/180*pi. /*converts i from degrees to radians
step_or = pi - rad_i /*for clarity, this makes the circle go from origin to destination
radius = distance/2
Arc_X = mid_x + sin(or_rad - step_or)*radius.
Arc_Y = mid_y + cos(or_rad - step_or)*radius.
Unten ist ein Diagramm der oben angegebenen Originalkoordinaten eingefügt. Wenn Sie bei Null beginnen und bei 180 enden, stellen Sie sicher, dass sich das Sein und der Endpunkt an derselben Stelle befinden. Das Einstellen der Schleife auf mehr Schritte (detaillierterer Bogen) oder weniger (weniger detaillierter Bogen) sollte ziemlich offensichtlich sein.
In anderen Threads auf der Site wird das Erstellen von Linien aus Punktdaten erläutert (siehe das Tag zum Erstellen von Polylinien ). Ich habe ein Beispiel in der angehängten XLS-Tabelle und habe das Arcmap-Tool von ET Geo-Wizards verwendet, um die Tabellenkoordinaten in Shapefile-Linien zu konvertieren. Die Bögen in den Beispieldaten in der angehängten Tabelle sehen anschließend so aus.
Eine einfache, aber möglicherweise nützliche Aktualisierung dieser aktuellen Konfiguration wäre die Aktualisierung der Formeln, um eine vorgegebene Exzentrizität im Bogen zu ermöglichen, obwohl ich bei meinen wenigen Versuchen bisher nicht ganz sicher war, wie ich das tun soll. Ich freue mich auf Vorschläge und Feedback von der Community hier auf meinen Rat.