Risposte:
In realtà c'è un trucco molto semplice. Supponiamo di voler prima ordinare per campo "A", quindi per campo "B" in "A". Primo clic sinistro sull'intestazione del campo "B" (fare clic una volta per ordine crescente, una seconda volta per ordine decrescente) nella tabella degli attributi. Quindi fare clic sinistro sull'intestazione del campo "A" (una volta per ASC, seconda volta per DESC). Quest'ultima azione avrà ordinato il campo "A", preservando l'ordinamento del campo "B" all'interno di valori identici di "A". Ho provato con 3 campi e funziona anche (poi si è annoiato). Sto usando QGIS 3.6.3-Noosa.
È possibile utilizzare il plug-in Ordinamento e Numero . Ti consente di ordinare una tabella di attributi per un massimo di 3 campi, quindi crea un campo aggiuntivo che contiene l'ordine delle caratteristiche ordinate.
Disclaimer: sono l'autore del plugin.
sort()
funzione di Python , mi chiedo perché sia così lento. Proverò a trovare qualche trucco per rendere il processo più veloce in una versione futura.
Se è OK per salvare il risultato in modo permanente, è possibile ordinare il file di 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
Ci sono voluti meno di 3 minuti con un file di forma con un milione di poligoni.
Il plug-in DB Manager in QGIS ora ha un nodo "Livelli virtuali" che consente di scrivere comandi SQL rispetto ai file di forma caricati nel progetto QGIS.
Quindi ora che hai questa capacità, la logica SQL per ordinare per più campi è nell'istruzione ORDER BY, usando asc (crescente), desc (decrescente) e puoi metterli insieme per ordinare in base a più colonne:
Un ulteriore vantaggio è che imparerai più SQL, quindi quando ti ammali di shapefile e la maggior parte di PostGIS il salto non sarà così grande !!!
Ora è possibile farlo senza plug-in o lavori specifici del database, almeno per la versione 3.2+. Per ordinare per più colonne:
concat()
insieme ai campi per i quali desideri ordinare, nell'ordine corretto (es. concat("column1", "column2")
). Un'anteprima di output dovrebbe essere mostrata sotto il tuo codice.Questa funzionalità è stata aggiunta tramite il numero 1137 e trattata nell'ultima versione (di sviluppo) del manuale dell'utente .
concat("col1", right( ('000' || tostring( "col2" )), 4))
Bene, è il 2018 ora, quindi non posso credere che non abbia ancora ricevuto risposta.
Apri la vista della tabella degli attributi e fai clic con il tasto destro su qualsiasi colonna, quindi scegli Ordina ...
Finestra di dialogo Configura ordinamento tabella attributi è ora aperto anche con l'editor di espressioni complete
Utilizzare la funzione COALESCE con le colonne desiderate, ad esempio, questo ordinerà una tabella per 3 colonne (prima per ID, poi VERSIONE e poi fid)
coalesce("ID","VERSION","fid" )
Fare clic su OK per ordinare la tabella
Non puoi (almeno non al momento). Scusate!
Consulta la documentazione di QGIS e scorri verso il basso fino all'ultima riga.
Una brutta soluzione sarebbe quella di estrarre il DBF di Shapefile in Excel. Ordinalo lì e salva il risultato. In alternativa, importa il tuo Shapefile in PostGIS o SpatialLite dove hai una maggiore funzionalità di ordinamento. Fondamentalmente, dovrai bypassare QGIS per l'ordinamento avanzato.
Come suggerito da @Sylvester Sneekly, se i tuoi dati sono caricati in un RDBMS come PosGIS o SpatialLite, potresti prendere in considerazione la creazione di una vista del database nel RDBMS che presiede i dati tabulari e quindi caricare la vista preordinata in QGIS come un livello.