Pro的地图系列是批量制图的利器,但是有个不便的地方,就是设置完成地图系列后,只能批量导出为PDF,而不能批量导出为JPG、PNG这些通用的图片格式。
不过帮助文档还是很贴心的为我们准备了解决方案。
以下脚本将地图系列的每一页导出到单个 PNG 文件中,并将索引要素的页面名称作为输出文件名的一部分使用:
import arcpy, os, sys relpath = os.path.dirname(sys.argv[0]) p = arcpy.mp.ArcGISProject(relpath + "\\MapSeries\\US_States.aprx") l = p.listLayouts()[0] if not l.mapSeries is None: ms = l.mapSeries if ms.enabled: for pageNum in range(1, ms.pageCount + 1): ms.currentPageNumber = pageNum print("Exporting {0}".format(ms.pageRow.STATE_NAME)) pageName = ms.pageRow.STATE_NAME l.exportToPNG(os.path.join(relpath, "Output", f"Ex2_{ms.pageRow.STATE_NAME}.png"))
以上脚本即可实现将地图系列批量导出为PNG图像文件,但是使用起来还不够简单。另外有一些功能还需要加入。
在示例脚本的基础上,增加实现上述功能的代码,制作脚本工具。
效果演示
参数设置
参数验证
class ToolValidator:
# Class to add custom behavior and properties to the tool and tool parameters.
def __init__(self):
# set self.params for use in other function
self.params = arcpy.GetParameterInfo()
def initializeParameters(self):
# Customize parameter properties.
# This gets called when the tool is opened.
import arcpy
aprx = arcpy.mp.ArcGISProject("CURRENT")
lyt = aprx.activeView
ms = lyt.mapSeries
indexlyr=ms.indexLayer
fields = arcpy.ListFields(indexlyr)
fieldvalues=[]
for field in fields:
fieldvalues.append(field.name)
self.params[2].filter.list=fieldvalues
self.params[5].enabled = False
self.params[6].enabled = False
return
def updateParameters(self):
# Modify parameter values and properties.
# This gets called each time a parameter is modified, before
# standard validation.
if self.params[4].value=="自定义页面范围":
self.params[5].enabled = True
self.params[6].enabled = True
else:
self.params[5].enabled = False
self.params[6].enabled = False
return
def updateMessages(self):
# Customize messages for the parameters.
# This gets called after standard validation.
return
# def isLicensed(self):
# # set tool isLicensed.
# return True
工具说明
工具下载
请私信联系
更新