¿El cambio de nombre del campo masivo en la geodatabase de archivos? [duplicar]

16

Tengo una geodatabase de archivos con varios cientos de clases de entidades en ella.

Algunas clases de entidad tienen un campo que recibió un nombre incorrecto y se llamó "SCHEMA_FEATURECLASS_ENTITY" en lugar de ENTITY. En consecuencia, su destino final (Oracle) se queja de los nombres de campo muy largos.

Me gustaría cambiar el nombre de esos campos para que tengan su nombre corto correcto. Encontré ¿Cambiar la clase de entidad y los alias de campo de forma masiva usando ArcPy? pero (por lo que entiendo) el cambio de nombre de un campo es un Operación de agregar, copiar y eliminar, en lugar de solo establecer una propiedad.

¿Alguien tiene un método rápido y sucio para hacer un cambio de nombre masivo? Tengo ArcCatalog 9.3.1 pero NO Visual Studio (entorno de cliente ...).

    
pregunta mwalker 18.08.2010 - 22:34

7 respuestas

11

Puedes usar un script de Python para hacer el trabajo pesado por ti:

Comprueba esto y adáptalo a tus necesidades. No hace falta decir que esto no está probado, y no lo use en datos de producción SIN HACER UNA RESPALDO PRIMERO.

import arcgisscripting

gp = arcgisscripting.create(9.3)

gp.Workspace = "path_to_your_geodatabase"

# you can use absolute path to this function
gp.AddToolbox("management")

featureClasses = gp.ListFeatureClasses("*","ALL")

for featureClass in featureClasses:
    fields = featureClass.ListFields("*","ALL")

    for field in fields:

        # do not duplicate oid and geometry fields
        if field.Type == "OID" or field.Type == "Geometry":
            continue

        # lets refactor our field name
        # this transforms A_B_C into C
        fieldNames = field.Name.split("_")
        del(fieldNames[0:1])

        # add a new field using the same properties as the original
        # field
        gp.AddField(featureClass,fieldNames[0],field.Type)

        # calculate the values of the new field
        # set it to be equal to the old field
        gp.CalculateField(featureClass,fieldNames[0],field)

        # delete the old fields
        gp.DeleteField(featureClass,field)

No lo probé, así que pruébalo y hazme saber si funciona. Si necesita cambiar el nombre del campo de una manera diferente, simplemente modifique la parte de refactor.

    
respondido por el George Silva 19.08.2010 - 15:00
5

No creo que nadie haya mencionado esto todavía, pero una forma muy sencilla de cambiar el nombre de los campos es usar la función Crear tabla / capa de características en la caja de herramientas de administración de datos.

Con esta herramienta, puede especificar un nuevo nombre para sus campos y luego usar la herramienta Copiar filas para crear su nueva tabla con los nombres de campo apropiados.

Nota: Sé que esto funciona en ArcGIS10, pero no puedo confirmar la misma funcionalidad en 9.x

    
respondido por el Nathanus 23.02.2011 - 20:30
4

ET_GeoWizards le permite hacer renombramientos masivos en los campos de featureclass en fGDBs. También puede cambiar el tipo de datos y hacer eliminaciones masivas también.

Sin embargo, debes hacerlo en una clase de entidad a la vez.

No sería demasiado difícil reunir algunos VBA / Python para lograr esto. Todo depende de si el tiempo para desarrollar el código supera el tiempo para hacerlo manualmente con un enfoque como el uso de ET-GW

    
respondido por el Simon 19.08.2010 - 06:10
3

Creo que estás atascado con el método add- > copy- > delete. En ArcCatalog, abra ArcToolbox y vaya a Herramientas de administración de datos - > Campos y use las herramientas Agregar campo y Calcular campo. Para hacer muchas funciones a la vez, haga clic con el botón derecho en la herramienta Agregar campo y elija Lote, luego complete la información para cada clase de entidad. Como el nombre de su campo será el mismo para cada función, puede completar la primera fila de información y hacer clic con el botón derecho - > Rellene para rellenar el resto. Luego haga lo mismo con la herramienta Calcular campo para calcular los valores, y lo mismo con Eliminar campo para eliminar los originales. Creo que esto sería tan rápido (o más rápido) que tratar de encontrar una solución de scripting.

    
respondido por el Timothy Michael 18.08.2010 - 23:08
3

Otro método, requiere Arcinfo y mucho espacio en disco: exporte la geodatabase personal o de archivos a XML normalizado (inc. datos), abra el archivo .xml en un editor de texto decente que puede admitir archivos de gran tamaño, buscar y reemplazar SCHEMA_FEATURECLASS_ENTITY con ENTITY , guardar. Importe el documento de espacio de trabajo XML editado en una geodatabase vacía. Voila.

    
respondido por el matt wilkie 19.08.2010 - 20:01
3

A partir de ArcGIS 10.2.1 for Desktop, puede usar Alter Fields ( Gestión de datos) con una licencia de nivel avanzado para:

  

para cambiar el nombre de los campos o cambiar el nombre de los alias de campos para cualquier tabla de geodatabase o   clase de elemento

La misma herramienta estuvo disponible para las licencias de nivel básico y estándar en ArcGIS 10.2.2 para escritorio.

    
respondido por el PolyGeo 12.09.2014 - 02:58
2

Se eliminó la respuesta errónea sobre el uso de MS Access para cambiar el nombre de los campos en una geodatabase personal. El método descrito corrompe la base de datos. Consulte el historial de revisiones si tiene curiosidad.

Lo que funciona es abrir el .mdb en Access, abrir la tabla de clase de entidad en la vista Diseño y cambiar el nombre del campo allí, de manera interactiva. No toque ninguna de las tablas GDB_* . Así que funciona, pero no en masa (aunque supongo que uno podría escribir una consulta de creación de tabla para eso). Este es también un método fácil para reordenar campos por cierto.

    
respondido por el matt wilkie 19.08.2010 - 19:48

Lea otras preguntas en las etiquetas