我想询问如何使用 ArcPy 编写脚本来处理 ArcGIS map 文档 (MXD) 内的要素数据。
我有一个文件夹,其中包含一些 shapefile (shp) 形式的要素数据。
- D:\tes\2240.shp
- D:\tes\2250.shp
- D:\tes\22460.shp
- 等等
我想创建一个 ArcPy 脚本,可以将上述数据添加到 MXD。我可以使用此脚本单独添加文件:
import arcpy
mxd = arcpy.mapping.MapDocument(r"D:\tes\Operation.mxd")
df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]
targetGroupLayer = arcpy.mapping.ListLayers(mxd, "Actual", df)[0]
addLayer = arcpy.mapping.Layer(r"D:\data\2440.shp")
arcpy.mapping.AddLayerToGroup(df, targetGroupLayer, addLayer, "TOP")
addLayer = arcpy.mapping.Layer(r"D:\data\2450.shp")
arcpy.mapping.AddLayerToGroup(df, targetGroupLayer, addLayer, "TOP")
addLayer = arcpy.mapping.Layer(r"D:\data\2460.shp")
arcpy.mapping.AddLayerToGroup(df, targetGroupLayer, addLayer, "TOP")
mxd.saveACopy(r"D:\tes\Operation_2.mxd")
del mxd, addLayer
我想更改上面脚本的路径源数据,在这部分
addLayer = arcpy.mapping.Layer(r"D:\data\2440.shp")
因此脚本可以使用扩展名添加文件夹中的所有 shp 数据,而不是硬编码每个文件名。有点像这样:
addLayer = arcpy.mapping.Layer(r"D:\data\*.shp")
正确的方法是什么?
最佳答案
Create a list of all the shapefiles in the directory ,然后循环遍历它。
import arcpy
mxd = arcpy.mapping.MapDocument(r"D:\tes\Operation.mxd")
df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]
# set workspace to directory of interest
arcpy.env.workspace = r"D:\data"
# create list of all files ending in .shp
list_shapefiles = arcpy.ListFiles("*.shp")
targetGroupLayer = arcpy.mapping.ListLayers(mxd, "Actual", df)[0]
# loop through list, adding each shapefile to group layer
for shapefile in list_shapefiles:
addLayer = shapefile
arcpy.mapping.AddLayerToGroup(df, targetGroupLayer, addLayer, "TOP")
mxd.saveACopy(r"D:\tes\Operation_2.mxd")
关于arcgis - 使用 ArcPy 将文件夹中的所有文件要素数据(shapefile)添加到 MXD 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43463688/