Erstellen einer Radialflusskarte mit gekrümmten Linien über kurze Entfernungen (20 km) mit ArcGIS for Desktop?

10

Esri hat Anweisungen zum Erstellen einer Radialflusskarte gegeben, aber ich denke, dass die gekrümmten Linien nur über eine lange Distanz erzeugt werden, wie die halbe Welt.

Für kurze Strecken (20 km) sieht eine geodätische Linie wahrscheinlich immer noch ziemlich gerade aus. Um diesen Prozess weiterhin für eine radiale Flusskarte über kurze Entfernungen zu verwenden, dachte ich, wir könnten die Bezugseinstellungen so bearbeiten, dass die Erde kleiner ist, sodass Sie für eine kleine Entfernung eine schöne gekrümmte Linie erhalten. Weiß jemand, wie man das macht?

Gibt es alternativ in ArcGIS Desktop 10.0 ein anderes Tool zum Erstellen gekrümmter Linien? Ich habe 90 Punkte, die ich brauche, um bis zu 54 Punkte zu verbinden. Es wäre gut, sie zu automatisieren, anstatt die Linien manuell zeichnen zu müssen.

ndthl
quelle
2
Ihre Frage wurde unter gis.stackexchange.com/questions/5204/… in einem Nicht-ArcGIS-Kontext gestellt. Möglicherweise sind die Antworten von Interesse.
whuber
1
Ich hatte eine andere Idee als die von Whuber, aber seine könnte angesichts Ihrer Ziele besser sein. Ich dachte einfach, man könnte dem Bogen eine beliebige Biegung hinzufügen, ähnlich wie in Bogen-Diagrammen . Man könnte dann die Richtung der Spitze abhängig von der Strömungsrichtung ändern. Im Wesentlichen ist der Workflow für große Kreise derselbe. Teilen Sie die Linienfolge in viele kleinere gerade Segmente auf. Die willkürliche Biegung könnte jedoch jede lokale Projektion aufnehmen.
Andy W
@AndyW, Ihr Vorschlag klingt für mich nützlicher (obwohl es für Whuber kein Vergehen ist, der großartige Vorschläge für mehr Capaple-Benutzer macht). Ich bin nicht in der Lage, den Vorschlag von whuber zu verstehen oder umzusetzen. Ich bin nach einer einfachen "out of the box" -Lösung, vorzugsweise einer ArcGIS-Erweiterung. Ich habe mir Bogendiagramme angesehen, dort gibt es einige erstaunliche Beispiele. Ich sehe dort keine Lösung für eine einfache statische Karte, die eine Beziehung von vielen zu vielen (aber normalerweise von eins zu vielen) zwischen Räumungsstellen und Umsiedlungsstellen in meinem Fall zeigt.
ndthl

Antworten:

5

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_radeine Abkürzung für "Orientierung im Bogenmaß" sein und pibezieht 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)/2und mid_y = (y1 + y2)/2fü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.

Geben Sie hier die Bildbeschreibung ein

In anderen Threads auf der Site wird das Erstellen von Linien aus Punktdaten (siehe das Tag zum Erstellen von ). 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.

Geben Sie hier die Bildbeschreibung ein

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.

Andy W.
quelle
1
Das ist eine wirklich fantastische Antwort! Obwohl ich nicht verstehe, wie man programmiert, denke ich, dass ich etwas Gutes zu tun habe, das ich mit einem Freund besprechen kann. Ich kenne das Tool et geowizards zum Verbinden von zwei Punkten mit einer geraden Linie. Ich interessiere mich nur für die gekrümmten Linien für kartografische Zwecke.
ndthl