赞
踩
遥感反演的多项水质指标,虽然有模板,但一个个打开mxd文件替换源,整饰出图,还是挺麻烦的,于是学了下arcpy,简单用一下,省时间。
由于arcgis在安装时默认就安装了python2.7,用pycharm设置一下环境就可以
首先利用arcgis制作一个模板,图层按顺序放置,其他的坐标系、图例、标题等正常放置即可,达到能够正常出图的标准,将mxd文件保存。
# -*- coding:utf-8 -*- import arcpy import os import sys reload(sys) # 添加中文支持 sys.setdefaultencoding('utf8') # 允许覆盖同名文件 arcpy.env.overwriteOutput = True # 设定mxd路径 input_mxd = r'E:\Zph\Python\arcgis0907\input\muban\test.mxd' # 读取mxd文档对象 mxd = arcpy.mapping.MapDocument(input_mxd) # 数据框(图层),返回的是列表,取第一个 df = arcpy.mapping.ListDataFrames(mxd)[0] # 数据框下的各个文件 lyr_list = arcpy.mapping.ListLayers(mxd) lyr_names = [] for lyr in lyr_list: print lyr.name lyr_names.append(lyr.name)
C:\Python27\ArcGIS10.8\python.exe E:/Zph/Python/arcgis0907/test1.py
CODMn
行政区划
行政地名_Clip
水系名
底图
进程已结束,退出代码0
# 替换指标tif
lyr_list[0].replaceDataSource(wq_filepath,'RASTER_WORKSPACE', wq_filename, True)
# 将拉伸更新一下
arcpy.mapping.UpdateLayer(df, lyr_list[0], lyr_list[0], True)
# 获取当前图层中的全部文字要素
element_list = arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT")
# 如需更改
element_list[0].text = '修改后文字'
# 获取当前图层中的全部图片要素
pic_list = arcpy.mapping.ListLayoutElements(mxd,"PICTURE_ELEMENT")
# 如需更改
pic_list[0].sourceImage = new_pic_path
总体思路就是利用ListLayoutElements函数读取元素列表,再一一进行匹配修改。
DATAFRAME_ELEMENT —数据框元素
GRAPHIC_ELEMENT —图形元素
LEGEND_ELEMENT —图例元素
MAPSURROUND_ELEMENT —地图整饰要素元素
PICTURE_ELEMENT —图片元素
TEXT_ELEMENT —文本元素
mxd.saveACopy("new.mxd")
arcpy.mapping.ExportToPNG(mxd, "export.png", resolution=300)
将上述功能写成函数,循环全部水质指标文件,每一份出一个png,保存一个mxd就完成了。半天的活3分钟完成,快乐~
欢迎关注VX:Hzz的地球调查组
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。