Bögen zwischen zwei Punkten in ArcPy erstellen?

10

Ich habe an einem Python-Skript gearbeitet, das die Visualisierung von Live-Punktdaten automatisiert. Ich habe eine Tabelle mit zwei Koordinatenpaaren. Ich möchte diese beiden Punkte mit einem Kreisbogen oder ähnlichem verbinden (Parabel ??).

Ich konnte die beiden Punkte mit einer geraden Linie verbinden, aber es gibt mir ein langweiliges Bild.

Eine der größten Hürden ist meine Lizenzstufe: ArcView.

Hat jemand eine Idee, wie ich eine Reihe von Punkten generieren kann, die den Pfad einer Linie zwischen diesen beiden Punkten darstellen?

Ich kann dann den Befehl Punkte zur Polylinie verwenden.

Pixel
quelle
5
Sie liefern nicht wirklich genug Informationen: "Ein langweiliges Bild verbessern" ist weder spezifisch noch eine gute Problemstellung. Aber vielleicht erhalten Sie einige Ideen aus einem ähnlichen Thread unter gis.stackexchange.com/questions/5204/… .
whuber
1
Sehen Sie gleichzeitig mehrere Zeilen oder nur eine (oder mehrere) gleichzeitig?
Andy W
Die Punktzahl könnte irgendwo zwischen 2 und ungefähr 50 liegen.
Pixel

Antworten:

27

Es scheint, dass das häufigste Problem bei diesen Arten von "Flusskarten" darin besteht, dass viele Linien, wenn sie enthalten sind, so stark kollidieren, dass es schwierig ist, ein nicht offensichtliches Muster zu erkennen (wenn wechselseitige Flüsse berücksichtigt werden, passiert dies) in noch größerem Umfang). Auch die langen Linien dominieren tendenziell die Grafik, obwohl es durchaus möglich ist, dass die Verteilung der Flüsse überwiegend über kurze Räume erfolgt (zum Beispiel ähneln eine Vielzahl unterschiedlicher Verteilungen zwischen Orten in der Regel Levy-Flügen ). Ich nehme an, dass dies nicht unbedingt eine schlechte Sache ist (die langen Schlangen mögen an sich interessanter sein als die kurzen Schlangen für viele Phänomene), aber ich denke nicht, dass wir sozusagen den Wald vor lauter Bäumen verlieren wollen.

Obwohl ich nicht bezweifle, dass ich einige mögliche "Lösungen" verpasst habe, die vorgeschlagen wurden, werde ich versuchen, einige der Möglichkeiten zusammenzufassen, wie Einzelpersonen versucht haben, das Problem in der Arbeit zu lösen, auf das ich gestoßen bin.

Verzerren der Linien

Wenn Sie einige der anderen Themen auf dem Bildschirm lesen, werden Sie einige Beispiele dafür sehen, wie Menschen mit diesem Problem umgegangen sind. Insbesondere sind die Linien verzerrt, damit sie sich nicht mit anderen Objekten auf der Karte überlappen. Whubers Antwort auf eine andere ähnliche Frage (bereits in einem Kommentar erwähnt) ist ein Beispiel dafür. Eine Präsentation einiger Forscher in Stanford zeigt dieselbe Idee (Phan et al., 2005). Vielen Dank für diese Präsentation geht an dslamb für diese Antwort in einem anderen Thread (und alle Antworten auf diesen Thread werden auch für Ihre Frage von Interesse sein). Ich finde es besonders interessant, dass eines der wichtigsten Beispiele dafür die alte Einwanderungskarte von Minard ist, die ein Beispiel für eine wünschenswerte Ausgabe ist (um 1864!).

In Anbetracht Ihres speziellen Anwendungsfalls (geringe Anzahl von Knoten und Linien) scheint dies ausreichend zu sein. Die anderen "Lösungen", die ich vorstelle, dienen eher der Visualisierung von Daten mit vielen Zeilen und vielen Ursprungszielen (obwohl ich davon ausgehe, dass sie nützliche Zusammenfassungen für die Community im Allgemeinen sind, mache ich trotzdem weiter).

Verwenden von Alpha-Überblendung, Farbe und Linienbreite / -höhe

