Sortieren Sie eine Feature-Tabelle nach geografischem Standort

8

Hier ist eine interessante Herausforderung: Ich muss eine Tabelle in ein Kartenlayout einbetten, damit die Datensätze in der Tabelle nach ihrer geografischen Position auf dem Boden sortiert werden. In einer Karte von Norden nach oben sollte beispielsweise das nördlichste Merkmal (in diesem Fall Punkte) als erstes und das südlichste als letztes aufgezeichnet werden.

Die Kartenzusammensetzung ist in ArcGIS, aber ich bin bereit, gdal / ogr, qgis usw. bei Bedarf für die Tabellensortierung zu verwenden.

Um diese Frage über meinen unmittelbaren Anwendungsfall hinaus zu erweitern und sie dadurch für die Community nützlicher zu machen, würde eine robuste Lösung die Auswahl anderer geografischer Sorten ermöglichen, z. B. von West nach Ost oder von Innen nach Außen .

Illustration

matt wilkie
quelle
Welches Koordinatensystem verwenden Sie?
Mapperz
@mapperz, geografische Dezimalgrade, aber es könnte bei Bedarf leicht UTM oder Albers sein.
Matt Wilkie

Antworten:

7

Um in der Richtung mit einer Peilung von einem Grad östlich von Norden zu sortieren, berechnen Sie den Einheitsrichtungsvektor als (sin (a), cos (a)) vor.

Ermitteln Sie bei einer Feldberechnung die (projizierten) [X] - und [Y] -Koordinaten von Merkmalen (verwenden Sie deren Schwerpunkte oder was auch immer für Nicht-Punkt-Merkmale), falls diese noch nicht verfügbar sind, und berechnen Sie ein neues Feld, das dem Abstand entlang der entspricht Peilung, gegeben durch das Punktprodukt des Richtungsvektors mit den Koordinaten:

z = sin(a) * [X] + cos(a) * [Y]

Sortieren Sie die Tabelle auf [z] in aufsteigender Reihenfolge.

Zum Beispiel beträgt für eine Nord-Süd-Sortierung die Peilung 180 Grad, v = (sin (180), cos (180)) = (0, -1), und die resultierende Sortierung ist daher auf - [Y], Dadurch werden die Datensätze vom größten [Y] (zuerst) bis zum kleinsten [Y] (zuletzt) ​​genau wie beabsichtigt angeordnet.


Eine "innere zu äußere" Sortierung könnte viele Dinge bedeuten, aber eine Interpretation ist, dass die Sortierung nach Entfernung relativ zu einem zentralen Ort erfolgen sollte. Eine ähnliche Lösung gilt unter Verwendung des Satzes von Pythagoras, um die (quadratische) Entfernung von einem festen Punkt zu berechnen. (Das Anwenden der Quadratwurzel ist nicht erforderlich, da dadurch die Sortierreihenfolge nicht geändert wird.)


Eine phantasievollere Sortierreihenfolge wird unter "Eindimensionale Weltkarte" erklärt und illustriert .

whuber
quelle
2

Um die Antwort von whuber in Bezug auf den Werkzeuggebrauch auszudrücken , finden Sie hier eine einfache Implementierung des Nord-Süd-, Ost-West-Anwendungsfalls bei Verwendung von Punktdaten in Arcgis:

Mit freundlicher Genehmigung von Esri Technical Article HowTo: Sortierfunktionen Nord / Süd oder Ost / West für den Export

Wie ändere ich die Reihenfolge der Features in einem Shapefile? Gibt es Lösungen, um den Tabellensortierungsteil für Arcgis und Qgis durchzuführen, ohne in ein externes Programm exportieren zu müssen (obwohl Sie die Tabelle / Feature-Class noch duplizieren müssen) und Shapefile-Datensätze nach Attributen zu sortieren, um ein neues Rangfeld mit Python zu aktualisieren? hat eine arcpy Methode.

matt wilkie
quelle
3
ArcGIS 10.0 und höher bietet eine räumliche Sortieroption im Sortierwerkzeug.
Klewis
1

Wie von @klewis kommentiert :

ArcGIS 10.0 und höher bietet eine räumliche Sortieroption im Sortierwerkzeug

Die Hilfe des Sortiertools , für die eine Lizenz für Fortgeschrittene erforderlich ist, beschreibt Folgendes spatial_sort_method:

Specifies how features are spatially sorted. Sort method is only enabled when the Shape field is selected as one of the sort fields.
UR —Sorting starts at upper right corner. This is the default.
UL —Sorting starts at upper left corner.
LR —Sorting starts at lower right corner.
LL —Sorting starts at lower left corner.
PEANO —Sorting uses a space filling curve algorithm, also known as a Peano curve.
PolyGeo
quelle