使用计算字段将文件名添加到属性字段?


9

有人知道如何将shapefile名称添加到文件属性表中的字段吗?

我找到了一个描述:

“您必须在CalculateField中使用内联变量,例如在表达式中使用%Name%,以便无论文件名如何,都将基于dbase文件的名称插入字符串!”

我尝试使用%Name%来CalculateField工具,但收到消息:

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)

我的错误在哪里?

Answers:


11

此python代码将FILENAME字段添加到所有要素类(数据集中的要素类除外),并使用要素类名称填充。

# 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 2015年

什么也没有发生,如果我输入弧地图(10.6)的蟒蛇控制台的代码似乎没有工作,这个版本(?)
大卫

6

arcscripts网站上有一个脚本可以帮助您执行此操作

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

摘要创建一个名为“ FILENAME”的字段并将shapefile的文件名附加到属性表中每个条目的简单脚本。在指定目录中使用尽可能多的shapefile。在挑选shapefile条目并合并到一个单独的文件中以维护原始shapefile名称的痕迹时很有用。

在包含所有需要修改的shapfile的目录中运行文件

我希望这就是你所追求的


有关信息:不适用于Arcgis 10.X(Arcgis 9.x之后Python代码语法已更改)。
gisnside


1

如果由于版本不兼容或缺乏知识(如对我而言),上述所有方法都不适合您,请尝试以下解决方法:

  • 使用导出为CAD转换工具并将所有要素类从地理数据库导出到DWG文件
  • 要素类的名称将用于填充CAD文件的“图层”字段
  • 使用CAD到地理数据库转换工具将要素导出回GDB
  • 现在,您的表中将具有每个要素的图层名称字段
  • 使用合并工具将GDB中的要素类组合到一个单独的shapefile中,该文件将具有图层属性字段以及原始要素类名称,以供您识别项目

0

我发现此链接指向美国鱼类和野生动物服务ArcGIS工具,它确实可以满足您的需求。它就像一个魅力!



仅当字段名称为“ NAME”时,美国鱼类和野生动物服务局的工具才有效。它可以由通过更新计算字段工具“字段名称”灵活搭配%字段名称%
Eleza Kollannur
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.