Die Karten I in demselben Thread aufgeführten zuvor angemerkt, Darstellung der Netzströme sind Beispiele hierfür. Die Facebook-Freunde sind ein guter Fall, um die Alpha-Ebene von Linien anzupassen, sodass viel mehr Flüsse erforderlich sind, um eine dunklere (oder in diesem Fall hellere) Verbindung zwischen den beiden Orten darzustellen. Dies betont auch die längeren Leitungen, da sie seltener auftreten. Eine ähnliche Logik stammt aus Value-by-Alpha-Karten für Polygonbereiche (Roth et al., 2010), die bereits in diesem Forum erwähnt wurden .

Die andere Karte, die ich in derselben Antwort präsentiere, verwendet Farbe und eine nicht traditionelle 3D-Lichtbogenlinie (Ratti et al., 2010). Die Autoren verwendeten ein Clustering-Kriterium, um homogene Bereiche zu gruppieren und farblich zu kennzeichnen (per Definition weisen die Bereiche innerhalb der Farbe ähnlichere Flussmuster auf als zwischen den Farben). Die Clustering-Kriterien an und für sich könnten interessant sein, um Muster in den Daten zu identifizieren, obwohl es ein wahrscheinliches Problem damit zu sein scheint, wie Andrew Gelman erwähnt hat , dass es Ihnen ziemlich genau sagt, was Sie bereits wissen, dass es näher beieinander liegt neigen dazu, mehr Verbindungen zu haben.

Schließlich füge ich in diese Kategorie Techniken ein, mit denen die Linien (ähnlich wie beim Alpha-Blending) entweder anhand der Linienbreite oder im Fall der perspektivischen 3D-Linienhöhe gewichtet werden, um das Volumen des Flusses zu übermitteln. Auf der Seite auf Toblers Seite für die Flow-Mapping-Software finden Sie einige Beispiele in 2d (und der andere Artikel, den ich erwähnt habe, ist ein Beispiel in 3d mit Linienhöhen). Auch auf dieser Seite hat Tobler einen sehr nützlichen Artikel, der die Probleme mit Flowmapping und ihre historische Anwendung beschreibt (Tobler, 1987).

Ein weiteres Beispiel in 3d ist diese Antwort eines Mankoffs auf dieser Site. Dieser Beitrag im Blog "Soziologische Bilder" zeigt eine nützliche Möglichkeit in einem Flussdiagramm, zwischen Ein- und Ausflüssen zu unterscheiden (obwohl dies wiederum funktioniert, da die Anzahl der Knoten relativ gering und die Knoten im Netzwerk angeordnet werden können eine willkürliche Methode, um Überzeichnungen zu reduzieren). Dieselben Arten von Pfeilen (und einige andere, die Haschings verwenden) sind auch in (Tobler, 1987) enthalten.

Am Ende lösen Linienbreite und Farbe das Überzeichnungsproblem jedoch nicht wirklich. Die Bögen in 3D helfen etwas, obwohl ich denke, dass sie bei komplizierteren Flussmustern nur einen begrenzten Nutzen haben werden. IMO-Alpha-Blending scheint in einer Vielzahl von Situationen dieser drei am nützlichsten zu sein, aber Farbe und Linienbreite könnten / sollten in Verbindung mit der oben erwähnten Linienverzerrung verwendet werden.

Datenreduzierung

Ich gruppiere hier zwei Arten von Techniken: 1) Verwenden kleiner Mehrfachkarten (dh vieler Karten mit inhärent weniger Objekten zur Visualisierung, damit das Überzeichnen reduziert wird) oder 2) andere grafische Darstellungen, die keine Linien sind, sondern einige der Flüsse über die Dichte darstellen oder Choroplethenkarten. Beispiele hierfür finden sich in (Corcoran et al., 2009; Rae, 2009; Wood et al., 2010) (danke an iant für die Rae-Referenz). Diese neigen dazu, die Menge an visuellen Informationen zu reduzieren, die entweder durch die Darstellung einer Reihe kleiner Mehrfachkarten (oder nur eines kleineren Bereichs) oder durch die Verwendung eines Choroplethen-Zuordnungsschemas zur Darstellung einer Statistik dargestellt werden (Beispiele könnten die Anzahl der Zuflüsse und die Anzahl der Abflüsse sein , Richtung der Strömungen, durchschnittliche Entfernung der Strömungen). Wenn Sie Daten auf Punktebene haben, können Sie diese Statistiken über Rasterkarten für die Kerndichte darstellen oder sie zu Quadraten zusammenfassen.

