¿Ordenar por múltiples campos al mismo tiempo en QGIS?

16

¿Es posible ordenar varios campos al mismo tiempo en QGIS?

Por ejemplo, me gustaría ordenar una tabla por nombre de estado y luego, dentro de cada estado, ordenar por nombre de condado.

Esto sería lo mismo que la opción de clasificación avanzada disponible en ArcMap.

    
pregunta Stu Smith 16.11.2012 - 19:20

7 respuestas

7

Puede usar el complemento Sort and Number . 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.

    
respondido por el ArMoraer 25.05.2016 - 13:41
5

Si está bien para 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 shapefile con un millón de polígonos.

    
respondido por el user30184 25.05.2016 - 14:42
5

El complemento DB Manager en QGIS ahora tiene un nodo 'Capas virtuales' que le permite escribir comandos SQL contra shapefiles cargados en su proyecto QGIS.

Así que 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 juntos para ordenar por varias columnas:

Una ventaja adicional es que aprenderás más SQL, así que cuando te canses de los shapefiles y más para PostGIS, ¡el salto no será tan bueno!

    
respondido por el DPSSpatial 25.05.2016 - 17:33
3

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:

  1. Haga clic derecho en el encabezado de la columna de la tabla de atributos y elija "Ordenar ..."
  2. Agregue la función concat() junto con los campos por los que desea ordenar, en el orden correcto (por ejemplo, concat("column1", "column2") ). Debería aparecer una vista previa de la salida debajo de su código.
  3. Marque o desmarque la casilla de verificación "Orden ascendente" en la parte inferior para configurar las direcciones de clasificación de las columnas.
  4. Haga clic en Aceptar y confirme la ordenación.

Esta funcionalidad se agregó a través del problema # 1137 , y se cubrió en latest Versión (de desarrollo) del manual del usuario .

    
respondido por el Eron Lloyd 19.09.2018 - 02:56
2

Bueno, ahora es 2018, así que no puedo creer que todavía no haya respuesta.

  1. Abra la vista de la tabla de atributos y haga clic derecho en cualquier columna, luego elija Ordenar...

  2. La ventana de diálogo Configurar orden de tabla de atributos también está abierta ahora con el editor de expresiones completo

  3. Use la función COALESCE con las columnas deseadas, por ejemplo, esto ordenará una tabla por 3 columnas (primero por ID, luego VERSION y luego fid)

  

coalesce("ID","VERSION","fid" )

Al hacer clic en Aceptar, se ordenará la tabla

    
respondido por el sys49152 12.07.2018 - 20:35
1

No puedes (al menos no por el momento). Lo siento!

Consulte la documentación de QGIS y desplácese hacia abajo hasta la última línea.

Una solución alternativa desagradable sería llevar el DBF del Shapefile a Excel. Ordénalo allí y guarda el resultado. También puede importar su Shapefile en PostGIS o SpatialLite donde tenga una mayor funcionalidad de clasificación. Básicamente, tendrá que evitar QGIS para una clasificación avanzada.

    
respondido por el MappaGnosis 03.12.2012 - 21:35
0

Según lo sugerido por @Sylvester Sneekly, si sus datos se cargan en un RDBMS como PosGIS o SpatialLite, podría considerar crear un vista de base de datos en el RDBMS que precorre los datos tabulares y luego carga la vista precortada en QGIS como una capa.

    
respondido por el RyanDalton 02.01.2013 - 22:59

Lea otras preguntas en las etiquetas