Ich versuche, eine Zahl zu erstellen, die azimutale Daten mit unterschiedlichen Unsicherheiten an jedem Punkt zeigt. Diese Oldschool-Figur aus einem Papier von 1991 fängt die Idee der "Fliege-Handlung" ein, die ich anstrebe:
Irgendwelche Vorschläge, wie ich eine ähnliche Figur machen könnte? Ich bin ein relativer Neuling bei GIS, aber ich habe über meine Universität Zugriff auf ArcGIS. Meine Arc-Erfahrung beschränkte sich darauf, geologische Karten zu erstellen, daher musste ich nichts zu Exotisches tun.
Ich habe mich in den Symbologieoptionen in Arc und QGIS umgesehen, aber keine Einstellungen gesehen, von denen ich dachte, dass sie den Job erledigen würden. Beachten Sie, dass es nicht nur darum geht, bogenförmige Symbole durch Azimut zu drehen. Der Winkelbereich jeder "Fliege" muss unterschiedlich sein.
Ich würde meine Python-Fähigkeiten als "starke Mittelstufe" und meine R-Fähigkeiten als "niedrige Mittelstufe" bewerten, daher bin ich nicht abgeneigt, bei Bedarf etwas zusammen mit matplotlib
und mpl_toolkits.basemap
oder ähnlichen Bibliotheken zu hacken . Aber ich dachte, ich würde hier Rat einholen, bevor ich diesen Weg gehe, falls es eine einfachere Lösung aus dem GIS-Land gibt, von der ich gerade noch nichts gehört habe.
quelle
100->120
und dem äquivalenten Bereich von 180 Grad entfernt um180->200
Antworten:
Dies erfordert eine Art "Feldberechnung", bei der der berechnete Wert (basierend auf Breite, Länge, zentralem Azimut, Unsicherheit und Entfernung) eher die Fliege als eine Zahl ist. Da solche Feldberechnungsfunktionen beim Übergang von ArcView 3.x zu ArcGIS 8.x erheblich erschwert wurden und nie vollständig wiederhergestellt wurden, verwenden wir heutzutage Skripte in Python, R oder was auch immer. Der Denkprozess ist jedoch immer noch der gleich.
Ich werde mit Arbeitscode veranschaulichen
R
. Im Zentrum steht die Berechnung einer Fliege, die wir daher als Funktion einkapseln. Die Funktion ist wirklich sehr einfach: Um die beiden Bögen an den Enden des Bogens zu erzeugen, muss in regelmäßigen Abständen (von Azimut) eine Sequenz nachgezeichnet werden. Dies erfordert die Fähigkeit, die (lon, lat) -Koordinaten eines Punktes basierend auf dem Start (lon, lat) und der zurückgelegten Strecke zu finden. Dies geschieht mit dem Unterprogrammgoto
, bei dem das gesamte schwere arithmetische Heben erfolgt. Der Rest bereitet einfach alles für die Bewerbung vorgoto
und wendet es dann an.Dies soll auf eine Tabelle angewendet werden, deren Datensätze Sie bereits in irgendeiner Form haben müssen: Jede von ihnen gibt die Position, den Azimut, die Unsicherheit (als Winkel zu jeder Seite) und (optional) einen Hinweis darauf an, wie groß die sein sollen Krawatte. Simulieren wir eine solche Tabelle, indem wir 1.000 Bowties auf der gesamten Nordhalbkugel platzieren:
Zu diesem Zeitpunkt sind die Dinge fast so einfach wie bei jeder Feldberechnung. Hier ist es:
(Timing-Tests zeigen, dass
R
ungefähr 25.000 Scheitelpunkte pro Sekunde erzeugt werden können. Standardmäßig gibt es einen Scheitelpunkt für jeden Azimutgrad, der vom Benutzer über daseps
Argument auf einstellbar istbowtie
.)Sie können
R
zur Überprüfung eine einfache Darstellung der Ergebnisse selbst erstellen:Verwenden Sie das
shapefiles
Paket, um eine Shapefile-Ausgabe für den Import in ein GIS zu erstellen:Jetzt können Sie die Ergebnisse usw. projizieren. In diesem Beispiel wird eine stereografische Projektion der nördlichen Hemisphäre verwendet, und die Fliegen werden durch Quantile der Unsicherheit gefärbt. (Wenn Sie sich den Längengrad von 180 / -180 Grad genau ansehen, werden Sie sehen, wo dieses GIS die Fliegen abgeschnitten hat, die diese Linie kreuzen. Dies ist ein häufiger Fehler bei GISes; es spiegelt keinen Fehler im
R
Code selbst wider .)quelle