免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 4438|回复: 7
收起左侧

[二次开发] 基于ARCGIS PYTHON批量为文件夹下的MXD工作空间添加同名图层

[复制链接]

14

主题

4349

铜板

8

好友

助理工程师

Rank: 5Rank: 5

积分
350
发表于 2018-4-22 07:41 | 显示全部楼层 |阅读模式
一、需要实现的功能
批量的遍历文件夹下的MXD工作空间,并且获取其名字,并查询数据库中与之同名的图层,之后将同名的图层添加到MXD工作空间中。
二、实现思路
1、首先是使用listdir函数,遍历文件夹下的所有MXD工作空间
2、遍历数据库中的所有要素图层
3、将MXD工作空间的名称和要素图层的名称进行对比,当名称相同时,将对应的要素图层添加到MXD工作空间中。
三、代码解释
import arcpy,os, time
import  string
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
#以上五句代码是导入相应的模块
path = arcpy.GetParameterAsText(0) #获取MXD工作空间文件夹路径
Fpath = arcpy.GetParameterAsText(1)#获取要素图层所在数据库的路径
for afile in os.listdir(path): #遍历文件夹下
  if afile[-3:].lower() == 'mxd': #遍历文件夹下的MXD工作空间
    mxdname = afile[0:-4] #获取MXD工作空间的名称
    arcpy.AddMessage(str(afile[0:-4]))
arcpy.env.workspace  = Fpath #设置数据库为当前操作空间
fclist = arcpy.ListFeatureClasses()  #使用ListFeatureClasse函数遍历数据库的图层
for fc in fclist:#对要素图层进行循环遍历
       if mxdname==fc: #进行MXD工作空间名称和要素图层名称对比
          qspmxd = arcpy.mapping.MapDocument(os.path.join(path,afile)) #打开当前MXD工作空间
          df = arcpy.mapping.ListDataFrames(qspmxd, "图层")[0]#查询第一个数据框
          lyrB = Fpath + "\\"+fc #设置当前要素图层路径       lyrA=arcpy.mapping.Layer(lyrB)
          arcpy.AddMessage(str(lyrB))
          arcpy.mapping.AddLayer(df,lyrA,"TOP")#插入要素图层到当前工作空间的顶部
          qspmxd.save()
          del qspmxd

评分

参与人数 1威望 +8 铜板 +40 收起 理由
b176877840 + 8 + 40 支持原创!

查看全部评分

1

主题

2588

铜板

4

好友

银牌会员

Rank: 12Rank: 12Rank: 12

积分
190
发表于 2019-11-24 16:39 | 显示全部楼层
大神,怎么样利用python批量重命名图层呢?
回复 支持 反对

使用道具 举报

1

主题

2588

铜板

4

好友

银牌会员

Rank: 12Rank: 12Rank: 12

积分
190
发表于 2019-11-24 16:39 | 显示全部楼层
还有就是怎么样批量删除含某几个字符的图层?
回复 支持 反对

使用道具 举报

1

主题

2588

铜板

4

好友

银牌会员

Rank: 12Rank: 12Rank: 12

积分
190
发表于 2019-11-24 16:40 | 显示全部楼层
怎么输出对话框?

回复 支持 反对

使用道具 举报

0

主题

1684

铜板

1

好友

高级工程师

Rank: 9Rank: 9Rank: 9

积分
643
发表于 2022-2-16 10:57 | 显示全部楼层
感谢分享
回复

使用道具 举报

37

主题

2万

铜板

111

好友

钻石会员

Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26

积分
5763
发表于 2022-2-22 16:45 | 显示全部楼层
谢谢分享,进来看看
回复 支持 反对

使用道具 举报

6

主题

584

铜板

3

好友

技术员

Rank: 3Rank: 3

积分
85
发表于 2022-8-18 10:33 | 显示全部楼层
想请教一下,添加脚本运行后显示IndexError: list index out of range,是怎么回事呢?
回复 支持 反对

使用道具 举报

6

主题

584

铜板

3

好友

技术员

Rank: 3Rank: 3

积分
85
发表于 2022-8-18 10:46 | 显示全部楼层
2119441893 发表于 2019-11-24 16:40
怎么输出对话框?

请问你设置好了吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
快速回复 返回顶部 返回列表