时间:2024-09-03
任俊儒
(华北地质勘查局五一四地质大队,河北 承德 067000)
随着市场环境的进一步完善,经济的高速发展,地质勘查工作也变得丰富起来,从矿藏、石油到地热、矿泉水,地质勘查项目涉及的内容越来越广泛。近年来提出了“城市地质调查”的概念,将传统的地质勘查与城市的可持续发展相结合,进行基础性、综合性、前瞻性的地质勘查工作,对城市的环境承载力、资源保障力进行评价、同时也为城市规划、建设以及管理决策提供基础数据支持。正是由于地质勘查类项目的多样化、细致化,内容进一步丰富详尽,致使各类的地质勘查专题地图的编辑、修饰、输出等工作量显著增加。
传统的制图方式,是以单幅图纸为作业单位,逐个进行处理,需要较大的人力与物力来保障工作的顺利开展。地质勘查专题地图的制作主要分为要素编辑、整饰、输出、打印等步骤。本文结合实际工作项目,对各步骤进行分析,针对制图的输出方式进行探索,并结合Arcpy等相关功能,实现了专题图的批量生成。本文将相关的技术方法进行总结、整理,为减少人工处理、提高制图效率、实现专题图批量生成等方面提供参考经验。
(1)数据准备。专题地图编制的数据准备主要包括栅格数据和矢量数据的准备。栅格数据一般为遥感影像,作为底图使用;矢量数据包括基本地形、地物、专题要素等。首先将需要的各类数据进行收集,并且注明各类数据的基本情况,例如影像分辨率、坐标系、数据生产时间等,以备后续的处理和编辑工作有所依据。
(2)数据编辑。数据的编辑分为多个步骤,首先是数据格式的转换,在收集的数据中可能存在DWG、SHP、WP、WL、WT、HDF等不同格式的数据,为了制图统一化,需要将格式进行统一。其次是进行坐标转换,在工作当中会遇到北京54、西安80、CGCS2000等不同的坐标系,一方面为了制图的统一,另一方面遵循测绘地理信息行业的要求,需将数据统一转为CGCS2000坐标系。再次是数据的符号化,按照规范要求添加行政界线、道路网、居民点、水系、等高线、高程点等,另外是专题要素的符号化,例如地质类型、水源地、钻孔、矿山采区分布等。第四是地图注记,主要是对各类数据符号化的补充说明,例如村庄、道路、水系的名称,高程值注记、专题内容的注记等。
(3)图框编辑。图框的编辑,主要包括图纸的大小、内外图框、比例尺、指北针、图名、格网点坐标、坐标系、作业单位信息等。一般采用50cm×50cm的图纸,按照分幅要求对制图区域进行分割。在制图过程中图框的要求是统一的,主要的问题是处于接边处的符号、注记等内容可能会丢失,不能在每幅图纸上正确显示,所以要进行检查、修改。
(4)地图输出。地图的输出是指地理文档在完成数据编辑、图框编辑之后输出为图纸的过程。地图的输出之前都是纸质的,但随着技术的发展,纸质图纸的利用率降低,现在的地图输出一般指电子图纸,例如矢量图、栅格图片等。如果需要纸质图纸可以直接利用打印设备或者绘图仪将电子地图纸质化,重要的一点是确保电子地图能够达到栅格采样分辨率要求[1]。
地质勘查专题图的制作一般都是采用CAD单幅图纸编辑,在图形绘制过程中比较方便,但是在数据处理、注记添加、图框编辑等方面都比较繁琐,逐个进行编辑使工作量增大,工作内容重复,错误率提升。在地图编辑过程中我们采用了ArcGIS软件,提高数据处理以及图框编辑的工作效率。
除图纸编辑之外最为耗时耗工的是图纸的输出工作,结合现阶段项目的具体要求,以提供栅格电子地图为主,例如JPG格式的电子地图或者地图册。利用CAD进行电子地图输出,工作效率较低,而且是反复的机械操作,为了能够快速、便捷、批量地完成专题图的输出工作,借助ArcGIS的脚本语言Python,对批量制图技术中各工序编写批处理脚本来实现[2]。
Arcpy是Python语言的站点包,其在ArcGIS for Desktop环境下,通过编写脚本的方式高效完成地理数据分析、转换、管理以及地图自动化等功能。
Python是一种跨平台的最初设计为编写自动化脚本的计算机程序语言,其结合了解释性、互动性、编译性和面向对象等特点。该语言定位是“优雅”、“明确”、“简单”,简单来讲Python语言是通过调用不同的站点包来实现功能的,因此Python语言又称为胶水语言。
基于Python语言的特点,ArcGIS选择其为脚本语言,自9.0版本开始就集成了python语言包。Arcpy主要包含数据访问、地理分析、自动化制图等模块,数据访问模块主要是实现各版本数据编辑的调用,包括矢量以及属性域等;地理分析模块主要是实现空间分析和运行、网络分析工具、地统计分析等功能;自动化制图模块主要是实现操作mxd、扩展数据驱动、自动导出PDF和打印等功能。
数据整理是将收集到的数据经过格式转换、统一坐标系等操作之后统一放置在一个数据集中。本文是将数据整理到文件地理数据库(.gdb)中,也可以整理到个人地理数据库(.mdb)中,将数据按照类型进行分类,并依据属性将数据符号化。在ArcMap中添加添加整张影像底图,根据tfw文件对影像进行配置。至此各类图形要素均可显示,然后将行政界线、交通网、水系等,以及专题要素按照特定的符号显示出来。
图形的输出一般采用50cm×50cm分幅,采用的纸张为620mm的卷纸,在输出图件之前要设置参数,ArcMap界面下打开“页面和打印设置”,选择自定义纸张,长宽均为62cm;布局视图下的数据框的大小设置为55cm,位置居中;然后在图框范围内插入指北针、比例尺、图名、坐标系、作业单位等信息。
数据驱动页面是根据特定的图层将图纸输出为PDF格式的图集。本例中地质勘查专题图以标准分幅格式进行输出,比例尺为1:10000,选择结合图表作为数据驱动页面的“索引图层”,以该数据层的Text字段(图幅号)作为“名称字段”和“排序字段”。另一个参数是“范围”,依据本例的比例尺和图纸数据框设置,地图范围选“最佳大小”,边距“大小为250m,指定使用地图单位”。
参数设置完成之后,选择“导出地图”,设置分辨率等,由于数据驱动页面只有在输出PDF格式时使用,所以选择保存格式为PDF,“页面”选项中可以确定输出的范围以及保存的格式是单个PDF数据集还是多个PDF文件。
图件输出为PDF格式并不能满足工程项目的需求,最为实用的是将图纸输出为JPG格式,并按图幅号命名。在后续的工作中可以通过坐标值按照图幅号进行索引查找,而且可以在没有专业软件的情况下打开图件查询相关信息。
利用Arcpy进行脚本程序编写即可实现上述相关内容,相关代码如下:
图1 脚本程序编写代码
利用Python语言编写脚本,首先“import”引入arcpy和os,利用“arcpy.mapping.MapDocument”确定工作空间,并用“CURRENT”参数确定当前文档为工作空间;定义一个图层“JHTBWC”作为数据驱动页面图层;使用“range”确定图件的页码“pageNum”的取值范围,将页码值赋值给数字驱动页面;使用“arcpy.UpdateCursor”依据结合图表图层迭代更新游标“cursor”,通过循环遍历每个图件;最后使用“arcpy.mapping.ExportToJPEG”批量输出JPG格式的图件,通过设置该函数的参数,可以确定输出路径、输出图件的名称、图件的分辨率。在实际操作中,首先打开编辑好的mxd地理文档,将Python程序代码复制到Python窗口下,运行即可得到相应结果。
本文依托地质勘查专题图的制作,通过对制图流程的分析,发现在制图过程中,尤其是电子图输出方面存在自动化不够的情况,为了能够提高工作效率引入了Arcpy,具体的说是利用ArcGIS的脚本语言Python进行编程,使用Arcpy站点包中的相关函数来实现图件的批量输出。
实现数据批量处理主要是解决两个关键问题,一是遍历所有要处理的数据;二是将遍历后的结果用一种数据结构(如数组、链表等)存储起来[3]。本文仅是结合Arcpy对图纸的批量生成进行了分析和探索,为快速制图提供了实践经验。Arcpy不仅应用于制图,在GIS数据处理中也有广泛的应用。Python语言的应用使地理信息工作避免了重复操作,提高了工作效率,也为GIS行业的发展提供了新的方向和切入点。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!