Riordina definitivamente i campi nei dati (shp, gdb)


24

Se ho uno shapefile o un geodatabase featureclass che ha campi che voglio riordinare permanentemente, c'è uno strumento, uno script o un'utilità che mi aiuteranno a svolgere rapidamente questo compito?

In genere so che devi creare un nuovo campo, quindi popolarlo con i vecchi valori, quindi eliminare il vecchio campo. Spero che ci sia già qualcosa creato che possa aiutare in questo. Supponendo che non hai FME o un altro strumento ETL disponibile, qual è il prossimo suggerimento migliore?

Questa NON è una modifica del livello di visualizzazione (ovvero trascina / rilascia i campi in ordine), ma piuttosto scrivi su un nuovo shapefile o featureclass. Grazie.


Trovo difficile da credere, ma non riesco a trovare un modo per farlo. Qual è il tuo caso d'uso per la necessità di riordinare i campi? Riordinare i campi nella scheda dei campi delle proprietà del livello in ArcMap non è una soluzione?
Derek Swingley,

2
Il riordino dei campi è dovuto al fatto che i dati non verranno utilizzati in ArcMap, ma con un software di mappatura meno sofisticato che 1) utilizza shapefile e 2) non consente il riordino sul lato client e 3) il client deve vedere il gli attributi chiave vengono visualizzati nella parte superiore dell'albero "identifica".
Ryan Dalton,

Ho appena modificato la mia risposta precedentemente eliminata. Spero che tu non abbia paura della riga di comando;).
Derek Swingley,


2
@ SaultDon- questa non è la stessa domanda. Hai fatto riferimento a una domanda che vuole ordinare RECORDS (righe), ma voglio ordinare FIELDS (colonne).
Ryan Dalton,

Risposte:


13

Sono abbastanza sicuro che puoi farlo con Feature Feature to Feature Class riordinando i campi nella sezione della mappa dei campi dello strumento.

Modifica: FC2FC non lo fa ma ... ogr in soccorso.

Ho appena confermato che ogr2ogr può farlo. Specificare l'ordine dei nomi dei campi sull'opzione -select. Ad esempio, se ho un file di forma con due campi, "Nome" e "FolderPath" (in quell'ordine), ma prima voglio un nuovo file di forma con "FolderPath", farei questo:

C:\Temp>ogr2ogr -f "ESRI Shapefile" re_order_ogr.shp re_order1.shp -select "FolderPath,Name"

2
Sebbene non fosse un'opzione facile da usare come avevo sperato, fa sicuramente il trucco. Ho creato uno script ArcGIS Python che aiuta a creare gli input per esso e l'utente deve solo includere l'opzione -select "field1, field2, etc". Puoi scaricarlo da resources.arcgis.com/Resources2010/gallery/file/geoprocessing/…
RyanDalton

Ho una classe di funzionalità su SDE con domini. Questo conterrà i domini associati?
MjonesGEO,

@joebob no. AFAIK, ogr non supporta i set di dati dei GDB SDE e non supporta nemmeno i domini.
Derek Swingley,

Grazie, ho appena usato XRay e può riordinare o sostituire i campi mantenendo i loro domini in SDE.
MjonesGEO,

7

Lo strumento ET GeoWizards farà questo, e sembra che la versione gratuita lo farà senza alcuna limitazione sul numero di funzionalità.


Lo fa ma purtroppo non mantiene gli alias.
Howeitzer,

7

Il plug-in "Table Manager" di QGIS ora ha anche la possibilità di eseguire questa attività facilmente senza la riga di comando necessaria.


6

In QGIS è ora possibile utilizzare la casella degli strumenti di elaborazione (Ctl + Alt + T) e accedere ai geoalgoritmi di QGIS> Strumenti tabella vettoriale> Campi refactor.

Da lì avrai tutti gli strumenti per modificare la struttura della tabella.

inserisci qui la descrizione dell'immagine


4

X-Ray arcmap add in ha uno strumento per riordinare i campi in formato Geodatabesstrumento per riordinare i raggi x qui


Funziona molto bene Manterrà anche i tuoi domini nei campi se stai riordinando un SDE. Ottimo consiglio !!
MjonesGEO,

3

Per il riferimento: MapInfo può anche farlo immediatamente. Basta aprire il DBF e riordinare i campi in modo permanente. http://www.dbf-editor.com lo fa anche ($ 40). Probabilmente anche altri editor DBF possono farlo.


in questa linea, probabilmente anche infolib dovrebbe funzionare (converti in ascii (csv), riorganizzare per adattarsi, riconvertire nuovamente in informazioni o dbf), purché tu sia disposto a vivere con i limiti del formato di file .dbf.
matt wilkie,

Intendi convivere con i limiti del formato CSV? DBF è il punto di partenza per questa domanda ...
Uffe Kousgaard,

Intendevo limiti dbf, pensando in particolare che csv non ha limiti sulla lunghezza dei nomi dei campi o delle lunghezze dei valori dei record e che il punto di partenza era il file gdb, ma rileggendo il QI vedi "shp" è menzionato nel titolo. Quindi, limiti tutto intorno ;-)
matt wilkie

