arcgis - 使用 ArcPy 将文件夹中的所有文件要素数据(shapefile)添加到 MXD 中

标签 arcgis arcpy

我想询问如何使用 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/

相关文章:

python - SDE 的 ListFeatureClasses() 故障

python - 从字符串文本中减去字符串文本

c# - 如何使用c#设置arcobjects中的输入和输出参数,调用python脚本?

mysql - 带 Cast 或 Convert 的 SQLWhere 子句不起作用

javascript - 获取地址位置的几何图形

python - 如何在Python中使用正则表达式搜索除以反斜杠的数据

java - Android-Java Point(android.graphics.point)中的Point不能应用于(Double, Double)

python - Python 2.7.9 中的无效控制字符错误

python - ArcPy ListLayers 用作 FME 参数

Python - 构建一个范围为 `-` 的动态 sql 查询