HOW TO
In ArcGIS Pro können die Daten basierend auf den Feldern sortiert werden. Es besteht die Möglichkeit, jedes Feld in aufsteigender oder absteigender Reihenfolge zu sortieren, und Felder können kombiniert werden. Weitere Informationen zum Sortieren von Datensätzen in einer Tabelle finden Sie unter Sortieren von Datensätzen in einer Tabelle.
Wenn die Felder einfach sind, z. B. numerische Werte in einem numerischen Feld oder Buchstaben in einem Textfeld, dann gestaltet sich das Sortieren der Tabelle einfach. Zahlen in einem Feld vom Typ "Long" können einfach in aufsteigender Reihenfolge sortiert werden, und Wörter in einem Textfeld können in alphabetischer Reihenfolge sortiert werden.
Numerische Sortierung

Alphabetische Sortierung

Das Sortieren von in einem Textfeld gespeicherten Zahlen führt jedoch zu unerwarteten Ergebnissen. Anstelle von 1, gefolgt von 2 und 3 usw., erhalten wir stattdessen 1 gefolgt von 10, gefolgt von 100, wie in der nächsten Abbildung gezeigt.

Um dieses Verhalten besser zu verstehen, ist es zunächst notwendig, sich mit Unicode- und ASCII-Werten sowie der Sortierung in Python vertraut zu machen. Weitere Informationen finden Sie in der ArcGIS Pro-Referenz Kurzer Überblick über Unicode.
Unicode ist "ein Zeichencodierungssystem, in dem Textdaten auf Computern gespeichert und ausgetauscht werden". Jeder Code entspricht einem eindeutigen Zeichen. Die Unicode-Werte für die Zahlen 0 bis 9 sind U+0030 bis U+0039. Die ASCII-Codes dafür sind 48 bis 57. Wichtig ist, dass es für die Zahl 10 keinen Unicode- oder ASCII-Wert gibt, sondern dass einfach die Codes für 1 und 0 kombiniert werden.
Wenn wir die Daten in aufsteigender Reihenfolge sortieren, liest ArcGIS Pro die Werte von links nach rechts in das von uns ausgewählte Sortierfeld für jede Zeile. Die Unicode-Werte des ersten Zeichens werden verglichen und in aufsteigender Reihenfolge aufgelistet. Dieser Vorgang wird für alle Zeichen in allen Zeilen fortgesetzt. Die codierten Werte werden alle in aufsteigender Reihenfolge sortiert, sodass die Felder entsprechend sortiert werden.
Wenn wir unsere Sortierbeispiele betrachten, steht die Zahl 1 (U+0031) an erster Stelle, gefolgt von den Zahlen 10 (U+0031 U+0030), 100 (U+0031 U+0030 U+0030) und so weiter. Ein weiteres Beispiel für diese Art der Sortierung findet sich in einem Wörterbuch: Alle Wörter, die mit A beginnen, werden vor denen aufgeführt, die mit B beginnen, und "aardvark" steht vor "abate". Wenn wir also unsere Werte in aufsteigender Reihenfolge sortieren, reichen unsere Zahlen von 1 bis 10009, 1001 bis 10019, 1002 bis 10029 und so weiter. Ein deutliches Problem dabei ist, dass 1002 nach 10019 folgt, da der Algorithmus zuerst die Zeichen 100* betrachtet und dann 1 mit 2 vergleicht, entscheidet, dass 1 vor 2 liegt, und dann alle Zeichenfolgen mit 1001* vergleicht, wobei 1002 für einen späteren Zeitpunkt in der Folge verbleibt. Dies erklärt, warum 10 vor 2 (U+0032) steht, da die Sortierung "1*" so sortiert hat, dass sie vor 2 steht.
Wenn wir Felder mit numerischen Komponenten sortieren möchten, verwenden wir idealerweise einen numerischen Feldtyp wie "Long", bei dem die Zahlen wie Ganzzahlen und nicht wie Unicode-Werte behandelt werden. Wenn wir unsere Daten basierend auf einem Textfeld sortieren möchten, das eine Mischung aus alphanumerischen Zeichen enthält, ist es am besten, die Länge der Zeichenfolge in unserem Vergleich zu berücksichtigen. Dadurch werden zuerst alle Zeilen mit einem einzelnen Zeichen sortiert, dann alle Zeilen mit zwei Zeichen und so weiter. Auf diese Weise kommt die Zahl 2 vor der Zahl 10. Um dies in ArcGIS Pro zu erreichen, muss ein Feld für die Zeichenfolgenlänge in die Tabelle aufgenommen werden, um die Länge der numerischen Komponenten zu berechnen. Idealerweise gibt es ein definiertes Zeichen, mit dem die Werte getrennt werden können, beispielsweise ein Schrägstrich (/).
Mit dem Code-Block im Fenster "Feld berechnen" kann eine Formel wie die folgende verwendet werden:
import re def calculate_sort_value(s):
if '/' in s:
result = s.split("/", 1)[1]
return len(result)
else:
return None
Dieses neue Längenfeld kann dann als Sortierkriterium verwendet werden. Wenn das Textfeld komplexer ist, beispielsweise bei Bauvorschriften mit unterschiedlichen Satzzeichen, d. h. einige verwenden einen Bindestrich, während andere einen Schrägstrich verwenden, können mehrere Felder unterschiedlicher Länge erstellt und diese mithilfe der benutzerdefinierten Sortierfunktion als primäre und sekundäre Sortierfelder kombiniert werden. Zunächst werden alle unsere Zeilen nach Länge A und anschließend nach Länge B sortiert.
Artikel-ID: 000031875
Unterstützung durch ArcGIS-Experten anfordern
Beginnen Sie jetzt mit dem Chatten