Respuestas:
En realidad hay un truco muy simple. Supongamos que desea ordenar por campo "A" primero, y luego por campo "B" dentro de "A". Primero haga clic izquierdo en el encabezado del campo "B" (haga clic una vez para ordenar en forma ascendente, una segunda vez para descender) en la tabla de atributos. Luego haga clic izquierdo en el encabezado del campo "A" (una vez para ASC, segunda vez para DESC). Esta última acción habrá ordenado el campo "A", mientras conserva la clasificación del campo "B" dentro de valores idénticos de "A". Lo probé con 3 campos y también funciona (luego me aburrí). Estoy usando QGIS 3.6.3-Noosa.
Puede usar el complemento Ordenar y numerar . Le permite ordenar una tabla de atributos por hasta 3 campos, luego crea un campo adicional que contiene el orden de las características ordenadas.
Descargo de responsabilidad: soy el autor del complemento.
sort()
función de Python , me pregunto por qué es tan lento. Intentaré encontrar algún truco para acelerar el proceso en una versión futura.
Si está bien guardar el resultado de forma permanente, puede ordenar el archivo de forma con GDAL
ogr2ogr -f "ESRI Shapefile" -dialect sqlite -sql "SELECT *
FROM my_shapefile ORDER BY attr_1, attr_2, attr_3" sorted.shp my_shapefile.shp
Tomó menos de 3 minutos con un archivo de forma que tiene un millón de polígonos.
El complemento DB Manager en QGIS ahora tiene un nodo 'Capas virtuales' que le permite escribir comandos SQL contra archivos shape cargados en su proyecto QGIS.
Entonces, ahora que tiene esta capacidad, la lógica SQL para ordenar por múltiples campos está en la instrucción ORDER BY, usando asc (ascendente), desc (Descendente), y puede encadenarlos para ordenarlos por múltiples columnas:
Una ventaja adicional es que aprenderá más SQL, así que cuando se canse de los archivos de forma y la mayoría en PostGIS, ¡el salto no será tan bueno!
Esto ahora se puede hacer sin ningún complemento o trabajo específico de la base de datos, al menos para la versión 3.2+. Para ordenar por múltiples columnas:
concat()
junto con los campos por los que desea ordenar, en el orden correcto (ej. concat("column1", "column2")
). Se debe mostrar una vista previa de salida debajo de su código.Esta funcionalidad se agregó a través del número 1137 y se cubrió en la última versión (desarrollo) del manual del usuario .
concat("col1", right( ('000' || tostring( "col2" )), 4))
Bueno, ahora es 2018, así que no puedo creer que aún no se haya respondido.
Abra la vista de la tabla de atributos y haga clic derecho en cualquier columna, luego elija Ordenar ...
La ventana de diálogo Configurar el orden de clasificación de la tabla de atributos está abierta ahora con el editor de expresiones completas también
Use la función COALESCE con las columnas deseadas, por ejemplo, esto ordenará una tabla por 3 columnas (primero por ID, luego VERSIÓN y luego fid)
coalesce("ID","VERSION","fid" )
Al hacer clic en Aceptar se ordenará la tabla.
No puedes (al menos no por el momento). ¡Lo siento!
Consulte la documentación de QGIS y desplácese hasta la última línea.
Una solución desagradable sería extraer el DBF del Shapefile en Excel. Ordénelo allí y guarde el resultado. Alternativamente, importe su Shapefile a PostGIS o SpatialLite donde tenga una mayor funcionalidad de clasificación. Básicamente, tendrá que pasar por alto QGIS para una clasificación avanzada.
Como lo sugiere @Sylvester Sneekly, si sus datos se cargan en un RDBMS como PosGIS o SpatialLite, podría considerar crear una vista de base de datos en el RDBMS que clasifique los datos tabulares y luego cargue la vista preseleccionada en QGIS como una capa.