Menambahkan nama file ke bidang atribut menggunakan Calculate Field?

9

Apakah ada yang tahu cara menambahkan nama shapefile ke bidang di tabel atribut file?

Saya telah menemukan deskripsi:

'Anda harus menggunakan variabel sebaris di CalculateField seperti% Name% di ekspresi sehingga apa pun nama file tersebut, string akan dimasukkan berdasarkan Nama file dbase!'

Saya sudah mencoba alat CalculateField dengan% Name%, tetapi saya mendapat pesan:

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)

Di mana kesalahan saya?

Nadiia
sumber

Jawaban:

11

Kode python ini menambahkan bidang FILENAME ke semua kacamata hitam (tidak termasuk yang ada dalam Kumpulan Data) dan mengisi dengan nama kelas fitur.

# 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
sumber
bekerja di versi 10.2. tetapi tidak berfungsi dalam versi 10.2.2.
Nate Bradshaw
Tidak ada yang terjadi jika saya mengetikkan kode di konsol python dari arc map (10.6) Sepertinya tidak berfungsi dengan versi ini (?)
David
6

Ada skrip di situs web arcscripts yang akan membantu Anda dalam melakukan ini

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

Ringkasan Skrip sederhana untuk membuat bidang yang disebut "FILENAME" dan melampirkan nama file shapefile ke setiap entri dalam tabel atribut. Gunakan sebanyak mungkin shapefile dalam direktori yang ditentukan. Berguna saat memilah entri shapefile dan menggabungkan ke file terpisah untuk mempertahankan jejak remah roti dari nama shapefile asli.

Jalankan file dalam direktori yang berisi semua shapfile yang membutuhkan modifikasi

Saya harap ini yang Anda cari

Loz
sumber
Untuk info: tidak berfungsi untuk Arcgis 10.X (sintaksis kode Python telah berubah setelah Arcgis 9.x).
gisnside
1

Jika semua hal di atas tidak berhasil untuk Anda, karena ketidakcocokan versi atau kurangnya pengetahuan (seperti bagi saya), maka coba solusi ini:

  • gunakan alat konversi Ekspor Ke CAD dan ekspor semua kelas fitur Anda dari geodatabase Anda ke file DWG
  • nama kelas fitur akan digunakan untuk mengisi bidang Layer untuk file CAD
  • gunakan alat konversi CAD ke Geodatabase untuk mengekspor fitur Anda kembali ke GDB
  • Anda sekarang akan memiliki bidang nama layer di tabel Anda untuk setiap fitur tunggal
  • menggunakan alat Gabung untuk menggabungkan kelas fitur Anda dari GDB ke dalam satu bentuk file tunggal, yang akan memiliki bidang atribut lapisan dengan nama kelas fitur asli untuk Anda mengidentifikasi item
BeBre
sumber
0

Saya menemukan tautan ini ke Alat ArcGIS Layanan Ikan dan Margasatwa AS yang melakukan persis seperti yang Anda cari. Itu bekerja seperti pesona!

Anna Riling
sumber
Ini adalah alat yang sama yang dijelaskan dalam jawaban sebelumnya
PolyGeo
Alat dari US Fish and Wildlife Service hanya berfungsi jika nama bidangnya "NAME". Itu dapat dibuat fleksibel dengan memperbarui Calculate Field Tool 'Field Name' dengan% Field Name%
Eleza Kollannur