#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]]


Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes