Python可以简化这个工作,提高我们的工作效率。
ArcPy是一组提供了地理数据分析、数据转换、数据管理和地图自动化的工具包,会随ArcMap一同安装。本次我们用到的是ArcPy的地图自动化(Mapping)模块。
Mapping模块
ArcPy的Mapping模块主要是用于操作现有地图文档 (.mxd) 和 图层文件 (.lyr) 的内容,还提供自动执行导出和打印的功能。以下列举了ArcPy的Mapping模块的部分功能,便于大家理解。
- 创建有关地图文档中所含信息(如数据框坐标系、图层数据源、数据源损坏的图层或布局元素位置)的报告。
- 更新、修复或替换地图文档或图层文件中的图层数据源。
- 更新图层符号系统而无需实际打开地图文档。
- 查找并替换文件夹内所有地图文档的文本字符串。
- 将地图文档保存至之前的 ArcGIS 版本,以便分发。
- 更新地图文档元数据(例如,关键字、摘要和描述)。
- 使用地图导出命令批量创建地理数据,例如,由数据框中要素列表驱动的一系列 GeoTIFF 图像。
- 自动创建和管理要通过 ArcGIS Server 发布的地图服务。
- 构建多种 PDF 地图册。
划重点:自动化制图是要使用现有的地图文档和图层文件,所以还是需要先配置好一幅地图。
代码
以下代码是根据字段批量保存mxd。大致思路如下:
- 访问地图文档,使用 MapDocument (arcpy.mapping)
- 访问第一个数据框
- 访问第一个图层
- 读取要素类代表确诊人数的字段
- 图层是分级色彩渲染方法的话,替换字段
- 保存地图文档
- 释放地图文档
import arcpy
mxd = arcpy.mapping.MapDocument(u'F:\制作黑龙江疫情变化图\结果\黑龙江疫情变化图v10.mxd')
df = arcpy.mapping.ListDataFrames(mxd)[0]
lyr = arcpy.mapping.ListLayers(mxd, u'黑龙江省地级市疫情数据',df)[0]
featureclass = u'F:\制作黑龙江疫情变化图\结果\黑龙江省地级市疫情数据.shp'
for field in arcpy.ListFields(featureclass, u'*月*'):
if lyr.symbologyType == "GRADUATED_COLORS":
lyr.symbology.valueField = field.name
mxd.saveACopy(field.name + '.mxd')
del mxd
批量导出图片代码:
import arcpy, os, time标签:疫情,Python,arcpy,地图,文档,path,mxd,制作,图层 From: https://blog.51cto.com/u_15483489/5727334
#mxd存放的文件夹
path = u'F:\制作黑龙江疫情变化图\结果'
#输出图片的分辨率
res = 500
print '程序开始:' + str(time.ctime())
#图片存储在mxd文件夹
for afile in os.listdir(path):
if afile[-3:].lower() == 'mxd':
mxd = arcpy.mapping.MapDocument(os.path.join(path, afile))
arcpy.mapping.ExportToJPEG(mxd, os.path.join(path, afile[:-3] + 'jpg'), resolution = res)
del mxd
print '程序结束:' + str(time.ctime())