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

24

Si tengo un archivo de formas o una clase de entidad 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 debe crear un nuevo campo, luego completarlo con los valores anteriores y luego eliminar el campo anterior. Espero que ya haya algo creado que ayude con esto. Suponiendo que no tiene FME u otra herramienta ETL disponible, ¿cuál es la siguiente mejor sugerencia?

Esto NO es un cambio de nivel de vista (es decir, arrastrar / soltar los campos en orden), sino escribir en un nuevo shapefile o featureclass. Gracias.

RyanDalton
fuente
Me cuesta creerlo, pero no puedo encontrar la manera de hacerlo. ¿Cuál es su caso de uso para necesitar reordenar campos? ¿Reordenar campos en la pestaña de campos de las propiedades de capa en ArcMap no es una solución?
Derek Swingley
2
El reordenamiento de los campos se debe a que los datos no se usarán en ArcMap, pero con un software de mapeo menos sofisticado que 1) usa archivos de forma y 2) no permite reordenar en el lado del cliente y 3) el cliente necesita ver el los atributos clave se muestran en la parte superior del árbol "identificar".
RyanDalton
Acabo de editar mi respuesta previamente eliminada. Esperemos que no tengas miedo de la línea de comando;).
Derek Swingley
¿la misma pregunta? gis.stackexchange.com/questions/5839/…
SaultDon
2
@ SaultDon- esta no es la misma pregunta. Usted hizo referencia a una pregunta que quiere ordenar RECORDS (filas), pero quiero ordenar CAMPOS (columnas).
RyanDalton

Respuestas:

13

Estoy bastante seguro de que puede hacer esto con Clase de entidad a Clase de entidad al reordenar los campos en la sección del mapa de campo 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 -select. Por ejemplo, si tengo un shapefile con dos campos, "Nombre" y "FolderPath" (en ese orden), pero primero quiero un nuevo shapefile con "FolderPath", haría esto:

C:\Temp>ogr2ogr -f "ESRI Shapefile" re_order_ogr.shp re_order1.shp -select "FolderPath,Name"
Derek Swingley
fuente
2
Si bien no era una opción tan fácil de usar como esperaba, definitivamente funciona. Creé un script de Python de ArcGIS que ayuda a construir las entradas para él, y el usuario solo tiene que incluir la opción -seleccionar "campo1, campo2, etc.". Puede descargarlo en resources.arcgis.com/Resources2010/gallery/file/geoprocessing/…
RyanDalton
Tengo una clase de entidad en SDE con dominios. ¿Tendrá esto los dominios asociados?
MjonesGEO
@joebob no. AFAIK, ogr no admite conjuntos de datos de SDE GDB y tampoco admite dominios.
Derek Swingley
Gracias, acabo de usar XRay y puede reordenar o reemplazar campos mientras mantiene sus dominios en SDE.
MjonesGEO
7

La herramienta ET GeoWizards lo hará, y parece que la versión gratuita lo hará sin ninguna limitación en la cantidad de funciones.

Don Meltz
fuente
Lo hace, pero lamentablemente no retiene alias.
Howeitzer
7

El complemento QGIS "Table Manager" ahora también tiene la capacidad de realizar esta tarea fácilmente sin necesidad de línea de comando.

Darren Cope
fuente
6

En QGIS ahora puede usar la caja de herramientas de procesamiento (Ctl + Alt + T) e ir a geoalgoritmos de QGIS> Herramientas de tabla de vectores> Campos de refactorización.

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

ingrese la descripción de la imagen aquí

Chmeul
fuente
4

X-Ray arcmap add in tiene una herramienta para reordenar campos de formato Geodatabesherramienta de campos de reordenamiento de rayos X aquí

Geog
fuente
Esto funciona muy bien Incluso mantendrá sus dominios en campos si está reordenando un SDE. Gran sugerencia !!
MjonesGEO
3

Para la referencia: MapInfo también puede hacerlo fuera de la caja. Simplemente abra el DBF y reordene los campos permanentemente. http://www.dbf-editor.com también lo hace ($ 40). Otros editores de DBF probablemente también puedan hacerlo.

Uffe Kousgaard
fuente
en esta línea, infolib probablemente también debería funcionar (convertir a ascii (csv), reorganizar para adaptar, volver a convertir a info o dbf), siempre que esté dispuesto a vivir con las limitaciones del formato de archivo .dbf.
Matt Wilkie
¿Te refieres a vivir con las limitaciones del formato CSV? DBF es el punto de partida para esta pregunta ...
Uffe Kousgaard
Me refería a los límites de dbf, pensando específicamente que csv no tiene límites en la longitud del nombre del campo o las longitudes de los valores de registro, y que el punto de partida era el archivo gdb, pero releyendo el QI veo que "shp" se menciona en el título. Entonces, límites por todas partes ;-)
matt wilkie
3

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 'Table Manager' como se sugirió anteriormente.

Es sencillo instalar complementos y es fácil de usar, como se describe en la página a continuación:

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

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

ingrese la descripción de la imagen aquí

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

Litera
fuente
3

Exporte las clases de entidad a una geodatabase personal vacía (arrastrar y soltar es lo más rápido), abra el .mdb en Access, vuelva a ordenar los campos en la Vista de diseño , guárdelo y luego con ArcMap / Catálogo copie de nuevo a la geodatabase de formas o archivos.

El mismo método funciona para renombrar campos.

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

wilkie mate
fuente
3

La mejor manera de hacerlo es usar 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, 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 haya completado el script, simplemente cambie el nombre de su antigua Clase de entidad a myFeatureClass_old, ¡y la nueva a myFeatureClass!

Aquí está el guión, es súper 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)
Jason Matney
fuente
3

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

ingrese la descripción de la imagen aquí

Brendan de Esri
fuente
2

MakeQueryTable le permitirá definir el orden de sus 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 gestión de datos, capas y vistas de tabla, consulta Tabla

klewis
fuente
1

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 DESDE sourcelayer"

¡Acabo de probar esto y funciona bien!

Para su información, la forma más fácil de instalar OGR es a través de FWTools .

Darren Cope
fuente
1

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

Aunque ESRI desaconseja editar una base de datos en Access ESRI link

Karey Jack
fuente
2
¡Bienvenido a nuestro sitio, Karey! ¿No es esta la misma respuesta que Matt Wilkie dio en este hilo hace 18 meses ( gis.stackexchange.com/a/5879 )?
whuber
0

Llego un poco tarde a la fiesta en este caso, pero me sorprende que nadie haya mencionado el Diagramador 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.

Roy
fuente
1
¿Vio el comentario (a la pregunta en sí) que indica que no se trataba de una reorganización de la base de datos, sino que es necesaria para exportar los datos?
whuber