GMT4 → GMT5¶
GMT5相對於GMT4有很多功能上的更新以及語法上的改進。最大的變化在於,GMT5中所有GMT命令必須以 gmt 開頭。
GMT4中使用 psbasemap 命令繪製底圖、使用 pscoast 繪製海岸線。 psbasemap 和 pscoast 都是GMT4提供的命令,每個命令均對應一個可執行文件。GMT4總共提供了上百個命令,這帶來一個命名空間污染(namespace pollution)的問題。即不同的軟體提供了相同名字的命令,導致不同命令之間出現衝突,使得用戶難以確認自己執行的 pscoast 命令是由GMT提供的還是其它軟體包提供的。
爲了解決這個問題,GMT5對源碼做了大量改寫。GMT5中只提供 gmt 這一個命令/可執行文件。GMT4中的所有命令在GMT5中都變成了 gmt 命令的模塊。所有模塊都以 gmt module options 的形式進行調用。例如,GMT4中的命令 psbasemap 在GMT5中應寫爲 gmt psbasemap。
因而,將GMT4腳本遷移到GMT5下,只需要遵循如下步驟:
- 將所有GMT4命令前加上 gmt,即 psbasemap 改成 gmt psbasemap
- 保存並執行腳本。若出現報錯,則找到最早的報錯信息並查詢當前GMT版本對應的文件,檢查是否語法存在變化,並進一步更正。
GMT提供了腳本 gmt5syntax,可以自動在GMT4命令前加上 gmt,該腳本位於
GMT的 share/tools
目錄下。該腳本的使用方法也很簡單:
gmt5syntax old_script.sh > new_script.sh
如果不願意修改原腳本,GMT還爲舊命令提供了軟鏈接,使得依然可以直接使用 psbasemap 等命令,但極其不推薦這一方法。爲舊命令生成軟鏈接有多種方法,用戶可任選其一即可:
如果你是自行編譯GMT源碼並安裝,則可以在
cmake/ConfigUser.cmake
中加上set (GMT_INSTALL_MODULE_LINKS TRUE)
再進行編譯安裝對於已經安裝GMT的用戶,可以執行:
$(gmt --show-sharedir)/tools/gmt_links.sh create
該腳本會自動爲所有舊命令創建軟鏈接。
對於Bash用戶,可以直接在Bash腳本、終端或者Bash配置文件中加入如下語句:
source $(gmt --show-sharedir)/tools/gmt_functions.sh
該腳本會爲所有舊命令構建一個等效的bash函數。
對於csh用戶,可以直接在csh腳本、終端或者csh配置文件中加入如下語句:
source `gmt --show-sharedir`/tools/gmt_aliases.csh
該腳本會爲所有舊命令構建一個等效的csh別名。