推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

基于Python的“地理处理”并行方案

更新时间:2019-12-24 19:54:38 大小:1M 上传用户:songhuahua查看TA发布的资源 标签:python 下载积分:1分 评价赚积分 (如何评价?) 打赏 收藏 评论(0) 举报

资料介绍

在传统方式下,ArcGIS地理处理工具的执行过程不能充分利用高性能多核计算机的全部运算能力处理日益增加的地理数据,导致数据处理效率低下。本文在分析地理处理工具特点的基础上,充分利用Python语言的并行编程特点,构建具有通用性的地理处理任务并行运行解决方案。结合ArcGIS软件自身的特质,有效解决了并行运行所带来的数据竞争、数据共享与进程通讯等问题,达到了一定硬件环境条件下ArcGIS工具执行效率最大化的目的。通过典型地理处理任务中不同运行方式效率的对比测试与分析,证明了并行运行的有效性。


部分文件列表

文件名 大小
基于Python的“地理处理”并行方案.pdf 1M

【关注B站账户领20积分】

部分页面预览

(完整内容请下载后查看)
第24卷 第6期  
2017年12月  
地理信息世界  
GEOMATICS WORLD  
2017.12  
Vol.24  No.6  
引文格式:杨霄翼. 基于Python的地理并行处理方案[J].地理信息世界,2017,24(6):117-121.  
基于Python的“地理处理”并行方案  
杨霄翼  
(国家测绘地理信息局ꢀ第三地理信息制图院,四川ꢀ成都ꢀ610100)  
作者简介:  
【摘要】在传统方式下,ArcGIS地理处理工具的执行过程不能充分利用高性能多核计算机的全部运算能力处  
理日益增加的地理数据,导致数据处理效率低下。本文在分析地理处理工具特点的基础上,充分利用Python  
语言的并行编程特点,构建具有通用性的地理处理任务并行运行解决方案。结合ArcGIS软件自身的特质,有  
效解决了并行运行所带来的数据竞争、数据共享与进程通讯等问题,达到了一定硬件环境条件下ArcGIS工具  
执行效率最大化的目的。通过典型地理处理任务中不同运行方式效率的对比测试与分析,证明了并行运行的  
有效性。  
杨霄翼(1986-),男,  
四川成都人,工程师,硕  
士,主要从事地理信息系  
统应用与优化工作。  
E-mail:  
【关键词】地理处理工具;并行;arcpy;Python  
收稿日期:2017-08-01  
【中图分类号】TP3ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ【文献标识码】Aꢀꢀꢀꢀꢀ  
【文章编号】1672-1586(2017)06-0117-05  
Parallel Geoprocessing Execution Scheme Based on Python  
YANG Xiaoyi  
(The Third Geoinformation Mapping Institute of National Administration of Surveying, Mapping and  
Geoinformation of China, Chengdu 610100, China)  
Abstract: The traditional executive mode of ArcGIS geoprocessing tool could not make full use of the computing power  
of current HPC, which caused the inefficiency in GIS data processing. In this paper, a general scheme, which was powered  
by the Python parallel programming technology was built to use the whole computing power based on the analysis of GP  
tool. With the solution of data contention, data sharing and inter- process communication, as well as the combination with  
the trait of ArcGIS, the scheme could maximize the execution efficiency under the giving hardware condition. The contrast  
test of four executive modes in one typical geoprocessing task was carried, which validated the effectiveness of parallel  
execution scheme.  
Key words: geoprocessing tool; parallel; arcpy; Python  
即不能充分利用机能,导致数据处理效率偏低的问题愈  
发突出。并行处理是充分发挥多核CPU强大运算能力的  
0ꢀ引ꢀ言  
由美国环境系统研究所(ESRI)研发的ArcGIS系列  
平台软件中的地理处理(GP)几乎包含了地理处理的  
全部核心功能和工具模块,是软件的精华所在,也是  
其被广泛应用的原因之一[1]。为实现高效执行地理数据  
分析、数据转换、数据管理和地图自动化创建等GP功  
能,ESRI构建了基于Python编程语言的Arcpy站点包,ꢀ  
Python通过Arcpy调用全部的GP工具[2],已在多个领域  
有效途径,因此实现GP的并行化执行,不仅能延续其既  
有优势,还能实现一定硬件环境条件下地理数据处理效  
率的最大化,具有十分广阔的应用价值。  
1ꢀGP工具  
1.1 GP工具特点分析  
GP工具作为ESRI所打造的GIS平台的核心组成部分,  
因其全面性、专业性和易用性,在诸多与地理空间科学  
有交集的学术和工程领域得到应用。工具的使用方式包  
含了常规的ArcToolBox访问[1]、ModelBuilder可视化编程  
方式[7],以及Arcpy独立模块访问方式[8]。但这3种方式均  
无法自动利用计算机全部的运算能力,只因待执行的多  
个GP工具任务将会以“串行”的方式逐个执行,这是导  
得到广泛推广与应用[3-6]  
随着一个城市、一个国家乃至全球地理空间数据  
的综合处理需求日益增加,待处理的时空数据量呈现  
爆发性增长,为此装配多核CPU以及高速存储设备的高  
性能计算机(HPC)在GIS领域被广泛采用。而常规方式  
下,利用Arcpy调用GP处理空间数据时,CPU不能满载,  
技术应用  
地理信息世界  
GEOMATICS WORLD  
118  
第24卷  
致迭代型地理处理任务的执行过程只利用了单核心运算能  
力,进而影响执行效率的根本原因。Python是一种模块化  
设计的,具有简洁和高可读性语法的高级编程语言[9],且  
支持多种方式的并行编程[10],Arcpy站点包的访问方式在  
Python语言的框架内实现了GP工具调用的高度灵活性,  
也为GP工具并行运行提供了可能。  
a类工具的特点表现为,输入数据被GP工具直接修  
改,无新的文件类数据输出,如定义空间参考、字段  
计算工具等;b、c、d均有异于输入文件的成果数据输  
出,b中的输入输出端均为单一文件,如构建栅格金字  
塔、投影变换等;c和d分别在输入端和输出端存在多种  
数据文件的情况,常见于合并和分割类GP工具。当一个  
GP工具并行运行时,其所属类型从整体看会有不同。如  
裁切工具本属于b类,但若多个裁切结果需要放入同一  
个工作空间,则应归为c类。  
1.2 GP工具运行机制  
利用Arcpy调用GP工具可分为函数方式和工具箱别  
名方式,两者没有本质的区别,通常使用函数式[11]  
函数以GP工具命名,参数在函数被调用时直接传递,若  
GP工具执行完毕,函数将返回Result对象,执行中断则  
会抛出异常。  
2ꢀGP工具的Python并行实现方案  
基于Python语言的并行编程技术发展至今,形成了  
5种模式,分别是:异步编程模式、分布式并行模式、  
GPU并行模式、基于多线程的并行模式和基于多进程的并  
行模式[10]。其中,异步编程模式适用于因复杂任务中的  
子任务争夺运算资源,而需要在程序运行期间协调CPU使  
用权的情况;分布式并行模式应用于集群运算;GPU并行  
模式则应用于图形及科学运算[10]。因此,“多线程”和  
“多进程”是GP工具并行运行的主要实现方式。  
GP工具的执行默认为串行机制,用户只能通过改变  
相关的隐含参数,如默认工作空间、矢量数XY分辨率  
和容差、处理范围等环境变量的方式干预执行过程,起  
决定性作用的是非隐含输入参数和输入数据。其中,前  
者是指数值或字符串变量,后者指文件类数据,即地理  
处理任务直接相关的数据文件。因此,根据数据文件在  
单个GP工具执行前后的存在方式,可以将其分为以下四  
类,如图1所示。  
线程是程序执行的最小单位,而进程包含至少一  
个线程,是资源管理的最小单位,多线程之间共享内存  
资源,通信相对容易,且生成新线程的开销远小于新进  
[12]。但是由于Python语言使用了全局解释锁(Globalꢀ  
Interpretorꢀ Lock,GIL)[12],导致CPU在同一进程的同  
一时刻只会执行一个线程。当前GP工具默认的串行执行  
方式不能充分利用CPU运算能力,故希望并行状态下,  
能让多个工具分别利用CPU的多个核心,实现运算能力  
的最大化利用,因此“多进程”模式才能满足需求。  
目前,被ArcGIS产品所支持的Python语言版本为  
2.7或3.4,其标准库中,以multiprocessing模块为  
基础,可将待并行运行的代码以函数形式传递给进程  
对象,从而实现“多进程”编程。对进程总数的动态  
控制方式分为进程池控制和逐个控制2种,前者通过  
multiprocessing模块中的Pool对象实现:在开始并行  
时,给定进程数量的最大值,整个并行过程,每个进程  
动态地获取任务,适用于待并行的函数代码,此处即为  
GP工具,具有唯一性的情形;后者需要利用Process对  
象:在开始并行前,配置不同GP工具信息列表,并为不  
同工具分别启动进程,且该进程在执行一次后结束生命  
a “单”进“不”出  
a 'Single' input 'No' output  
b “单”进“单”出  
b 'Single' input 'Single' output  
c “多”进“单”出  
c 'Multiple' input 'Single' output  
d “单”进“多”出  
d 'Single' input 'Multiple' output  
1GP工具分类  
Fig.1 Classification of GP tools  
技术应用  

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载