利用ArcPy实现地震应急专题图的多进程生产
2019-01-10杨玉永徐秀杰董翔
杨玉永 徐秀杰 董翔
【摘 要】为了解决在震后初期地震应急专题图在生产中所面临着的专题内容多、幅面种类多、时间十分紧迫等问题。在地震应急专题图自动化生产系统的基础上,充分挖掘和利用服务器的CPU等物理资源,进而利用ArcPy进行了多进程生产模式的设计开发。经实验对比,生产具有相同分辨率和幅面数量的专题图,相较传统模式而言,多进程模式将生产时间由原先的1308秒缩减至377秒,效能提升约347%。在实际应用中,脚本化的程序即拷即用,让功能部署变得更加简单便捷。应急专题图的标准化、产品化、生产效能均得大幅提升,地震应急信息化服务水平得到显著进步。
【关键字】ArcGIS;Python;多进程;专题图;地震应急
中图分类号: P631.4文献标识码: A文章编号: 2095-2457(2019)36-0004-003
DOI:10.19694/j.cnki.issn2095-2457.2019.36.002
Using ArcPy to Realize Multiprocess Production of Earthquake Emergency Thematic Map
YANG Yu-yong XU Xiu-jie DONG Xiang*
(Shandong Earthquake Agency, Jinan Shandong 250014, China)
【Abstract】In order to solve the problems of the earthquake emergency thematic map within so many topics, kinds and urgent time in the early post-earthquake period. On the basis of automatic production system of earthquake emergency thematic map, the multiprocess production mode is designed and developed by using ArcPy, which makes full use of physical resources such as CPU of server. Compared with the traditional mode, the multiprocess mode reduces the production time from 1308 seconds to 377 seconds and improves the efficiency by about 347%. In practical applications, scripts are used to make function deployment easier and more convenient. The standardization, production and production efficiency of emergency thematic maps have been greatly improved, and the level of earthquake emergency information service has been significantly improved.
【Key words】ArcGIS; Python; Multiprocess; Thematic Map; Earthquake Emergency
1 地震应急专题图生产现状
为提高地震应急专题图的制图标准和产出流程,提升地震应急指挥的工作效率与服务水平,中国地震局编制并印发了《破坏性地震应急专题地图产出流程与制作规范(试行)》,对专题类别、制图要素以及图幅整饰等方面提出了标准化的指导意见。《规范》指出,在震后的3个(第一时段0~1小时、第二時段2~3小时)小时内,应须产出地震影响估计范围、震中与主要城市距离,以及人口、经济、交通、重点目标等共计22类36幅专题图产品,幅面涵盖A0、A1、A3或更大尺寸。然而,传统专题图在制作方法上,数据选取、图面注记、图例设置等方面存在着作业量大、重复性高、自动化程度低、效率低等问题。
诸多学者针对专题图自动生产方面展开研究,并取得了一定的成果。谭庆全[1]按照数据专题建立了多级预存储地图切片,实现了无需GIS接口或类库支持下的专题图离线生产。该系统需占用较大存储空间,而且由于使用离线数据,对于数据的现势性有待商榷。席楠[2]基于ArcEngine与XML设计开发了地震应急灾情动态专题图快速生成系统。系统对图层内容、比例尺规则、符号标注规则等构建了制图要素处理规则库,解决了地图符号表达与空间一致性协调处理的技术难题。但是在图件生产耗时方面不甚理想,在获取地震数据后约需30分钟才可生产完毕。刘军[3]利用Python开发了震后专题图件快速成图软件。用户输入震中经纬度、震级,并根据地震影响范围自定义图片的输出范围,从而实现专题图件的快速产出。该软件人工干预因素较大。陈文凯[4]、魏艳旭[5]、郑川[6]等也都基于地理信息系统软件及其组件,研发了地震应急专题图的快速产出软件。可见,在提高地震应急专题图标准化、专业化,以及生产效能的道路上,应急从业人员始终做着长期不懈的努力。
2 专题图多进程生产设计
目前,在地震应急行业中广泛使用的地理信息系统平台是来自ESRI公司的ArcGIS。ArcGIS不仅仅是一款桌面级的地理信息系统软件,同时也为用户提供了ArcEngine、ArcObject,以及ArcGIS Server等跨桌面和服务器的组件式开发环境。Python作为目前最为流行的编程语言之一,当然也被嵌入了ArcGIS之中,即ArcPy。ArcPy能够以高效的工作方式来执行对地理空间数据的分析、转换、管理等地图编辑处理与几何操作。这为实现应急专题图的自动化批量生产提供了可能。
2.1 设计思想
图1 系统流程图
目前,基于ArcPy已经初步实现了地震应急专题图的自动化生产。系统主要存在三个环节:一是抽取地震影响场数据;二是遍历制图模板获取图层信息;三是将每个生产过程进行堆栈逐一排队完成。因此,整套专题图生产完成需要耗费较多时间。在实际生产过程中,A0、A1等大幅面图件的生产占用计算机硬件资源的需求量较大,耗时较长,对队列中后续图件的生产将造成较大影响。这种堆栈式的生产流程显然无法满足地震应急紧迫性的工作需求。为此,拟依托具备多进程计算能力的计算机硬件支持,将每一个图幅的生产过程分配给计算机上一个单独的处理器,实现多进程并发计算。将过去的“纵队”变成现在的“横队”,使文件之间的处理操作互不影响,从而保证专题图生产效率得到大幅提升。
2.2 多进程服务的实现与编码
在利用ArcPy对多个制图模板文件执行并发操作之前需要首先创建进程池(Pool)。Pool的作用是可以为用户提供指定数量的进程以供系统调用。当有新的操作请求提交到Pool中时,如果进程池还没有满载,则创建一个新的进程来执行该请求;如果池中的进程数已经达到规定的最大值,那么该请求就会继续等待,直到池中某个进程结束后,才会重新创建新的进程来满足对它的操作。在使用进程池时,采用异步非阻塞的pool.apply_async()函数。该函数的优点在于无须等待当前进程中的操作执行完毕,随时可以根据系统的调度切换进程。最后当全部的子进程均运行完毕后,再切换回至主进程执行剩余部分。具体实现代码如下:
同时,在系统的Python脚本中,为用户提供了对进程池中进程数processMax变量值的自定义功能,即地震应急专题图生产可分配多少个进程完全可以由用户自定义。其在实际工作中的使用意义在于,用户可以根据服务器上运行业务的负载情况,对地震应急专题图的生产进行动态调配,从而保证服务器硬件负载合理、均衡。
3 生产效能分析
在相同计算机硬件配置条件下(CPU E5-2420 2.2G 8核、内存16G、硬盘SSD),分别利用单进程与多进程两种模式生产具有相同分辨率(300dpi)和幅面数量(1幅A0、12幅A1、23幅A3)的专题图,对二者的生产效能进行对比分析。如图2所示。
试验证明,与传统的单进程模式相比较而言,在计算机硬件资源消耗方面,内存由9.5G左右提升至11G左右、CPU占用率由21%左右提升至91%左右,服务器负载有较大程度的增加,表明硬件资源得到较为充分的利用;在专题图生产耗时方面,多进程的生产模式将图件的生产时间由原先1308秒缩减至377秒,效能提升了约347%。
4 结论
地震应急专题图的制作是个繁琐的作业过程,利用ArcPy实现了批量化的自動生产,同时,设计并实现了多进程生产的方法。将原先堆栈式冗繁的制图任务进行了分解,凭借具备多核心CPU的计算机硬件支持,将传统制图过程的“纵队”变为“横队”,实现了任务操作的并行化,较大程度的缩减了专题图生产的耗时,生产效率得到大幅度提高。随着更高性能计算机硬件和云计算的快速发展,势必将地震应急专题图的服务水平推向新台阶。
【参考文献】
[1]谭庆全.地震应急专题图离线生成技术研究与应用[J].城市与减灾,2017(1):53-58.
[2]席楠,杨天青,姜立新.基于制图规则的地震应急灾情动态专题图快速生成系统研究与应用[J].中国科技成果,2016,17(3):46-48.
[3]刘军,宋立军,孙甲宁,等.新疆地市地震应急信息平台研究与应用[J].内陆地震,2015,29(3):268-273.
[4]陈文凯,孙艳萍,周中红,等.甘肃省地震应急专题图的设计与实现[J].地震工程学报,2015,37(3):884-889.
[5]魏艳旭,贾军鹏,杨凡,等.河北省地震应急专题图模板化及快速出图技术研究[J].国际地震动态,2016(6):20-25.
[6]郑川,曹彦波,李敏,等.云南地震应急专题图模板设计与本地化软件集成应用[J].华南地震,2016,36(4):71-77.