郑辉
(河南大学民生学院,河南 开封 475004)
ZHENG Hui
(Henan University Minsheng College,Kaifeng475004,China)
Python语言诞生于20世纪80年代末,它是一种简单易学,功能强大的编程语言;还是一种开源、免费软件,用户在使用时不用担心版权问题;它有高效率的高层数据结构,简单而有效地实现面向对象编程。Python简洁的语法和对动态输入的支持,再加上解释性语言的本质,使得它在大多数平台上的许多领域都是一个理想的脚本语言,并用在不同的领域[1]。
随着大数据时代的到来,生活信息化程度越来越高,许多传统的信息处理方式已经远远满足不了当代人的需求。特别是在地学领域的研究中,地理空间数据的处理经常需要借助相应的软件或者工具。在大量的地理数据中,地理空间数据较其他矢量数据更具有丰富的空间属性信息,将其不同数据通过裁切、融合、叠加以及其他复杂手段后会得到包含更多空间信息的地理数据。但在正常的操作过程中,一般借助ArcGIS软件对地理空间数据进行简单的重复性操作,复杂性的数据处理通常是借助构造函数或相应软件进行的,这样机械性的操作不仅会大大影响数据的处理过程,另外,在重复性操作的过程中不可避免引进的数据误差也会大幅度增加,极大地影响了工作效率和数据处理的灵活性与易用性[2]。
Python语言自被ArcGIS 9.0引入应用以来,凭借着批量处理、操作简单、入门快、效率高、可跨平台且植入性高、稳定成熟等众多优点迅速跻身于地理空间数据处理中,为其工作提供了无限的便利。目前,ESRI公司已完全将Python纳入ArcGIS中,并将其视为可满足用户需求的语言,再加上Python是免费使用的,因此Python软件所面对的用户面十分宽广,若合理使用则会节省大量数据处理时间,提高工作效率[3]。本文主要通过将重复性操作的数据处理与Python批处理进行对照,对人们的生产生活具有一定的现实意义。
地理空间数据处理是在一定的要求下,借助ArcGIS软件将不同的地理数据按其空间关系进行相应的几何操作,最终使得处理后的结果在其属性表上显示相应的信息,以此达到具体实践的目的。而对于多量重复性质的空间数据处理方法,常用的有以下三种方式:针对实际需求,通过ArcToolbox中的数百个处理工具进行处理;借助ArcGIS软件中自带的批处理Batch工具进行处理;借助Python脚本语言对数据进行具体实现。
①ArcToolbox处理。ArcGIS软件提供一系列地理数据处理的方法,并将其集成于一套工具箱之中,可以根据具体的应用利用ArcToolbox简单的可视化引导界面完成项目任务。
②Batch批处理。虽然ArcToolbox提供了几百个灵活领用的工具,但其每次只能处理一个数据。如果几十个数据,则需要重复工作。而工具中的批量处理(Batch)可以实现多个数据到几十个数据的批量处理,可以通过添加多个数据完成项目任务。
③Python批处理。Batch批处理功能虽能解决多数据的问题,但处理多数据时需要手动加入几十个数据,并需要对输出文件进行命名。这样对成千上万,甚至几十百万个地理数据操作,Batch功能依然无法满足,而Python灵活的脚本语言可以很好地解决这些难题。
本实例以实际测量土地范围为例,项目中野外测量获取不同地块的特征点位。而用户需要获取地块的长度(线图层)和面积(面图层)信息,如图1所示,图中黑色三角点为野外实际测量的关键点。
图1 地理空间数据(点、线、面)
案例中使用ArcGIS中的Toolbox与python语言进行对点图层转换成线图层进行比较分析。Python在执行时,首先会将.py文件中的源代码编译成Python的byte code(字节码),然后再由Python Virtual Machine(Python虚拟机)来执行这些编译好的byte code。Python的Virtual Machine是一种更高级的Virtual Machine。与 Java或.NET相比,Python的 Virtual Machine距离真实机器的距离更远。或者可以这么说,Python的Virtual Machine是一种抽象层次更高的Virtual Machine。实验结果显示随着数据量的不断增加及人员疲惫的出现,通过ArcGIS中的Toolbox单个处理数据的时间会呈现指数趋势的增长,而通过Python脚本语言与Toolbox单个处理相比较,随着数据的增加其节省时间越来越多。
研究中利用Python语言处理大量的地理空间数据的转换,通过编写脚本程序可以极大地提高地理空间数据的处理速度,简化手工操作的步骤,对于大批量流程作业将大幅提高工作效率。案例中仅对比分析简单的点图层转换成线图层的时效性,今后将进一步研究面的转换及叠加分析等复杂的分析,进一步探讨Python语言在地理空间数据处理中的优越性、时效性。
同时,通过该案例实验更进一步证明Python语言也很容易学习,非常适合作为非计算机相关专业的计算机程序设计入门语言,特别是对需要处理大量地理空间数据的地理学相关专业。开设Python语言课程,可以作为一种用于学校教学辅助软件的开发工具,提高工作效率。