当前位置:首页 期刊杂志

基于ArcPy的ArcGIS数据驱动制图及批量出图——以耕地质量等别评定制图为例

时间:2024-09-03

林金宝

(福建金地勘测规划有限公司,福州350001)

0 引言

土地整治项目耕地质量评定最终成果需要制作与输出样点图、土地利用现状图、国家自然等别图、国家利用等别图及国家经济等别图5张专题图,其传统制作流程为:提取出每个项目的相关图层→数据符号化→图面整饰→工程保存→地图输出。流程虽不复杂,但在土地整治项目评定实际工作中,因需依据多个项目重复制作相关专题地图,制图过程就显得过于繁锁,费时费力,容易疏漏,导致工作效率及质量大打折扣,难以满足工作制图质量及进度要求。本文以耕地质量评定制图为例,基于ArcGIS数据驱动制图,通过ArcPy实现出图自动化,构建适用于各种类型土地整治项目耕地质量等别评定的批量制图流程与出图模块,以供同行参考。

1 基于ArcGIS的批量制图研究

耕地质量评定制图是将地图专题要素和基础地理信息要素,按一定比例尺、数学法则,以符号、色彩、注记等形式表示在图面上的一种制图形式。ArcGIS因其有制图表达、数据驱动、制图要素预处理等强大功能而受诸多规划工程师青睐。批量制图动态联动图饰功能可以通过ArcGIS数据驱动动态要素配置实现。但ArcGIS只提供以PDF格式批量数据驱动地图册输出,不符合现实工程出图对图件格式要求,也不能将单个地图按项目名称专题名的命名方式批量输出。大量工作实践证明,普通PDF格式地图在用转换工具转换为其他格式时存在诸多问题,例如利用PDF图片转换工具将GIS导出的PDF格式地图转换为其他栅格格式(如JPEG)时,会出现地图要素丢失等问题,即便格式转换成功,还需要耗费大量时间根据工作要求修改地图的命名。因此在类似耕地质量项目评定工作中,针对若干具体项目专题图的自动化制作及按规范名称要求批量输出地图就显得非常重要。

近些年,国内许多学者对基于ArcGIS的批量制图进行了大量研究与探索。余咏胜等利用ArcPy将影像分幅自动添加到地图模板上,并自动修改标题信息,实现了影像地图自动制作[1];陈志军等提出制作系列地图的解决方案,运用ArcPy实现系列地图批量出图[2];宋香平等基于ArcPy实现了专题地图批量制作[3];任俊儒采用数据驱动制图结合ArcPy,实现了批量制图和导图,但导图只基于当前制图文档,不能基于数据驱动地图文档[4]。上述这些实际操作通常都需要较深的编程功底,且与实际工程要求还有一定差距,不能满足一些特定项目实际要求。本文基于ArcGIS中的数据驱动进行统一批量整饰制图,并结合ArcPy进行批量导图,将ArcPy脚本工具化,可实现限定分辨率下多个制图页面、多种输出格式下的批量输出,简单操作,适用于不同水平的工作人员。

2 ArcPy结合数据驱动在制图中的应用原理

ArcGIS10.0中新增了数据驱动制图的功能,可以帮助用户更加轻松、便捷地批量生产某类特定的专题图,而用户只需要配置好一幅专题图的模板即可。通过“数据驱动页面”,可以基于单个地图文档方便快捷地创建一系列布局页面。要素图层或索引图层基于图层中的各个索引要素将地图分割为多个部分,然后为每个索引要素生成一个相应的页面。“数据驱动页面”可基于常规的面格网(即渔网),也可以依据某条路径,还可以根据地图要素创建。

ArcPy是一个以ArcGisScripting模块为基础并继承了ArcGisScripting模块功能进而构建而成的站点包[5]。ArcPy是ArcGIS10.0以上版本所固有GIS开发包,是以实用高效的方式通过Python执行地理数据分析、数据转换、数据管理和地图自动化工作。通过ArcPy可访问地理处理工具和其他函数、类和模块,从而快速轻松地创建各种简单或复杂工作流。使用以ArcPy编写的ArcGIS应用程序和脚本的优势在于,可以访问并使用不同领域的GIS专业人员和程序员开发的大量Python模块。通过ArcPy可访问地理处理工具以及其他函数、类和模块,从而创建简单或复杂工作流。一般来说,ArcPy按工具、函数、类和模块进行组织。通过这一解释和动态型编程语言,用户可以在交互式环境中快速地创建脚本原型并进行测试。同时,这种脚本语言功能强大,依托ArcGIS本身站点开发包可轻松实现数据处理、空间分析、数据检查等功能,在ArcGIS领域应用非常广泛。