Wenn Informationen auf diese Weise reduziert werden, ist das Überzeichnen weniger ein Problem. Ein sehr cooles interaktives Online-Beispiel ist diese Migrationskarte des Forbes-Magazins . Sie können jeweils nur einen Landkreis sehen, aber die Reduzierung der Informationen erleichtert das Parsen der Zeilen (und den Unterschied zwischen Zu- und Abflüssen) erheblich. Ein kürzlich veröffentlichter Beitrag im ESRI-Mapping-Blog verwendet ebenfalls eine ähnliche Technik für die kleinen Vielfachen (sie wählen auch eine bestimmte Projektion für die Weltkarte aus, um "hübsch aussehende" Linien zu haben, und verwenden Farben gut, um verschiedene internationale Ursprünge weiter hervorzuheben). In diesem Beispiel funktioniert es ziemlich gut, da das Endziel für alle Flows gleich ist, aber wenn Flows wechselseitig sein könnten, würde es wahrscheinlich nicht so gut funktionieren.

Verwenden anderer nicht kartierter Darstellungen von Flüssen

Andere auf dieser Website haben vorgeschlagen, alternative Diagramme zur tatsächlichen Karte zu verwenden, um die Flüsse darzustellen (nur die Ursprünge und Ziele auf eine andere Weise als ihren tatsächlichen geografischen Standort abzubilden). Beispiele hierfür sind entweder spezielle Visualisierungen (wie die von Circos erstellten ), Bogendiagramme (siehe dieses Beispiel bei Protovis, diese werden auch als Kriskogramme bezeichnet (Xiao & Chun, 2009)) oder Matrix-Heatmaps ( hier ist ein weiteres Beispiel aus dem Protovis-Website). Eine andere Möglichkeit wäre die Verwendung eines automatisierten Netzwerklayouts, um Muster in den Flüssen zu identifizieren (wie das von Graphviz ). Neben Graphviz scheinen Gephi, die NetworkX-Python-Bibliothek und einige R-Bibliotheken ebenfalls beliebte Tools zu sein (siehediese Antwort auf der Statistikseite).

Die Bibliotheken, die ich zitiere, sind ziemlich cool, da sie auch interaktive Visualisierungen entwickelt haben. Hier ist ein Beispiel mit einem ähnlichen Stil wie die kreisförmigen Grafiken (obwohl nicht kreisförmig!). Hier ist eine weitere interaktive Visualisierung unter Verwendung einiger der zuvor diskutierten Linienverzerrungstechniken, der Netzwerkplatzierung (die kreisförmigen Dorling-Kartogrammen ähnelt) sowie anderer nützlicher statistischer Zusammenfassungen (ich habe diese beiden Beispiele ursprünglich im Blog zur Informationsästhetik gesehen ).


Einige andere Ressourcen, die ich für nützlich halte, sind die Software und Artikel aus dem Spatial Data Mining und Visual Analytics Lab . Auch die Modellierung der Nachfrage nach Kriminalitätsreisen im CrimeStat-Programm ist eine sanfte Einführung in anwendbare Regressionstechniken für solche Flussdaten. Mit beiden Tools können Sie möglicherweise interessante Korrelationen in den Flussmustern mit anderen geografischen Informationen identifizieren. Ein weiterer Ort, an dem Sie möglicherweise nützliche Anregungen für die grafische Darstellung der Daten oder die statistische Analyse erhalten, ist eine aktuelle Ausgabe im Journal of Computational and Graphical Statistics, Band 20, Ausgabe 2zur Prüfung der Flugankunfts- / Abflugstatistik für kommerzielle Fluggesellschaften in den USA von 1987 bis 2008 (wenn Sie an der Verarbeitung von Big Data interessiert sind, lohnt es sich auch, diese zu prüfen). Alle Artikel sind kostenlos und mit jedem Papier versehen.

