การเพิ่มชื่อไฟล์ลงในฟิลด์แอททริบิวโดยใช้คำนวณฟิลด์?


10

ไม่มีใครรู้วิธีเพิ่มชื่อ shapefile ลงในเขตข้อมูลในตารางแอตทริบิวต์ของไฟล์หรือไม่

ฉันพบคำอธิบาย:

'คุณต้องใช้ตัวแปรแบบอินไลน์ใน CalculateField เช่น% Name% ในการแสดงออกเพื่อให้ชื่อไฟล์เป็นอะไรก็ตามสตริงจะถูกแทรกตามชื่อของไฟล์ dbase!'

ฉันได้ลองใช้เครื่องมือ CalculateField ด้วย% Name% แต่ฉันได้รับข้อความ:

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)

ความผิดพลาดของฉันอยู่ที่ไหน

คำตอบ:


12

รหัสหลามนี้เพิ่มฟิลด์ FILENAME ให้กับ Featureclasses ทั้งหมด (ไม่รวมอยู่ในชุดข้อมูล) และเติมด้วยชื่อ 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")

ทำงานในรุ่น 10.2 แต่ไม่ทำงานในเวอร์ชัน 10.2.2
Nate Bradshaw

ไม่มีอะไรเกิดขึ้นถ้าฉันพิมพ์รหัสในคอนโซลหลามของแผนที่ arc (10.6) ดูเหมือนว่าจะไม่ทำงานกับรุ่นนี้ (?)
David

6

มีสคริปต์ในเว็บไซต์ arcscripts ที่ควรช่วยคุณในการทำเช่นนี้

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

บทสรุปสคริปต์อย่างง่ายสำหรับการสร้างฟิลด์ชื่อ "FILENAME" และแนบชื่อไฟล์ของ shapefile เข้ากับแต่ละรายการในตารางแอตทริบิวต์ ใช้กับรูปร่างที่มากที่สุดภายในไดเรกทอรีที่ระบุ มีประโยชน์เมื่อแยกรายการ Shapefile และรวมเป็นไฟล์แยกเพื่อรักษา breadcrumb ของชื่อ Shapefile ดั้งเดิม

เรียกใช้ไฟล์ภายในไดเรกทอรีที่มี shapfiles ทั้งหมดที่ต้องการแก้ไข

ฉันหวังว่านี่คือสิ่งที่คุณต้องการ


สำหรับข้อมูล: ไม่สามารถใช้งานกับ Arcgis 10.X (Python code syntax ได้เปลี่ยนไปหลังจาก Arcgis 9.x)
gisnside


1

หากสิ่งทั้งหมดข้างต้นไม่ได้ผลสำหรับคุณเนื่องจากรุ่นที่เข้ากันไม่ได้หรือขาดความรู้ (เช่นเดียวกับฉัน) ให้ลองวิธีแก้ปัญหานี้:

  • ใช้เครื่องมือแปลงส่งออกเป็น CAD และส่งออกคลาสคุณลักษณะทั้งหมดของคุณจากฐานข้อมูลภูมิศาสตร์ของคุณไปยังไฟล์ DWG
  • ชื่อของคลาสคุณลักษณะจะถูกใช้เพื่อเติมฟิลด์ Layer สำหรับไฟล์ CAD
  • ใช้เครื่องมือแปลง CAD เป็น Geodatabase เพื่อส่งออกฟีเจอร์ของคุณกลับสู่ GDB
  • ตอนนี้คุณจะมีฟิลด์ชื่อเลเยอร์ในตารางของคุณสำหรับแต่ละคุณสมบัติ
  • ใช้เครื่องมือผสานเพื่อรวมคลาสฟีเจอร์ของคุณจาก GDB ให้เป็นหนึ่งเดียว shapefile ซึ่งจะมีฟิลด์แอตทริบิวต์เลเยอร์พร้อมชื่อคลาสฟีเจอร์ดั้งเดิมเพื่อให้คุณสามารถระบุรายการ

0

ฉันพบลิงค์นี้ไปยังเครื่องมือ ArcGIS สำหรับบริการปลาและสัตว์ป่าของสหรัฐที่ทำสิ่งที่คุณต้องการอย่างแท้จริง มันใช้งานได้เหมือนมีเสน่ห์!


นี่เป็นเครื่องมือเดียวกับที่อธิบายไว้ในคำตอบก่อนหน้านี้
PolyGeo

เครื่องมือจาก US Fish and Wildlife Service ใช้งานได้ต่อเมื่อชื่อเขตข้อมูลคือ "NAME" สามารถยืดหยุ่นได้โดยการอัปเดตคำนวณเครื่องมือฟิลด์ 'ชื่อฟิลด์' ด้วย% ชื่อฟิลด์%
Eleza Kollannur
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.