#author("2018-07-04T15:17:35+09:00","default:Miyashita","Miyashita") *JuliaでGMTを使う (GMT-Julia API) [#q6ea462c] **はじめに [#wf413fbb] デバイス自体にGMTが入っていれば,JuliaでGMTのコマンドそのまま使える.~ 実行が可能なことを確認した環境は,Julia 0.6.3, GMT5.4.3, Ubuntu16.04LTS. まずはパッケージを追加する. # GMT.jlの追加 Pkg.add("GMT") # バージョン確認 Pkg.status("GMT") - GMT 0.3.0 #author("2018-07-04T17:35:22+09:00","default:Miyashita","Miyashita") **使い方 [#d33dcbc6] import GMT でGMTパッケージを使えるようにしておく.~ ここではGMT moduleを使用していることがわかりやすいように,usingではなくimportとする.~ Juliaの中でGMTを使うにはいくつかの方法がある.pscoastを例にすると, GMT.gmt(pscoast ... > foobar.ps) GMT.coast(options,show=1) GMT.coast(J=foo,R=bar,B=hoge,W=1,show=1) のような感じ.以下にそれぞれについて示す. ***GMTのスクリプトをそのまま使用 [#bc2e3b3e] GMT.gmt("")の中にスクリプトをそのまま打ち込むだけ.最も単純. GMT.gmt("pscoast -JM12 -R120/135/30/45 -Bafg -W1 -P > foobar.ps") この場合,システムのスクリプトを実行する run(`gmt pscoast -JM12 -R120/135/30/45 -Bafg -W1 -P > foobar.ps`) と大差ない. ***GMT moduleの関数を使用 [#fc8a90f3] pscoastは,このJuliaのmoduleの中ではcoastとなる. GMT.coast("-JM12 -R120/135/30/45 -Bafg -W1 -P",show=1) オプションを最初の引数に文字列として入れる.~ show=1をつけることで,ウィンドウが表示され,出力結果が確認できる.~ //入力ファイルを必要とするコマンド(例えばxyz2grd)ような場合は // G = GMT.surface("-I1 -Rhoge", [x y z]) # gmt xyz2grd ... と同じ //のように,オプションの文字列の後に変数を入れる.~ //この戻り値Gは,Juliaの中で引き継いで使用できる. //G = GMT.surface("-I1 -Rhoge", [x y z]) // GMT.grdview(options,G,show=1) ***関数のキーワード引数を使ってオプションを設定する [#qa8c13f6] オプションは,それぞれキーワード引数として使用できる性質を持っている. GMT.coast(J="M12",R="120/135/30/45",B="afg",W="1",show=1) キーワードのJやRはそれぞれproj,regionなどのエイリアスを持ち,proj=...でもOK.~ この時点で確認したバージョンでは,互換がうまくできていないオプションもあった.~ GMTのオプションと,このAPIで使うキーワード,エイリアスについては[[GMT.jl - latest>https://genericmappingtools.github.io/GMT.jl/latest/]]を参照. 通常のGMTのコマンドとは逆に,P=1を指定してしまうと用紙の向きがPortraitでなくなってしまうので注意. 上の2つの表記法は,重複して設定しなければ共存しても問題ない. GMT.coast("-JM12 -Bafg",R="120/135/30/45",W="1",show=1) これらの使用例は,[[GMT.jl - Some examples>https://genericmappingtools.github.io/GMT.jl/latest/examples/]]にある. **図はどこに保存されるか [#t28a3da1] GMT.gmt()の方法以外は,Linuxの場合は /tmp/GMTjl_tmp.ps に作成され,showオプションではこれを表示させているらしい. **参考 [#fe9c3840] -[[GMT/Julia API>http://gmt.soest.hawaii.edu/projects/gmt-julia-api/wiki]] -[[GMT.jl - GitHub>https://github.com/GenericMappingTools/GMT.jl]]