Am Ende bestimmen die Daten und das Medium, wie gut einige dieser Techniken die visuelle Unordnung reduzieren, die mit Flussdaten einhergeht. Ich hoffe, dass dies ein nützlicher Ort ist, um Ideen zu finden, wie man mit diesem Visualisierungsproblem umgeht. Wenn Sie Ihre Frage weiter verfeinern, um herauszufinden, was Sie erreichen möchten, können andere nützliche Rückmeldungen zu tatsächlichen programmatischen Implementierungen geben (falls noch nichts verfügbar ist).


Zitate

* Hinweis: Links zu nicht verknüpften PDF-Dokumenten sind enthalten, wenn ich eines finden konnte

Andy W.
quelle
2
Ich habe derzeit keine Grafiken ausgelassen, aber auf Anfrage kann ich auch solche hinzufügen, wenn Leute Beispiele sehen möchten, ohne den Links folgen zu müssen.
Andy W
Wow !! ... Komplett mit Zitaten! Wenn ich zweimal abstimmen könnte, würde ich! Super Antwort, Mann :)
R Thiede
Ich habe derzeit eine weitere ziemlich coole interaktive Visualisierung mit Datenreduktion (und großen Kreislinien) gefunden. Finden Sie über den Trulia Insights-Blog heraus, welche US-Stadt bei internationalen Hausjägern am beliebtesten ist .
Andy W
5

Es gibt ein schönes Verfahren hier , von unserem eigenen Unterreich.

Grundsätzlich sieht die Prozedur folgendermaßen aus: - Projizieren Sie die Punkte, zwischen denen die Linie liegen soll, - zeichnen Sie eine gerade Linie zwischen sich, - unterteilen Sie diese Linie in x Teile und projizieren Sie schließlich die unterteilte Linie zurück auf Ihr Original Projektion.

Ich habe die Verwendung von Arc eingestellt, weil es Geld kostet, aber damit dieses Verfahren funktioniert, müssen Sie ESRI wahrscheinlich keine zusätzlichen Bestechungsgelder zahlen, um grundlegende Funktionen zu erhalten. Ich meine, ich glaube nicht, dass Sie irgendwelche "Erweiterungen" kaufen müssen. Ich spreche jedoch unter Korrektur, da ich nicht sicher bin, ob das Unterteilen einer Linie Teil von Spatial Analyst ist. Vielleicht können mir einige der ESRIcally-geneigten hier helfen? :) :)

R Thiede
quelle
1
Früher konnten Sie mit ArcView keine echten Kurven erstellen, aber ArcView kann seit Version 9 jetzt echte Kurven erstellen.
Blord-Castillo
2

Mit der Großkreismethode können Sie aus zwei Punkten auf einer Karte visuell attraktive Polylinien erstellen. Überprüfen Sie http://www.esri.com/software/arcgis/defense-solutions/military-analyst.html - Military Analyst. Sollte haben, was Sie suchen!

Michael Markieta
quelle
Ich bin mit Arc nicht mehr ganz auf dem neuesten Stand, aber ist es nicht möglich, dies mit einigen Reprojektionen zu tun? Weil Military Analyst Sie wahrscheinlich Geld kosten wird ...
R Thiede
Ich glaube nicht, dass diese Lösung sowieso funktionieren würde, da der Umfang meiner Karte ungefähr 40 Meilen breit sein wird. Ich glaube, das könnte funktionieren, wenn es auf der Größe eines Kontinents wäre.
Pixel
Military Analyst ist kostenlos @RThiede Ja, es würde in größerem Umfang besser funktionieren. Möglicherweise können Sie die Linien jedoch nach ihrer Erstellung bearbeiten, um das zu erhalten, was Sie möchten (da sie mithilfe von Bezzier-Kurven Hunderte von Punkten entlang der Polylinien erzeugen, um die Kurve zu erstellen)
Michael Markieta,
Ich könnte leicht Linien bearbeiten, um die gewünschten Bögen zu erhalten, aber wie in meinem Beitrag angegeben, verwende ich Python, um diesen Prozess zu automatisieren. Danke für die Rückmeldung!
Pixel