Aggiunta del nome del file al campo dell'attributo utilizzando Calcola campo?


9

Qualcuno sa come aggiungere il nome dello shapefile a un campo nella tabella degli attributi del file?

Ho trovato una descrizione:

"Devi usare la variabile inline in CalculateField come% Name% in expresssion in modo che qualunque sia il nome del file, la stringa verrà inserita in base al nome del file dbase!"

Ho provato a strumento CalculateField con% Name%, ma ho ricevuto il messaggio:

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)

Dov'è il mio errore?

Risposte:


11

Questo codice Python aggiunge il campo FILENAME a tutte le featureclass (escluse quelle nei set di dati) e popola con il nome featureclass.

# 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")

funziona nella versione 10.2. ma non funziona nella versione 10.2.2.
Nate Bradshaw,

Non succede nulla se digito il codice nella console python di arc map (10.6) Sembra non funzionare con questa versione (?)
David

6

C'è uno script sul sito web di arcscripts che dovrebbe aiutarti a farlo

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

Riepilogo Uno script semplice per la creazione di un campo chiamato "FILENAME" e il collegamento del nome file dello shapefile a ciascuna voce nella tabella degli attributi. Utilizzare con altrettanti shapefile all'interno di una directory specificata. Utile quando si selezionano le voci del file di forma e si combinano in un file separato per mantenere una traccia breadcrumb del nome del file di forma originale.

Esegui il file in una directory contenente tutti gli shapfile che necessitano di modifiche

Spero che sia quello che stai cercando


Per informazioni: non funziona per Arcgis 10.X (la sintassi del codice Python è cambiata dopo Arcgis 9.x).
gisnside,


1

Se tutto quanto sopra non funziona per te, a causa dell'incompatibilità della versione o della mancanza di conoscenza (come è per me), prova questa soluzione alternativa:

  • utilizzare lo strumento di conversione Esporta in CAD ed esportare tutte le classi di funzioni dal geodatabase in un file DWG
  • il nome della classe di entità verrà utilizzato per popolare il campo Livello per il file CAD
  • utilizzare lo strumento di conversione da CAD a geodatabase per esportare nuovamente le funzionalità in un GDB
  • ora avrai i campi del nome del livello nella tua tabella per ogni singola funzione
  • usa lo strumento Unisci per combinare le tue classi di caratteristiche dal GDB in un singolo shapefile, che avrà il campo dell'attributo di livello con il nome della classe di caratteristiche originale per identificare gli elementi

0

Ho trovato questo link a uno strumento ArcGIS per il servizio di pesca e fauna selvatica statunitense che fa esattamente quello che stai cercando. Ha funzionato come un fascino!


Questo è lo stesso strumento descritto in una risposta precedente
PolyGeo

Lo strumento di US Fish and Wildlife Service funziona solo se il nome del campo è "NAME". Può essere reso flessibile aggiornando Calcola campo "Nome campo" con% Nome campo%
Eleza Kollannur,
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.