应用Python在组件式GIS中集成地质统计学
——以Python和SuperMap Object进行趋势面分析为例
马维峰 李林 王晓蕊
摘 要:随着GIS应用在地学应用领域的拓展和加深,有必要为GIS工具引入和整合地质统计学等分析工具。应用COM组件技术和Python及其科学计算扩展模块SciPy可以迅速高效的开发出具有COM接口的地质统计学分析模块,并整合到组件式GIS工具中。
关键词:地质统计学,趋势面,SuperMap Object,组件式GIS,Python,SciPy
1. 引言
地质统计学是数学地质领域中一门发展迅速且应用广泛的新兴学科,广泛应用在异常评价、找矿勘探、矿体圈定、储量计算等地学生产和科研等领域(赵鹏大,1994,侯景儒1996,1998)。趋势分析或趋势面分析,作为地质统计学中的一种,就是要把研究的地质现象进行分解,表示为数学方程为:
Z = Z0 + A + R (1)
Z代表地质现象,Z0代表区域性因素(背景),A代表局部性因素(异常),R表示随机因素(干扰值)。地学研究中,问题往往都归结为寻找区域上的异常值的问题。趋势面分析的方法为将地学信息的某个指标或某些指标的综合表示为一个空间曲面,然后人工根据数学方法构造一个曲面代表区域性因素(背景值),同时应用统计方法消除随机因素,以达到突出和圈定异常值的目的(於崇文,1980,赵旭东,1992)。
传统的地质统计学分析或趋势面分析是应用地学专业软件包或其他具有回归分析能力的数学、统计学软件包来进行的,然后结合地图等工具进行空间和区域上的解释。目前,随着GIS在地学实际工作和研究工作中的引入,在很多结合地质统计学的地学研究中也引入了GIS方法和工具,但现有GIS工具并不支持地质统计学分析,因此空间信息和指标在必须在GIS工具和地质统计学工具之间相互导入导出,影响和限制了工作效率的提高,造成了不必要的数据信息精度的损失,有时甚至由于数据文件格式的封闭性,造成工作不能开展或中断。
随着GIS应用在地学应用领域的拓展和加深,为GIS工具引入和整合地质统计学等分析工具势在必行,因此有必要开展地质统计学和GIS整合技术和方法的研究。本文将以趋势面分析为例,探讨应用COM组件技术和Python及其科学计算扩展模块SciPy开发地质统计学分析工具的方法,以及如何在组件式GIS工具中整合地质统计学扩展模块。
2. 地质统计学与GIS工具的集成方式
目前在GIS基础软件与空间分析模型和地学模型常用的集成方式主要有以下几种(宋关福,1998,方裕,2001,冯克忠,2003): (1)通过数据文件在GIS平台软件和空间分析模型或地学模型之间建立联系,属于松散集成方式。其优势是GIS平台的开发和空间分析模型的开发都可以独立进行,只要遵循一致的数据交换格式就可以进行;其缺点是通过文件方式交换数据,不适合大量且频繁的数据交换的情况;(2)直接使用GIS软件提供的二次开发语言编制应用分析模型,例如Mapinfo,Arcinfo都有其二次开发语言。这种方式在开发一些小系统时比较合适,但由于GIS所提供的二次开发语言大都相对简单,难以开发相对复杂的分析模型;(3)基于组件技术的扩展方式。组件技术的促进了组件式地理信息系统的产生,大大简化了GIS整合空间分析模型或地学模型的难度。基于组件的接口调用方式,一方面保证了GIS系统开发和分析模型开发之间的独立性,另一方面又实现了二者的无缝集成。因此可以基于组件技术,在组件式地理信息系统中,如ArcGIS 8.0及以上版本、SuperMap Object等的开发或扩展中,为GIS工具引入和整合地质统计学分析工具。
作为动态脚本语言的Python具有语法简单,易于学习,解释性、无需编译,易于部署和维护等优点,与直接使用静态编程语言C、C++、VB等语言相比,使用Python开发效率更高,开发和维护难度较低,作为系统扩展和快速开发语言具有一般静态编程语言不具有的优势(Hammond,2000,Lutz,2001,http://www.python.org);另一方面,Python具有高层的内建数据结构,优秀的科学计算扩展库SciPy(包括科学计算、统计分析、可视化等模块,http://www.scipy.org),因此在ArcGIS、SuperMap Object等基于COM的组件式地理信息系统平台中,可以通过Python来实现和整合地质统计学分析工具。