Come modificare l'ordine delle funzionalità in uno shapefile?


18

Ho uno shapefile e voglio cambiare l'ordine delle funzionalità. È possibile?

Voglio ordinare le funzionalità nel file di forma perché sto incorporando questo file di forma in un'app mobile. L'app visualizzerà un elenco di funzionalità e sebbene sia possibile eseguire l'ordinamento al momento del caricamento, preferirei che vengano ordinate.


4
L'obiettivo è legittimo, la media no. Se è necessario ordinarli, utilizzare il risultato di una query, non dare per scontato che siano e rimarranno ordinati.
GuillaumeC,

Risposte:


6

Puoi sempre aprire la tabella degli attributi in ArcMap e fare clic con il tasto destro del mouse sull'intestazione delle colonne e selezionare Ordina crescente ... / Discendente ... per i singoli campi.

Per più campi, invece, fare clic su Ordinamento avanzato per selezionare più campi.

NOTA: l'aggiunta, ad esempio, di un campo ID sequenziale basato sull'ordinamento corrente (che è temporaneo, memorizzato solo in questa mappa / mxd) quando si utilizza il metodo sopra sarà ordinato dall'OID / ObjectID originale della classe di caratteristiche.

È disponibile un ArcScripts che ordina i record in modo permanente e genera un nuovo file di forma: http://arcscripts.esri.com/details.asp?dbid=16771

Spero che, quando dichiari "ordine delle caratteristiche", questo è l'ordine trovato nella tabella degli attributi e non l'ordine di disegno per il sommario / i livelli di simbologia.



7

Ecco una soluzione per riscrivere uno shapefile nuovo e ordinato usando lo strumento da riga di comando GDAL / OGR ogr2ogr.

Ad esempio, uno shapefile orig.shpha un campo numerico volumesu cui ordinare. Questa particolare istruzione SQL esegue un ordinamento inverso (con DESC) in modo che le funzioni con volumevalori di grandi dimensioni vengano disegnate prima di (sotto) le funzionalità con valori di piccole dimensioni:

ogr2ogr -sql "SELECT * FROM orig ORDER BY volume DESC" sorted.shp orig.shp

5

Se si ha accesso a un ArcInfo licenza, è possibile utilizzare il Sort nel (toolbox Data Management), che scrive i record in un ordinamento spaziale o attributo nuovi shapefile o gdb basato fc


purtroppo funziona con FGDB, non con forme
tato

1
tato, lo strumento funziona con fgdb o shapefile come input e output, non ho idea di cosa significhi il tuo commento sopra.
gotchula,


2

Un metodo molto, molto VELOCE e semplice per ordinare un layer shapefile (usando vari campi).

1 - Esporta shapefile in CSV (seleziona un buon separatore, come punto e virgola) e aggiungi GEOMETRIA usando "Opzioni layer" -> "AS WKT"

inserisci qui la descrizione dell'immagine

2 - Apri file.csv con LIBREOFFICE (calc) e usa MENU-> DATI-> ORDINA (molto intuitivo, potente e MOLTO VELOCE (ordina al volo 50000 funzionalità usando 3 colonne come tasto di ordinamento, opzioni ascendente e discendente, e i avere un notebook molto lento;))

3 - Salva di nuovo il file da LIBREOFFICE (calc) come "Testo CSV" (seleziona "Modifica impostazioni filtro" e scegli il separatore come 'punto e virgola', non importa l'avvertimento da libreoffice, salva come CSV e seleziona 'punto e virgola' come separatore)

4 - Da Qgis aprire il nuovo file.csv (e ordinato) dal menu 'Aggiungi livello "-> Aggiungi livello testo delimitatore.

PRO: - Molto, molto veloce, ordina da vari campi - Funziona bene con i dati codificati UTF_8

CONTRO: - Hai bisogno di LIBREOFFICE (ma è un software open source)

Metodo alternativo per ordinare (punti di Sustitute 2 e 3, ed è il più veloce) usando la console (BASH)

  • Apri la console e vai dove hai file.csv

    Supponiamo di voler ordinare il file con la chiave:

    field6 (decrescente) + field1 (Ascen) + field3 (Desce)

    quindi il comando sarà:

    ordina -t ';' -k6,6r -k1,1 -k3,3r file.csv> file_sort.csv

    APPUNTI:

    • puoi aggiungere -kn, n per ogni numero di colonna 'n' (campo) che devi aggiungere alla tua "chiave di ordinamento"
    • aggiungendo 'r' dopo ogni n, n verrà ordinato in modalità inversa (discesa)
    • Deve passare il separatore di caratteri utilizzato nel file CSV con -t param

Metodo alternativo per ordinare senza LibreOffice, usando bash (console):
Juanma Font

-3
  1. Esporta i dati come CSV
  2. Apri con Excel vai a Dati ---- Ordina --- Espandi la selezione e il gioco è fatto
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.