2017-04-18 8 views
1

ArcGIS 맵 문서 (MXD) 내에서 피처 데이터를 처리하기 위해 ArcPy를 사용하여 스크립팅에 관해 문의하고 싶습니다.폴더에서 ArcPy로 MXD로 모든 파일 피쳐 데이터 (쉐이프 파일) 추가하기

shapefile (shp) 형식의 일부 기능 데이터가있는 폴더가 있습니다.

  • D : \ TES \ 2240.shp
  • D : \ TES \ 2250.shp
  • D : \ TES \ 22460.shp

내가 원하는 등 위의 데이터를 MXD에 추가 할 수있는 ArcPy 스크립트를 만듭니다.

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") 

어떻게해야할까요?

+0

시도한 것을 나타내는 코드를 포함해야합니다. 감사! –

답변

1

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")