#author("2022-06-24T16:34:40+09:00","default:Miyashita","Miyashita")
#author("2022-06-27T14:21:30+09:00","default:Miyashita","Miyashita")
*GMT Library Wrapper [#h60e4ad1]
Julia の中で GMT が使える.詳しくは [[GMT.jl>https://github.com/GenericMappingTools/GMT.jl]] へ.~
基本的に
#codeprettify(lang-julia){{
# julia
usnig GMT: GMT
GMT.gmt("foobar")
}}
は
#codeprettify{{
# shell (bashなど)
gmt foobar
}}
と同じ.~
GMT.jl を使う前に,GMT のライブラリが参照できるように startup.jl でパスを通すか LD_LIBRARY_PATH で参照可能になっている必要がある.~
これについては [[startup>../startup]] に記載.~
~
~

** libgdal, libgeos 関連のプレコンパイルエラー [#lfa7f056]
ある時から GMT に libgdal, libgeos に関連するエラーが出るようになった.
#codeprettify(lang-julia){{
ERROR: LoadError: failed processes:
  Process(`ldd /raid/miyashita/local_gnu/src/gmt-6.1.1/lib64/libgmt.so`, ProcessExited(1)) [1]
  Process(`grep libgdal`, ProcessExited(1)) [1]
}}
どうパスを設定しても,libgmt.so の中に libgdal と libgeos の依存関係が関連付けされていないと,エラーを返すようになっている.~
GMT をソースからインストールして使っている人は,インストール時に必ず geos と gdal を有効にしてインストールしないといけない.~
~
~


**出力ファイル [#m457d354]
GMT.jl v0.9.0 時点.~
bash 上では
#codeprettify{{
# shell
gmt pscoast -JX12/6 -Rg -Ggray -P > foobar.ps
}}
のように出力ファイルの名前を明示しないといけないが,Julia の中では,
#codeprettify(lang-julia){{
# julia
GMT.coast(J="X12/6", R="g", G=:gray)
}}
のように,ファイル名を書かなくてもPostScriptファイルに記述される.~
この場合,描いた図がどこにあるかというと,
#codeprettify(lang-julia){{
# julia
GMT.fname_out(Dict(),false)
("/tmp/GMTjl_tmp.ps", "", "ps", true, true)
}}
の一つ目の戻り値 "/tmp/GMTjl_tmp.ps" にある.
確認段階ではこのファイルを見ればOK.~
描画コマンドの後のキーワード引数に show=true (show=1) を入れることで,このファイルを実行すると同時に表示できる.
#codeprettify(lang-julia){{
GMT.coast(J="X12/6", R="g", G=:gray, show=true)
}}
~
ファイルとして出力したい場合は
#codeprettify(lang-julia){{
GMT.coast(J="X12/6", R="g", G=:gray, savefig="tmp.ps")
}}
で保存するファイル名を指定するか,
#codeprettify(lang-julia){{
GMT.coast(J="X12/6", R="g", G=:gray, fmt="EPS")
}}
のように保存形式を指定してコピーする.~
~
~

**軸ラベルやタイトルにスペース挿入 [#w708f80c]
B オプションを使って GMT のシンタックス通りに軸ラベルを入れようとすると
#codeprettify(lang-julia){{
GMT.basemap(J="X10", R="0/10/0/10", B="xaf+l\"x (m)\"  yaf+l\"y (m)\" neSW")
}}
となるが,これだと x と (m) の間にある空白をうまく処理してくれない.~
GMT.jl では,B オプションに軸ラベルやタイトルは入れずにキーワード引数 xlabel, ylabel を使うとよい.
#codeprettify(lang-julia){{
GMT.basemap(J="X10", R="0/10/0/10", B="af neSW", xlabel="x (m)", ylabel="y (m)")
}}

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