Reordenar permanentemente los campos en los datos (shp, gdb)

23

Si tengo un shapefile o una función de geodatabase que tiene campos que quiero reordenar permanentemente, ¿hay alguna herramienta, script o utilidad que me ayude a realizar esta tarea rápidamente?

En general, sé que tiene que crear un nuevo campo, luego rellenarlo con los valores antiguos y luego eliminar el campo antiguo. Espero que haya algo creado por ahí que ayude con esto. Suponiendo que no tenga FME u otra herramienta ETL disponible, ¿cuál es la siguiente mejor sugerencia?

Esto NO es un cambio de nivel de vista (es decir, arrastre y suelte los campos en orden), sino que escriba en un nuevo shapefile o featureclass. Gracias.

    
pregunta RyanDalton 07.02.2011 - 20:29

14 respuestas

12

Estoy bastante seguro de que puedes hacer esto con Feature Class to Feature Class reordenando los campos en la sección del mapa de campos de la herramienta.

Editar: FC2FC no hace esto, pero ... ogr al rescate.

Acabo de confirmar que ogr2ogr puede hacer esto. Especifique su orden de nombre de campo en el interruptor -seleccionar. Por ejemplo, si tengo un shapefile con dos campos, "Nombre" y "FolderPath" (en ese orden), pero primero quiero un nuevo shapefile con "FolderPath":

C:\Temp>ogr2ogr -f "ESRI Shapefile" re_order_ogr.shp re_order1.shp -select "FolderPath,Name"
    
respondido por el Derek Swingley 07.02.2011 - 20:52
6

La herramienta ET GeoWizards hará esto, y parece que la versión gratuita lo hará sin ninguna limitación en el número de características.

    
respondido por el Don Meltz 08.02.2011 - 04:33
5

El complemento "Administrador de tablas" de QGIS ahora también tiene la capacidad de realizar esta tarea fácilmente sin necesidad de una línea de comandos.

    
respondido por el Darren Cope 30.07.2012 - 14:20
4

En QGIS ahora puede usar la caja de herramientas de procesamiento (Ctl + Alt + T) y vaya a QGIS geoalgorithms > Vector table tools > Campos de refactor.

A partir de ahí, tendrás todas las herramientas para editar la estructura de tu tabla.

    
respondido por el Chmeul 24.11.2016 - 17:05
3

X-Ray arcmap add in tiene una herramienta para reordenar campos de Geodatabes format

    
respondido por el Geog 23.04.2014 - 12:35
2

Para la referencia: MapInfo también puede hacerlo fuera de la caja. Solo abre el DBF y reordena los campos permanentemente. enlace también lo hace ($ 40). Es probable que otros editores de DBF también puedan hacerlo.

    
respondido por el Uffe Kousgaard 09.06.2011 - 23:47
2

He tenido un problema similar, y la forma más rápida de reordenar permanentemente los campos de datos, si ya tiene QGIS, es usar el complemento 'Administrador de tablas' como se sugirió anteriormente.

Es fácil de instalar complementos y es fácil de usar, como se describe en la página siguiente:

enlace

Le permite mover los atributos en un orden específico, cambiar el nombre de los campos, insertar nuevos campos y replicarlos. También le permite guardar el archivo original, o cambiarle el nombre y guardarlo de manera diferente al original.

Esta fue una solución rápida y conveniente a mi problema de administración de tablas de atributos, y es altamente recomendable, especialmente para archivos con una gran cantidad de atributos asociados.

    
respondido por el Bunk 16.04.2014 - 18:57
2

Yo, la mejor manera de hacerlo es utilizar las Asignaciones de Campo. He estado luchando con esta característica del software ESRI durante años, pero finalmente estoy contento con esta solución. Básicamente, solo puede hacer una copia de su Clase de entidad con los campos reordenados permanentemente usando arcpy. FieldMappings . Todos los datos se transfieren también. Una vez que se complete la secuencia de comandos, simplemente cambie el nombre de su Clase de entidad anterior a myFeatureClass_old, y su nueva a myFeatureClass!

Aquí está el script, es muy sencillo:

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)
    
respondido por el Jason Matney 19.04.2016 - 14:56
2

La clase de entidad a la clase de entidad ahora puede realizar esto en 10.5 usando la sección de asignación de campos de la herramienta GP.

    
respondido por el Brendan from Esri 14.07.2017 - 14:43
1

MakeQueryTable te permitirá definir el orden de tus campos para una tabla o FC (solo Geodatabase). El orden en que especifica los campos es el orden de la salida. Encuentro esta herramienta difícil de usar. YMMV

Arctoolbox, herramientas de administración de datos, capas y vistas de tabla, hacer tabla de consulta

    
respondido por el klewis 09.06.2011 - 22:00
1

Exporte las clases de entidad a una geodatabase personal vacía (arrastrar y soltar es más rápido), abra el archivo .mdb en Access, vuelva a ordenar los campos en Vista de diseño , guardar, luego con ArcMap / Catalog volver a copiar a la forma o al archivo geodatabase.

El mismo método funciona para cambiar el nombre de los campos.

Sin embargo, tenga cuidado , solo trabaje en copias, es fácil arruinarlo todo. (Como señala Karey Jack en otra respuesta, Esri desalienta el acceso directo a .mdb ). Por seguridad, ignore todas las tablas que comienzan con GDB_ y también las que terminan con _Shape_Index .

    
respondido por el matt wilkie 07.02.2011 - 22:47
0

Prueba OGR2OGR. Puede pasar una consulta SQL y colocar los campos en el orden que desee.

  

ogr2ogr outdataset indataset -sql   "SELECCIONE src_field1 AS dst_field1,   src_field2 AS dst_field2 FROM   sourcelayer "

Solo probé esto, y funciona bien!

FYI, la forma más fácil de instalar OGR es a través de FWTools .

    
respondido por el Darren Cope 10.06.2011 - 14:25
0

Abra el archivo .mdb en MS Access y reordene los campos con arrastrar y soltar en 'Vista de diseño'

Aunque ESRI no recomienda editar una base de datos en Access enlace ESRI

    
respondido por el Karey Jack 30.07.2012 - 12:16
-1

Llego un poco tarde a la fiesta en este caso, pero me sorprende que nadie haya mencionado el Diagrama de geodatabase ESRI .

Un recurso proporcionado por ESRI para editar la estructura XML de su geodatabase y archivos. En lo que a mí respecta, es esencial si está trabajando en algo donde el diseño tiene que ser perfecto (proyecto a largo plazo). Le evitará tener que volver a crear archivos continuamente después de cometer un simple error.

    
respondido por el Roy 30.07.2012 - 14:05

Lea otras preguntas en las etiquetas