內(nèi)容摘要:Geoist軟件集成了多個(gè)功能模塊,要想靈活地使用和擴(kuò)展它,并應(yīng)用它來(lái)處理地球科學(xué)問(wèn)題,首先要知道它的體系結(jié)構(gòu)。因此,今天介紹一下使用Geoist之前,應(yīng)該知道那些事情。
1、Geoist的結(jié)構(gòu)
Geoist軟件包集成的模塊是以路徑形式組織,共包含10個(gè)文件夾。按照功能劃分,每個(gè)文件夾內(nèi)部的程序通常用于解決一類問(wèn)題。下面簡(jiǎn)單介紹一下:
- catalog 文件夾:地震目錄分析相關(guān)的程序
- flex 文件夾:估算巖石圈有效彈性厚度的程序
- gravity 文件夾:重力平差相關(guān)的程序
- gridder 文件夾:離散數(shù)據(jù)網(wǎng)格化相關(guān)程序
- magmod 文件夾:地磁模型解算相關(guān)程序
- inversion 文件夾: 地球物理反演求解算法程序
- pfm 文件夾:位場(chǎng)數(shù)據(jù)處理和模型反演程序
- snoopy 文件夾:時(shí)間序列數(shù)據(jù)處理和異常檢測(cè)程序
- vis 文件夾:可視化相關(guān)程序
- others 文件夾: 數(shù)據(jù)管理等輔助功能程序
在了解上述文件夾下面集成的程序功能類別后,大家可以根據(jù)自己的需要進(jìn)行選擇和擴(kuò)展。需要注意的是,有時(shí)候?yàn)榱私鉀Q一個(gè)問(wèn)題,往往需要多個(gè)目錄下的程序相互輔助才能完成,因此,不同目錄下的程序之間可能是有相互依賴關(guān)系的,不建議直接刪除不需要的模塊/路徑來(lái)使用Geoist(這樣做極有可能會(huì)出現(xiàn)錯(cuò)誤)。
2、Geoist的工作路徑
任何程序或軟件在運(yùn)行過(guò)程中,都需要進(jìn)行數(shù)據(jù)交換(遠(yuǎn)程和本地,內(nèi)存和磁盤),因此需要本地路徑暫存數(shù)據(jù)。Geoist為方便管理,提供了統(tǒng)一的工作路徑。用戶只需要調(diào)用統(tǒng)一的命令就可以使用系統(tǒng)路徑,不依賴于操作系統(tǒng)。這樣做的好處是避免程序中出現(xiàn)本地路徑,給移植造成不必要的麻煩(因?yàn)槟愕拇acopy給其他人,但是他的電腦上沒有你的路徑)。
用法示例如下:
import geoist
print(geoist.USER_DATA_PATH)
print(geoist.TEMP_PATH)
print(geoist.DATA_PATH)
print(geoist.EXAMPLES_PATH)
運(yùn)行結(jié)果(Print的信息)如圖1所示。

3、數(shù)據(jù)獲取功能
在地球物理數(shù)據(jù)處理和計(jì)算之前,通常需要獲取遠(yuǎn)程的數(shù)據(jù),可能是一個(gè)URL地址,或者Restful的API形式。Geoist軟件包在others的目錄下提供了fetch_data.py程序,實(shí)現(xiàn)了這些功能(當(dāng)然您也可以根據(jù)實(shí)際情況擴(kuò)展它)。
- API形式:一些API地址有時(shí)候不容易記憶,以USGS的地震目錄為例,用戶不必記住具體地址和參數(shù),通過(guò)usgs_catalog函數(shù)就可以實(shí)現(xiàn)了,下面代碼usgsfile變量是下載后本地的存儲(chǔ)文件名。
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)
運(yùn)行結(jié)果(Print的信息如下)
C:\Users\chens\AppData\Local\geoist\geoist\data\usgsca.csv
- URL形式:也可以是一個(gè)指定的URL地址,下面是從內(nèi)網(wǎng)的服務(wù)器地址下載一個(gè)地震目錄文件的方法。當(dāng)然,任何支持下載的URL都可以復(fù)用該函數(shù)。
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)
運(yùn)行結(jié)果(Print的信息如下)
http://10.2.14.222/catalog/
C:\Users\chens\AppData\Local\geoist\geoist\data\2020-03-25CENC-M4.7.dat
小哥推薦使用git倉(cāng)庫(kù)來(lái)存放示例數(shù)據(jù),這樣無(wú)論您的程序部署到哪里,都不需要依賴太多的本地環(huán)境,而且還不必要因?yàn)閿?shù)據(jù)文件太大,而影響程序下載和安裝效率。
3、Geoist的日志服務(wù)
Python提供了強(qiáng)大的日志功能,Geoist對(duì)其進(jìn)行了二次封裝。在安裝Geoist軟件后,會(huì)在本地的USER_DATA_PATH路徑下,會(huì)產(chǎn)生一個(gè)geoist.log的文本文件,里面會(huì)記錄用戶期望記錄的日志內(nèi)容。無(wú)論是您使用geoist,還是在geoist模塊中,當(dāng)期望記錄程序使用或模塊被調(diào)用時(shí)的輸出信息,都可以調(diào)用geoist的log函數(shù)實(shí)現(xiàn),目前,該函數(shù)提供info,debug,error三種類別的日志。方法如下:
import geoist
geoist.log.info('info message')
geoist.log.debug('debug message')
geoist.log.error('error message')
如果您已經(jīng)安裝geoist,可以找到本地USER_DATA_PATH下的日志文件,類似圖2所示。是不是什么時(shí)間用過(guò)geoist,使用那些模塊信息都一目了然了呢!
日志是程序運(yùn)行出現(xiàn)錯(cuò)誤,排查問(wèn)題和定位bug的重要手段,用好日志信息可以事半功倍呦!

ps:有了這個(gè)log文件,再結(jié)合前面小哥介紹的云端部署和ES檢索等技術(shù),是不是又可以擴(kuò)展了。如:用ELK提供的filebeat工具+這些log信息,是不是妥妥好搭檔
一句話總結(jié):今天內(nèi)容比較簡(jiǎn)單,算是給屏幕前,期望使用Geoist軟件包的用戶們的一點(diǎn)入門知識(shí)(畢竟Geoist是開源軟件,還沒錢雇傭?qū)I(yè)文檔寫手和測(cè)試人員完善該軟件,現(xiàn)階段全靠口口相傳吧)。后續(xù)我們還將繼續(xù)介紹geoist之中已經(jīng)集成和測(cè)試好的各種實(shí)用功能,想讓小哥多寫點(diǎn)哪方面的功能用法,可以在下面留言?。?/p>