2.1 技术流程

针对传统制图的缺陷,本文根据不同项目采用ArcGIS数据驱动模块按同一专题统一制图,按项目名称进行页面驱动制作同一类型的单一工程地图模版,依据项目对工程地图进行数据驱动制作专题地图册。地图册制作完成后,借助ArcPy编程进行批量导图,最终实现按项目批量输出特定格式的成果图(见图1)。

图1 耕地质量评定地图批量制作流程

以国家经济等别图为例,其需要准备地类符号点层、线状地物图层、地类图斑界线层、地类图斑层、项目范围界线、分等单元层以及国家经济等别层。其中项目范围界线、分等单元层和国家经济等别图层、驱动要素图层需要建项目名称字段用于数据驱动动态显示图层及图名、比例尺等联动图饰。在ArcGIS数据驱动制图模块中,按项目控制图层查询、缩放显示,通过数据驱动控制基于每个项目区及周边各个图层的显示与输出范围,即可制作出统一风格的基于不同项目的国家经济等别图地图册。

2.2 地图要素图层预处理及要素符号化

在ArcGIS中加载点、线、面等要素图层,对每个图层进行制图要素预处理,进行必要的拓扑、抽稀、融合处理。然后按耕地质量评定制图规范对每一要素图层进行符号化处理,按规范要求对符合要求的点线面要素图层进行颜色、符号、大小的符号化配图。[6]

2.3 数据驱动设置

在ArcMap中打开数据驱动页面扩展模块,定义数据驱动数据框、驱动图层、驱动字段、比例尺、图例、图幅朝向(图幅旋转)等设置。然后采用驱动字段对图幅名称等需要动态变化的部分进行数据驱动链接联动。本文以耕地国家经济等别图为例,采用项目范围图层中的项目名称字段进行数据驱动制作基于项目名称的耕地国家经济等别图地图册(图2)。

图2 数据驱动设置示意图

2.4 批量图层导出

ArcMap中的数据驱动制图,本身内置了地图册的PDF格式成册批量导图。导出PDF地图册后,还可以借助PDF转JPEG等其他图片栅格格式转换工具将PDF地图转换为项目要求的地图格式。但格式转换通常会丢失点状图片符号或不能按地图名称来转换,转换完成后通常要进行重命名。基于此,本次实验采取ArcPy进行编程制作脚本工具箱批量导出地图。ArcPy是开源通用脚本语言Python在ArcGIS软件中的软件包,它可以帮助用户充分利用ArcGIS中的地理数据加工、转换、整理等一系列的工具进行自动化开发,从而避免了因使用外部接口导致程序开发难度增大等问题。[7]

本实验代码如下:

2.5 制作成地图脚本工具

在ArcMap或ArcCatalog界面文件夹目录或文件数据库目录中新建Arctoolbox工具箱。在新建工具箱中新建脚本,将以上代码文件导入,并添加工程地图工作空间,导出图像分辨率,输出地图格式参数作为本脚本的第一参数(工作空间)、第二参数(地图分辨率)和第三参数(地图格式)。至此,完成批量制图脚本工具制作。

2.6 批量输出

在ArcMap或ArcCatalog找到批量出图工具箱中的批量出图脚本工具,分别选择第一参数工作空间(地图文档存储目录),输入地图分辨率,选择地图输出格式,点击确定便可完成地图的批量输出(如图3所示)。

图3 批量出图工具示意图

3 结论

本文论述了基于ArcGIS数据驱动制图模块结合ArcPy批量输出地图的过程,通过数据驱动模块分类制图与ArcPy编程批量导图,实现了制图工作自动化、流程化处理,避免了常规方法烦琐的操作步骤,大大提高了地理数据处理效率,可以实现自动化批量地图出图。基于批量制图研究,本次实现以下创新。

(1)基于ArcMap的数据驱动制图方便快捷,易于上手,完全避免了按项目数据分割及图层整饰等传统制图流程。

(2)克服了ArcMap不能批量按工程要求的地图格式输出单张基于数据驱动地图册地图的缺陷,也避免了统一导出PDF后再统一转成其他格式所遇到的制图要素丢失及大量图名修改问题,既快又好地实现了批量按“工程名称+专题图名”导出符合工程要求的地图。

(3)脚本工具操作简单方便,适用于不同层次的工作人员。代码复制载入工具箱脚本即可实现基于地图驱动的批量出图,出图的制图分辨率实现手动灵活输入。输出图片格式可由用户按工作要求自由选择,可用于一切基于地图驱动批量制图的批量出图。通用性较强,适用于一切基于ArcGIS数据驱动制图的相关格式的图件批量输出。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!