Arcmap中实现批量出图

场景分析

需要绘制相同格式的植被适宜性分布图(栅格),有上百种,单独从arcmap中出图太费时间

解决思路和方法

材料准备(处理软件和数据)

处理软件用arcmap10.2,需要调用python窗口,如下
在这里插入图片描述

需要出图的植被适宜性分布栅格文件,以桉树为例
在这里插入图片描述

制作出图模板mxd文件,包括栅格图层的配色、经纬度、指北针、比例尺、图例以及辅助边界数据等,本文章用的mxd文件如下图
在这里插入图片描述

出图栅格的名称Excel表(.格式)
第一列为栅格数据文件路径
第二列为树种的中文名称
第三列为树种的拉丁名称在这里插入图片描述

解决思路与步骤

>通过通过arcpy调用命令,代替手动工作,实现批量处理

打开模板mxd文件
打开python窗口
撰写出图代码

代码

//导入包
import os
import arcpy
import xlrd
//设置运行默认环境,输入植被适宜性栅格文件的
arcpy.env.workspace=r"H:\shanshuilintianhu\reclass"
//读取出图名称xls表格
indir=r"G:\shanshuilintianhu\firstpic.xls"
xl=xlrd.open_workbook(indir)
table1 = xl.sheet_by_name("Sheet1")
mxd = arcpy.mapping.MapDocument("CURRENT") #将当前arcmap的模板保存为mxd
for i in range(0,200):
    for df in arcpy.mapping.ListDataFrames(mxd): 
        mxd.activeView = df.name #激活arcmap中的数据框窗口,依次激活Layer和New Data Frame窗口
        arcpy.MakeRasterLayer_management(table1.cell(i,0).value,'rasterLayer') #创建特定树种栅格图层的栅格图层
        #设置模板图层的配色
    a=arcpy.mapping.ListLayoutElements(mxd,"TEXT_ELEMENT") #输出绘制模板中的文本列表
    a[7].text=table1.cell(i,1).value  #修改树种的中文名称
    a[6].text=table1.cell(i,2).value  #修改树种的英文名称  
    outpic="G:\\shanshuilintianhu\\pic\\"+table1.cell(i,1).value #输出图片的文件路径
    arcpy.mapping.ExportToPNG(mxd,outpic,resolution=500) #输出图片

注意事项:
(1)文件路径最好用英文
(2)修改树种中文和英文名称中a[7]和a[6]不同模板可能会有区别,这个需要自己去打印出列表a,查看自己需要修改的文本索引
(3)本代码中的图例部分用的统一模板,没有做修改,制作模板的时候需要将制作的图例转化为图片,否则在导入新的树种图层时候图例大小格式会变化。
(4)通过修改最后一行代码,可以输出JPG、PDF格式等。

结果

输出的图片结果如下
在这里插入图片描述

补充应用

for i in range(0,2):
...     for df in arcpy.mapping.ListDataFrames(mxd): 
...         mxd.activeView = df.name
...         arcpy.MakeRasterLayer_management(table1.cell(i,0).value,table1.cell(i,1).value)
...         arcpy.ApplySymbologyFromLayer_management(table1.cell(i,1).value,r"C:\Users\yangjin.BIWMAIL.000\Desktop\qqqq\bio1.tif.lyr")
...         lyr = arcpy.mapping.ListLayers(mxd)[0]
...         lyr.visible = True
...         print(lyr)
...         lyr = arcpy.mapping.ListLayers(mxd)[1]
...         lyr.visible = False
...         print(lyr)
...     arcpy.RefreshTOC()
...     arcpy.RefreshActiveView()
...     a=arcpy.mapping.ListLayoutElements(mxd,"TEXT_ELEMENT")
...     a[0].text=table1.cell(i,2).value
...     outpic="C:\\Users\\yangjin.BIWMAIL.000\\Desktop\\qqqq\\"+table1.cell(i,1).value
...     arcpy.mapping.ExportToPNG(mxd,outpic,resolution=500)

补充知识

将视图中的某一个图层设置为显示或不显示
将第一个图层显示为可见
lyr = arcpy.mapping.ListLayers(mxd)[0]
lyr.visible = True
将第二个图层显示为不可见
lyr = arcpy.mapping.ListLayers(mxd)[1]
… lyr.visible = False

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值