Hinzufügen eines Dateinamens zum Attributfeld mithilfe von Feld berechnen?

9

Weiß jemand, wie man den Shapefile-Namen einem Feld in der Attributtabelle der Datei hinzufügt?

Ich habe eine Beschreibung gefunden:

'Sie müssen in CalculateField eine Inline-Variable wie% Name% in Ausdruck verwenden, damit die Zeichenfolge unabhängig vom Namen der Datei basierend auf dem Namen der Datenbankdatei eingefügt wird!'

Ich habe versucht, das CalculateField-Tool mit% Name% auszuführen, aber ich habe die folgende Meldung erhalten:

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)

Wo ist mein Fehler?

Nadiia
quelle

Antworten:

11

Dieser Python-Code fügt allen Feature-Klassen (mit Ausnahme derjenigen in Datasets) das Feld FILENAME hinzu und füllt es mit dem Namen der Feature-Class.

# 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
quelle
funktioniert in Version 10.2. funktioniert aber nicht in Version 10.2.2.
Nate Bradshaw
Nichts passiert, wenn ich den Code in die Python-Konsole von Arc Map (10.6)
David
6

Auf der arcscripts-Website befindet sich ein Skript, das Sie dabei unterstützen soll

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

Zusammenfassung Ein einfaches Skript zum Erstellen eines Felds mit dem Namen "FILENAME" und zum Anhängen des Dateinamens des Shapefiles an jeden Eintrag in der Attributtabelle. Verwenden Sie mit so vielen Shapefiles in einem bestimmten Verzeichnis. Nützlich beim Auswählen von Shapefile-Einträgen und beim Kombinieren in einer separaten Datei, um eine Breadcrumb-Spur des ursprünglichen Shapefile-Namens beizubehalten.

Führen Sie die Datei in einem Verzeichnis aus, das alle Shapfiles enthält, die geändert werden müssen

Ich hoffe, dass Sie danach suchen

Loz
quelle
Zur Information: Funktioniert nicht für Arcgis 10.X (die Python-Codesyntax hat sich nach Arcgis 9.x geändert).
Gisnside
1

Wenn all das aufgrund von Versionsinkompatibilität oder mangelndem Wissen (wie bei mir) bei Ihnen nicht funktioniert, versuchen Sie diese Problemumgehung:

  • Verwenden Sie das Konvertierungswerkzeug In CAD exportieren und exportieren Sie alle Ihre Feature-Classes aus Ihrer Geodatabase in eine DWG-Datei
  • Der Name der Feature-Class wird verwendet, um das Layer-Feld für die CAD-Datei zu füllen
  • Verwenden Sie das Konvertierungstool CAD zu Geodatabase, um Ihre Features wieder in eine GDB zu exportieren
  • Sie haben jetzt die Layernamenfelder in Ihrer Tabelle für jedes einzelne Feature
  • Verwenden Sie das Werkzeug "Zusammenführen", um Ihre Feature-Classes aus der GDB in einem einzigen Shapefile zu kombinieren, das das Layer-Attributfeld mit dem ursprünglichen Feature-Class-Namen enthält, damit Sie die Elemente identifizieren können
BeBre
quelle
0

Ich habe diesen Link zu einem ArcGIS-Tool des US-amerikanischen Fisch- und Wildtierservices gefunden, das genau das tut, wonach Sie suchen. Es hat wie ein Zauber funktioniert!

Anna Riling
quelle
Dies ist das gleiche Tool, das in einer früheren Antwort beschrieben wurde
PolyGeo
Das Tool vom US Fish and Wildlife Service funktioniert nur, wenn der Feldname "NAME" lautet. Es kann flexibel gemacht werden, indem das
Feldfeld-