内容摘要:Geoist软件集成了多个功能模块,要想灵活地使用和扩展它,并应用它来处理地球科学问题,首先要知道它的体系结构。因此,今天介绍一下使用Geoist之前,应该知道那些事情。
1、Geoist的结构
Geoist软件包集成的模块是以路径形式组织,共包含10个文件夹。按照功能划分,每个文件夹内部的程序通常用于解决一类问题。下面简单介绍一下:
- catalog 文件夹:地震目录分析相关的程序
- flex 文件夹:估算岩石圈有效弹性厚度的程序
- gravity 文件夹:重力平差相关的程序
- gridder 文件夹:离散数据网格化相关程序
- magmod 文件夹:地磁模型解算相关程序
- inversion 文件夹: 地球物理反演求解算法程序
- pfm 文件夹:位场数据处理和模型反演程序
- snoopy 文件夹:时间序列数据处理和异常检测程序
- vis 文件夹:可视化相关程序
- others 文件夹: 数据管理等辅助功能程序
在了解上述文件夹下面集成的程序功能类别后,大家可以根据自己的需要进行选择和扩展。需要注意的是,有时候为了解决一个问题,往往需要多个目录下的程序相互辅助才能完成,因此,不同目录下的程序之间可能是有相互依赖关系的,不建议直接删除不需要的模块/路径来使用Geoist(这样做极有可能会出现错误)。
2、Geoist的工作路径
任何程序或软件在运行过程中,都需要进行数据交换(远程和本地,内存和磁盘),因此需要本地路径暂存数据。Geoist为方便管理,提供了统一的工作路径。用户只需要调用统一的命令就可以使用系统路径,不依赖于操作系统。这样做的好处是避免程序中出现本地路径,给移植造成不必要的麻烦(因为你的代码copy给其他人,但是他的电脑上没有你的路径)。
用法示例如下:
import geoist
print(geoist.USER_DATA_PATH)
print(geoist.TEMP_PATH)
print(geoist.DATA_PATH)
print(geoist.EXAMPLES_PATH)
运行结果(Print的信息)如图1所示。
图1 Win10下获取的工作路径地址3、数据获取功能
在地球物理数据处理和计算之前,通常需要获取远程的数据,可能是一个URL地址,或者Restful的API形式。Geoist软件包在others的目录下提供了fetch_data.py程序,实现了这些功能(当然您也可以根据实际情况扩展它)。
- API形式:一些API地址有时候不容易记忆,以USGS的地震目录为例,用户不必记住具体地址和参数,通过usgs_catalog函数就可以实现了,下面代码usgsfile变量是下载后本地的存储文件名。
from geoist.others.fetch_data import usgs_catalog
usgsfile = 'usgsca.csv'
localpath2 = usgs_catalog(usgsfile, '1970-01-01', '2020-01-01', '15','55','70','135',minmag = '5')
print(localpath2)
运行结果(Print的信息如下)
C:\Users\chens\AppData\Local\geoist\geoist\data\usgsca.csv
- URL形式:也可以是一个指定的URL地址,下面是从内网的服务器地址下载一个地震目录文件的方法。当然,任何支持下载的URL都可以复用该函数。
import geoist.others.fetch_data as data
from geoist.others.fetch_data import _retrieve_file as downloadurl
url = data.ispec_catalog_url
print(url)
filename = '2020-03-25CENC-M4.7.dat'
localpath = downloadurl(url+filename, filename)
print(localpath)
运行结果(Print的信息如下)
http://10.2.14.222/catalog/
C:\Users\chens\AppData\Local\geoist\geoist\data\2020-03-25CENC-M4.7.dat
小哥推荐使用git仓库来存放示例数据,这样无论您的程序部署到哪里,都不需要依赖太多的本地环境,而且还不必要因为数据文件太大,而影响程序下载和安装效率。
3、Geoist的日志服务
Python提供了强大的日志功能,Geoist对其进行了二次封装。在安装Geoist软件后,会在本地的USER_DATA_PATH路径下,会产生一个geoist.log的文本文件,里面会记录用户期望记录的日志内容。无论是您使用geoist,还是在geoist模块中,当期望记录程序使用或模块被调用时的输出信息,都可以调用geoist的log函数实现,目前,该函数提供info,debug,error三种类别的日志。方法如下:
import geoist
geoist.log.info('info message')
geoist.log.debug('debug message')
geoist.log.error('error message')
如果您已经安装geoist,可以找到本地USER_DATA_PATH下的日志文件,类似图2所示。是不是什么时间用过geoist,使用那些模块信息都一目了然了呢!
日志是程序运行出现错误,排查问题和定位bug的重要手段,用好日志信息可以事半功倍呦!
图2 打开geoist.log后的信息ps:有了这个log文件,再结合前面小哥介绍的云端部署和ES检索等技术,是不是又可以扩展了。如:用ELK提供的filebeat工具+这些log信息,是不是妥妥好搭档
一句话总结:今天内容比较简单,算是给屏幕前,期望使用Geoist软件包的用户们的一点入门知识(毕竟Geoist是开源软件,还没钱雇佣专业文档写手和测试人员完善该软件,现阶段全靠口口相传吧)。后续我们还将继续介绍geoist之中已经集成和测试好的各种实用功能,想让小哥多写点哪方面的功能用法,可以在下面留言啊!
网友评论