我将在这里简要介绍一下背景。我最近收到了大量的数据,这些数据都是从纸质地图上数字化的。每个地图都保存为一个单独的文件,其中包含许多记录(主要是多边形)。我的目标是将所有这些文件合并到一个shapefile或geodatabase中,这是一个非常简单的任务。但是,除了空间信息,文件中的记录没有任何区别信息,所以我想添加一个字段并用原始文件名填充它,以跟踪其出处。例如,在文件“505_dmg.shp公司“我希望每个记录在属性表中标记为“map_name”的列中有一个“505_dmg”id。我正在尝试使用Python实现这一点的自动化,感觉自己很接近了。下面是我使用的代码:# Import system module
import arcpy
from arcpy import env
from arcpy.sa import *
# Set overwrite on/off
arcpy.env.overwriteOutput = "TRUE"
# Define workspace
mywspace = "K:/Research/DATA/ADS_data/Historic/R2_ADS_Historical_Maps/Digitized Data/Arapahoe/test"
print mywspace
# Set the workspace for the ListFeatureClass function
arcpy.env.workspace = mywspace
try:
for shp in arcpy.ListFeatureClasses("","POLYGON",""):
print shp
map_name = shp[0:-4]
print map_name
arcpy.AddField_management(shp, "map_name", "TEXT","","","20")
arcpy.CalculateField_management(shp, "map_name","map_name", "PYTHON")
except:
print "Fubar, It's not working"
print arcpy.GetMessages()
else:
print "You're a genius Aaron"
运行此脚本时收到的输出:
^{pr2}$
看起来很成功,对吧?嗯,它已经…差不多了:为两个文件添加并填充了一个字段,它非常适合505_dmg.shp公司文件。问题是,506_dmg.shp公司在“地图名称”一栏中也被标记为“505_dmg”。虽然循环似乎部分工作,但map_name变量似乎没有更新。非常感谢您的任何想法或建议。在
谢谢
亚伦