¿Agregar nombre de archivo al campo de atributo usando Calcular campo?

9

¿Alguien sabe cómo agregar el nombre del archivo de forma a un campo en la tabla de atributos del archivo?

He encontrado una descripción:

'¡Debe usar la variable en línea en CalculateField como% Name% en expresión para que cualquiera que sea el nombre del archivo, la cadena se inserte en función del nombre del archivo dbase!'

Intenté calcular la herramienta CalculateField con% Name%, pero recibí el mensaje:

Executing: CalculateField "2011-11-6 15_41_point" DBFName %Name% PYTHON #
Start Time: Thu Dec 08 23:34:23 2011
WARNING 000405: No records within table
Succeeded at Thu Dec 08 23:34:24 2011 (Elapsed Time: 1.00 seconds)

¿Dónde está mi error?

Nadiia
fuente

Respuestas:

11

Este código de Python agrega el campo FILENAME a todas las Featureclasses (excluyendo las de Datasets) y se completa con el nombre de la clase de entidad.

# Import standard library modules
import arcpy, os, sys
from arcpy import env

# Allow for file overwrite
arcpy.env.overwriteOutput = True

# Set the workspace directory 
env.workspace = r"P:\geodatabase.gdb\filename" 

# Get the list of the featureclasses to process
fc_tables = arcpy.ListFeatureClasses()

# Loop through each file and perform the processing
for fc in fc_tables:
    print str("processing " + fc)

    # Define field name and expression
    field = "FILENAME"
    expression = str(fc) #populates field   

    # Create a new field with a new name
    arcpy.AddField_management(fc,field,"TEXT")

    # Calculate field here
    arcpy.CalculateField_management(fc, field, '"'+expression+'"', "PYTHON")
Nate Bradshaw
fuente
funciona en la versión 10.2. pero no funciona en la versión 10.2.2.
Nate Bradshaw
No sucede nada si escribo el código en la consola de Python del mapa de arco (10.6) Parece que no funciona con esta versión (?)
David
6

Hay un script en el sitio web de arcscripts que debería ayudarlo a hacer esto

http://arcscripts.esri.com/details.asp?dbid=14534

Resumen Un script simple para crear un campo llamado "FILENAME" y adjuntar el nombre de archivo del shapefile a cada entrada en la tabla de atributos. Use con tantos shapefiles dentro de un directorio especificado. Útil cuando se seleccionan entradas de archivos de formas y se combinan en un archivo separado para mantener un rastro del nombre original del archivo de formas.

Ejecute el archivo dentro de un directorio que contiene todos los shapfiles que necesitan modificación

Espero que esto sea lo que buscas

Loz
fuente
Para información: no funciona para Arcgis 10.X (la sintaxis del código de Python ha cambiado después de Arcgis 9.x).
Gisnside
1

Si todo lo anterior no funciona para usted, debido a incompatibilidad de versión o falta de conocimiento (como lo es para mí), intente esta solución alternativa:

  • use la herramienta de conversión Exportar a CAD y exporte todas sus clases de entidad desde su geodatabase a un archivo DWG
  • el nombre de la clase de entidad se usará para completar el campo Capa para el archivo CAD
  • use la herramienta de conversión CAD a Geodatabase para exportar sus características nuevamente a un GDB
  • ahora tendrá los campos de nombre de capa en su tabla para cada entidad
  • use la herramienta Fusionar para combinar sus clases de entidad del GDB en un solo archivo de forma, que tendrá el campo de atributo de capa con el nombre de la clase de entidad original para que pueda identificar los elementos
BeBre
fuente
0

Encontré este enlace a una herramienta ArcGIS del Servicio de Pesca y Vida Silvestre de EE. UU. Que hace exactamente lo que está buscando. ¡Funcionó a las mil maravillas!

Anna Riling
fuente
Esta es la misma herramienta descrita en una respuesta anterior
PolyGeo
La herramienta del Servicio de Pesca y Vida Silvestre de EE. UU. Solo funciona si el nombre del campo es "NOMBRE". Se puede hacer flexible actualizando la herramienta Calcular campo 'Nombre de campo' con% Nombre de campo%
Eleza Kollannur