Antworten:
Es gibt tatsächlich einen sehr einfachen Trick. Angenommen, Sie möchten zuerst nach Feld "A" und dann nach Feld "B" in "A" sortieren. Klicken Sie zunächst mit der linken Maustaste auf die Überschrift des Feldes "B" (klicken Sie einmal für aufsteigende Sortierung, ein zweites Mal für absteigende Sortierung) in der Attributtabelle. Klicken Sie dann mit der linken Maustaste auf die Kopfzeile des Feldes "A" (einmal für ASC, zum zweiten Mal für DESC). Diese letzte Aktion hat das sortierte Feld "A", während die Sortierung des Feldes "B" innerhalb identischer Werte von "A" beibehalten wird. Versuchte es mit 3 Feldern und es funktioniert auch (dann wurde langweilig). Ich benutze QGIS 3.6.3-Noosa.
Sie können das Sort and Number- Plugin verwenden. Sie können eine Attributtabelle nach bis zu 3 Feldern sortieren und anschließend ein zusätzliches Feld erstellen, das die Reihenfolge der sortierten Features enthält.
Haftungsausschluss: Ich bin der Autor des Plugins.
sort()
Funktion, ich frage mich, warum es so langsam ist. Ich werde versuchen, einen Trick zu finden, um den Prozess in einer zukünftigen Version zu beschleunigen.
Wenn Sie das Ergebnis dauerhaft speichern möchten, können Sie das Shapefile mit GDAL sortieren
ogr2ogr -f "ESRI Shapefile" -dialect sqlite -sql "SELECT *
FROM my_shapefile ORDER BY attr_1, attr_2, attr_3" sorted.shp my_shapefile.shp
Dauerte weniger als 3 Minuten mit einem Shapefile mit einer Million Polygonen.
Das DB Manager-Plugin in QGIS verfügt jetzt über einen Knoten 'Virtuelle Ebenen', mit dem Sie SQL-Befehle für Shapefiles schreiben können, die in Ihr QGIS-Projekt geladen wurden.
Nachdem Sie nun über diese Funktion verfügen, befindet sich die SQL-Logik zum Sortieren nach mehreren Feldern in der Anweisung ORDER BY. Verwenden Sie dazu asc (aufsteigend), desc (absteigend), und Sie können sie miteinander verbinden, um nach mehreren Spalten zu sortieren:
Ein zusätzlicher Bonus ist, dass Sie mehr SQL lernen werden. Wenn Sie also die Shapefiles satt haben und die meisten von PostGIS, wird der Sprung nicht so groß sein !!!
Dies kann jetzt ohne Plugins oder datenbankspezifische Arbeiten durchgeführt werden, zumindest für Version 3.2+. So sortieren Sie nach mehreren Spalten:
concat()
zusammen mit den Feldern, nach denen Sie sortieren möchten, in der richtigen Reihenfolge (z. B. concat("column1", "column2")
) hinzu. Eine Ausgabevorschau sollte unter Ihrem Code angezeigt werden.Diese Funktionalität wurde über die Ausgabe Nr. 1137 hinzugefügt und in der neuesten (Entwicklungs-) Version des Benutzerhandbuchs behandelt .
concat("col1", right( ('000' || tostring( "col2" )), 4))
Nun, es ist 2018 und ich kann nicht glauben, dass dies noch nicht beantwortet wurde.
Öffnen Sie die Attributtabellenansicht und klicken Sie mit der rechten Maustaste auf eine beliebige Spalte. Wählen Sie dann Sortieren ... aus.
Das Dialogfenster zum Konfigurieren der Sortierreihenfolge für Attributtabellen ist jetzt auch mit dem vollständigen Ausdruckseditor geöffnet
Verwenden Sie die COALESCE-Funktion mit den gewünschten Spalten. Dadurch wird beispielsweise eine Tabelle nach 3 Spalten sortiert (zuerst nach ID, dann nach VERSION und dann nach fid).
coalesce("ID","VERSION","fid" )
Klicken Sie auf OK, um die Tabelle zu sortieren
Das kannst du nicht (zumindest im Moment nicht). Es tut uns leid!
Lesen Sie die QGIS-Dokumentation und scrollen Sie bis zur letzten Zeile.
Eine unangenehme Umgehung wäre, den DBF des Shapefiles in Excel zu ziehen. Sortieren Sie es dort und speichern Sie das Ergebnis. Alternativ können Sie Ihr Shapefile in PostGIS oder SpatialLite importieren, wo Sie eine größere Sortierfunktionalität haben. Grundsätzlich müssen Sie QGIS für die erweiterte Sortierung umgehen.
Wie von @Sylvester Sneekly vorgeschlagen, können Sie, wenn Ihre Daten in ein RDBMS wie PosGIS oder SpatialLite geladen werden, eine Datenbankansicht im RDBMS erstellen, die die Tabellendaten vorsortiert, und dann die vorsortierte Ansicht als Layer in QGIS laden.