3

Ho avuto un problema simile e il modo più veloce per riordinare permanentemente i campi di dati, se hai già QGIS, è utilizzare il plug-in "Gestione tabelle" come suggerito in precedenza.

È semplice da installare plugin ed è facile da usare, come descritto nella pagina seguente:

http://www.qgistutorials.com/en/docs/using_plugins.html

Ti consente di spostare gli attributi in un ordine specifico, rinominare i campi, inserire eventuali nuovi campi e replicarli. Inoltre, consente di salvare il file originale o rinominarlo e salvarlo in modo diverso dall'originale.

inserisci qui la descrizione dell'immagine

Questa è stata una soluzione rapida e conveniente al mio problema di gestione della tabella degli attributi ed è altamente raccomandata, specialmente per i file con un gran numero di attributi associati.


3

Esporta le classi di entità geografiche in un geodatabase personale vuoto (trascinamento della selezione più veloce), apri .mdb in Access, riordina i campi in Design View , salva, quindi con ArcMap / Catalog copia di nuovo per modellare o archiviare il geodatabase.

Lo stesso metodo funziona per rinominare i campi.

Fai attenzione , lavora solo su copie, è facile rovinare tutto. (Come osserva Karey Jack in un'altra risposta, Esri scoraggia l'accesso diretto .mdb ). Per sicurezza ignora tutte le tabelle che iniziano con GDB_e anche quelle che terminano con _Shape_Index.


3

Yo il modo migliore per farlo è usare Field Mappings. Faccio fatica da anni con questa funzionalità del software ESRI, ma finalmente mi accontento di questa soluzione. Fondamentalmente, puoi semplicemente fare una copia della tua classe di caratteristiche con i campi riordinati in modo permanente usando arcpy.FieldMappings . Anche tutti i dati vengono trasferiti. Una volta completato lo script, basta rinominare la tua vecchia classe di caratteristiche in myFeatureClass_old e la tua nuova in myFeatureClass!

Ecco la sceneggiatura, è semplicissima:

import arcpy
'''
This is possible in python using FeatureClasstoFeatureClass with Fieldmappings. You can also rename fields at the same time.
So if you have a Feature Class with FIELD3, FIELD2, FIELD1 and you want the result to be FIELD1, FIELD2, FIELD3 then the following code should accomplish this.
'''
arcpy.env.workspace = r"C:\Users\myself\ArcData\my_geodatabase.gdb"
arcpy.env.overwriteOutput = True

input_fpath = "Lakes"

output_dpath = arcpy.env.workspace
output_fname = "Lakes_new"

fms = arcpy.FieldMappings()

fm = arcpy.FieldMap()
fm.addInputField(input_fpath,"FIELD1")
fms.addFieldMap(fm)

fm = arcpy.FieldMap()
fm.addInputField(input_fpath,"FIELD2")
fms.addFieldMap(fm)

fm = arcpy.FieldMap()
fm.addInputField(input_fpath,"FIELD3")
fms.addFieldMap(fm)

arcpy.conversion.FeatureClassToFeatureClass(input_fpath,output_dpath,output_fname,"",fms)

3

La Classe di funzione a Classe di funzione ora può eseguire questa operazione in 10.5 utilizzando la sezione Mappatura campo strumento GP.

inserisci qui la descrizione dell'immagine


2

MakeQueryTable ti permetterà di definire l'ordine dei tuoi campi per una tabella o FC (solo Geodatabase). L'ordine in cui si specificano i campi è l'ordine dell'output. Trovo questo strumento difficile da usare. YMMV

Arctoolbox, strumenti di gestione dei dati, livelli e viste di tabelle, creano tabelle di query


1

Prova OGR2OGR. È possibile passare una query SQL e inserire i campi nell'ordine desiderato.

ogr2ogr outdataset indataset -sql "SELEZIONA src_field1 AS dst_field1, src_field2 AS dst_field2 DA sourcelayer"

Ho appena provato questo e funziona benissimo!

Cordiali saluti, Il modo più semplice per installare OGR è tramite FWTools .


1

Apri il file .mdb in MS Access e riordina i campi utilizzando il trascinamento della selezione in "Visualizzazione struttura"

Sebbene ESRI scoraggi la modifica di un database nel collegamento Access ESRI


2
Benvenuti nel nostro sito, Karey! Non è la stessa risposta che Matt Wilkie ha dato in questa discussione 18 mesi fa ( gis.stackexchange.com/a/5879 )?
whuber

0

Sono un po 'in ritardo alla festa su questo, ma sono sorpreso che nessuno abbia menzionato il Diagramma programmatore di geodatabase ESRI .

Una risorsa fornita da ESRI per la modifica della struttura XML del geodatabase e dei file. Per quanto mi riguarda è essenziale se stai lavorando a qualcosa in cui il design deve essere perfetto (progetto a lungo termine). Ti impedirà di dover ricreare i file continuamente dopo aver fatto un semplice errore.


1
Hai visto il commento (alla domanda stessa) che afferma che questa non era una riorganizzazione del database, ma piuttosto è necessaria per esportare i dati?
whuber
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.