2017-04-18 2 views
1

Je souhaite poser des questions sur l'utilisation de scripts ArcPy pour le traitement des données d'entités dans un document ArcGIS (MXD).Ajout de toutes les données d'entités de fichiers (fichiers de formes) du dossier dans un fichier MXD avec ArcPy

J'ai un dossier qui contient des données d'entités au format shapefile (shp).

  • D: \ tes \ 2240.shp
  • D: \ tes \ 2250.shp
  • D: \ tes \ 22460.shp
  • etc.

Je veux créer un script ArcPy qui peut ajouter les données ci-dessus à un fichier MXD. Je peux ajouter des fichiers individuellement à l'aide de ce script:

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 

Je souhaite modifier les données source de chemin du script ci-dessus, à cette partie

addLayer = arcpy.mapping.Layer(r"D:\data\2440.shp") 

de sorte que le script peut ajouter toutes les données SHP dans le dossier en utilisant l'extension, pas chaque nom de fichier codé en dur. Quelque chose un peu comme ceci:

addLayer = arcpy.mapping.Layer(r"D:\data\*.shp") 

Quelle est la bonne façon de le faire?

+0

Vous devez inclure du code indiquant ce que vous avez essayé. Merci! –

Répondre

1

Create a list of all the shapefiles in the directory, puis de le parcourir.

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