#author("2020-05-24T14:01:06+09:00","default:Miyashita","Miyashita")
#author("2020-05-24T14:02:32+09:00","default:Miyashita","Miyashita")
*GMT -J オプション [#q288969a]
#contents
**はじめに [#jac8759d]
共通オプション -J は projection を指し,描画をするコマンドには必須のオプション.~
図の種類,形状,スケールがこのオプションによって決定される.
J の次に必ずアルファベット1〜2文字が入り,描く図法の種類を表している.~

**projection指定子の大文字・小文字の違い [#d57d020d]
J に続く英字で描く図法が決まるが,その英字が大文字か小文字かで,スケールの決定方法が異なる.~
メルカトル図法を例にすると,おおよそ下記のような書き方がある.
- -JM<width>
- -Jm1:<scale>
- -Jm</degree>

ここで,<width> は出力する図の幅,<scale> は比,</degree> は1度あたりの幅を示す.~
大文字 M は <width> インチなどの出力サイズを指定する方法,~
小文字 m は実スケールとの比を指定する(出力される紙面にとっては相対的な)方法である.~
この原則は -J オプションのその他(メルカトル図法を表す M, m 以外)も同様である.~
~
それぞれの使用例と出力結果は下記の通り.~
このページ3つの画像の表示サイズを統一しているが,実際の出力サイズは若干異なる.
#codeprettify(lang-bash){{
#!/bin/bash
}}

#codeprettify(lang-bash){{
# output file
output="JM.ps"
# options
proj=M16
region=125/150/25/50
axes="-Ba5f5g5 -B+t-JM<wid>,-R125/50/25/50"
# GMT5
gmt pscoast -J$proj -R$region $axes -W -P -V > $output
}}

#codeprettify(lang-bash){{
# output file
output="Jmratio.ps"
# options
proj=m1:2.5e7
region=125/150/25/50
axes="-Ba5f5g5 -B+t-Jm1:2.5e7,-R125/150/25/50"
# GMT5
gmt pscoast -J$proj -R$region $axes -W -P > $output
}}

#codeprettify(lang-bash){{
# output file
output="Jmperdeg.ps"
# options
proj=m0.5
region=125/150/25/50
axes="-Ba5f5g5 -B+t-Jm0.5,-R125/150/25/50"
# GMT5
gmt pscoast -J$proj -R$region $axes -W -P > $output
}}

&ref(https://main-t-miyashita.ssl-lolipop.jp/hydrocoast/image/GMT/JM.png,352x452);   
&ref(https://main-t-miyashita.ssl-lolipop.jp/hydrocoast/image/GMT/Jmratio.png,352x452);   
&ref(https://main-t-miyashita.ssl-lolipop.jp/hydrocoast/image/GMT/Jmperdeg.png,352x452);
~

** projection, 各図法の記述例 [#d78dd727]
以降では,projection ごとに pscoast または psbasemap を用いてそれぞれ描いてみる.~
描ける図法の種類が多いので,一部に限定する.~
また,煩雑さを避けるため大文字,-J<uppercase> で統一し,小文字の-J<lowercase> の標記はしない.~
図法によってオプション -R や -B も変更する必要があるが,ここではなるべく -J に着目し,他のオプション説明は最低限とした.~
~

**-JM, Mercator, メルカトル図法 [#ufe55c9a]
見慣れたメルカトル図法.記法は下記の通り.~
- -JM<width>
- -JM<lon0>/<width>
- -JM<lon0>/<lat0>/<width>

#codeprettify(lang-bash){{
# output file
output="JM.ps"
# options
proj=M16
region=125/150/25/50
axes="-Ba5f5g5 -B+t-JM<wid>,-R125/50/25/50"
# GMT5
gmt pscoast -J$proj -R$region $axes -W -P -V > $output
}}

#ref(https://main-t-miyashita.ssl-lolipop.jp/hydrocoast/image/GMT/JM.png,352x452)
~

**-JB, Albers conic equal area projection [#e1384514]
Conic projection の一つ.
- -JB<lon0>/<lat0>/<lat1>/<lat2>/<width>

ここで,<lat1>,<lat2> は Alberts projection の two standard pallalels に相当する.~
参考: [[Wikipedia>https://en.wikipedia.org/wiki/Albers_projection]]

#codeprettify(lang-bash){{
# output file
output="JB.ps"
# options
proj=B135/35/30/45/16
region=120/150/25/50
axes="-Ba5f5g5 -B+t-JB135/35/30/45/<wid>,-R120/150/25/50"
# GMT5
gmt pscoast -J$proj -R$region $axes -W -P -V > $output
}}

#ref(https://main-t-miyashita.ssl-lolipop.jp/hydrocoast/image/GMT/JB.png,422x452)
~


**-JU, UTM, ユニバーサル横メルカトル図法 [#j529cb9a]
数値計算でよく UTM 座標を用いるため.計算結果に対して -JU で描くと変な隙間が出にくい.
- -JU<zone>/<width>

ここで,<zone> は UTM のゾーン(1〜60の整数).

#codeprettify(lang-bash){{
# output file
output="JU.ps"
# options
proj=U53/16
region=125/150/25/50
axes="-Ba5f5g5 -B+t-JU53/<wid>,-R125/150/25/50"
# GMT5
gmt pscoast -J$proj -R$region $axes -W -P -V > $output
}}

#ref(https://main-t-miyashita.ssl-lolipop.jp/hydrocoast/image/GMT/JU.png,422x490)
~


**-JC, Cylindrical projection, 円筒図法 [#hc899061]
UTM に似ている.UTM でいう zone の基準点がないので,<lon0>,<lat0> で指定する.
- -JC<lon0>/<lat0>/<width>

#codeprettify(lang-bash){{
# output file
output="JC.ps"
# options
proj=C135/35/16
region=125/150/25/50
axes="-Ba5f5g5 -B+t-JC135/35/<wid>,-R125/150/25/50"
# GMT5
gmt pscoast -J$proj -R$region $axes -W -P -V > $output
}}

#ref(https://main-t-miyashita.ssl-lolipop.jp/hydrocoast/image/GMT/JC.png,422x490)
~


**-JA, Lambert Azimuthal projection, ランベルト正積方位図法 [#u5524ebb]
正距方位図法.図の特性上,描ける最大範囲は半球.~
ランベルト図法.図の特性上,描ける最大範囲は半球.~
オプション -R の標記が上記のタイプの指定方法と異なるので注意.~
- -JA<lon0>/<lat0>/<width> -Rg
- -JA<lon0>/<lat0>/<width> -R<lonSW>/<latSW>/<lonNE>/<latNE>r

Rgは<lon0>,<lat0> を中心とする半球を描く.~
"-R<...>r" は南西,北東の端を指定する.最後の【r】をつけ忘れないように… ~
g も r も付けず,R<lonmin>/<lonmax>/<latmin>/<latmax> のようにメルカトルなどと同様に設定した場合は無視され,全てRgとして扱われる.

#codeprettify(lang-bash){{
# output file
output="JARg.ps"
# options
proj=A135/35/16
region=g
axes="-Ba15f15g15 -B+t-JA135/35/<wid>,-Rg"
# GMT5
gmt pscoast -J$proj -R$region $axes -W -P -V > $output
}}

#codeprettify(lang-bash){{
# output file
output="JARr.ps"
# options
proj=A120/30/16
region=90/5/180/65r
axes="-Ba15f15g15 -B+t-JA120/30/<wid>,-R90/5/180/65r"
# GMT5
gmt pscoast -J$proj -R$region $axes -W -P -V > $output
}}

&ref(https://main-t-miyashita.ssl-lolipop.jp/hydrocoast/image/GMT/JARg.png,380x423);
&ref(https://main-t-miyashita.ssl-lolipop.jp/hydrocoast/image/GMT/JARr.png,423x527);
~
~

**-JG, Azimuthal orthographic projection, 正射図法 [#db017b34]
地球表面を正射影して描かれる地図.オプションの表記方法は -JA に近い.~
- -JG<lon0>/<lat0>/<width> -Rg

さらに詳細な指定もできるが,ここでは省略.
#codeprettify(lang-bash){{
# output file
output="JG.ps"
# options
proj=G135/35/16
region=g
axes="-Bf30g30 -B+t-JG135/35/<wid>,-Rg"
# GMT5
gmt pscoast -J$proj -R$region $axes -W -P -V > $output
}}

&ref(https://main-t-miyashita.ssl-lolipop.jp/hydrocoast/image/GMT/JG.png,474x529);
~
~


**-JX, Non-geographical projection (linear) [#s1cb788c]
地図でない X-Y 座標には -JX を使う.
- -JX<width>
- -JX<width>/<height> 

JX<width> の場合は,<height> は <width> と同じ値.~
範囲指定 -R も基本的には -JM などの場合と同じ.

#codeprettify(lang-bash){{
# output file
output="JXw.ps"
# options
proj=X16
region=0/100/0/50
axes="-Bxa20g20 -By10g10 -BSWne+t-JX<wid>,-R0/100/0/50"
# GMT5
gmt psbasemap -J$proj -R$region $axes -P -V > $output
}}

#codeprettify(lang-bash){{
# output file
output="JXwh.ps"
# options
proj=X16/8
region=0/100/0/50
axes="-Bxa20g20 -By10g10 -BSWne+t-JX<wid>/<hei>,-R0/100/0/50"
# GMT5
gmt psbasemap -J$proj -R$region $axes -P -V > $output
}}

&ref(https://main-t-miyashita.ssl-lolipop.jp/hydrocoast/image/GMT/JXw.png,405x423);
&ref(https://main-t-miyashita.ssl-lolipop.jp/hydrocoast/image/GMT/JXwh.png,405x235);
~
~

**-JXl, Non-geographical projection (log-log, semilog), 両対数,片対数図 [#t0e79218]
対数軸にしたい場合は,横軸なら <width> の後に,縦軸なら <height> の後にlを付す.
- -JX<width>l/<height>  : 片対数 X
- -JX<width>/<height>l  : 片対数 Y
- -JX<width>l/<height>l : 両対数

ここでは B オプションに記述する数値の意味が他と異なる点に注意.~
a, f, g の値が大きいほど間隔が短くなる.p をつけることで 10^n 表記になる.
#codeprettify(lang-bash){{
# output file
output="JXl.ps"
# options
proj=X16l/8
egion=1e0/1e5/0/50
axes="-Bxa1pg3p -By10g10 -BSWne+t-JX<wid>l/<hei>,-R1e0/1e5/0/50"
# GMT5
gmt psbasemap -J$proj -R$region $axes -P -V > $output
}}

&ref(https://main-t-miyashita.ssl-lolipop.jp/hydrocoast/image/GMT/JXl.png,505x296);
~
~

**-JX,-JZ, Non-geographical projection (3-dimensional) [#p9ee70a4]
3D図は,-JX と -JZ で2回 J オプションを使う.
- -JX<width> -JZ<height>
- -JX<width>/<length> -JZ<height>

ここで,<length> は水平平面で <width> と垂直な方向の長さ.~
回転すると入力した素直な(?)長さにならないので,最終的に出力される幅,高さは角度から幾何的に計算する必要がある.

#codeprettify(lang-bash){{
# output file
output="JXJZ.ps"
# options
proj=X10
projZ=Z10
pers=-120/25
region=0/10/0/10/0/10
axes="-Bxa2g2 -Bya2g2 -Bza2f2 -BSWZ+b+t-JX<wid>,-JZ<hei>,-R0/10/0/10/0/10"
# GMT5
gmt psbasemap -J$proj -J$projZ -R$region $axes -p$pers -P -V > $output
}}

&ref(https://main-t-miyashita.ssl-lolipop.jp/hydrocoast/image/GMT/JXJZ.png,438x477);
~
~


**-JX, -Rd or -Rg, 地球全体図 [#m9a91360]
メルカトル図法 -JM では,R オプションで極の -90,90 を含めることはできず,エラーになる.~
JX の projection で,地球全体を描く方法がある.-Rg または -Rd とすることで,地球全体を描くことができる.
- -JX<width> -Rd
- -JX<width> -Rd<lonmin>/<lonmax>/<latmin>/<latmax>
- -JX<width> -Rg
- -JX<width> -Rg<lonmin>/<lonmax>/<latmin>/<latmax>

経度方向の中心は,Rd で本初子午線,Rg で日付変更線になる.~
それ以外の経度を中心にしたい場合は -R で中心に来るように <lonmin>/<lonmax> を設定する.

#codeprettify(lang-bash){{
# output file
output="JXRd.ps"
# options
proj=X16/8
region=d
axes="-Bxa60f60g60 -Bya30f30g30 -B+t-JX<wid>/<hei>,-Rd"
# GMT5
gmt pscoast -J$proj -R$region $axes -W -P -V > $output
}}
#codeprettify(lang-bash){{
# output file
output="JXRg.ps"
# options
proj=X16/8
region=g-45/315/-90/90
axes="-Bxa60f60g60 -Bya30f30g30 -B+t-JX<wid>/<hei>,-Rg-45/315/-90/90"
# GMT5
gmt pscoast -J$proj -R$region $axes -W -P -V > $output
}}

#ref(https://main-t-miyashita.ssl-lolipop.jp/hydrocoast/image/GMT/JXRd.png,543x311)~
~
#ref(https://main-t-miyashita.ssl-lolipop.jp/hydrocoast/image/GMT/JXRg.png,543x311)
~

**-JKf, -JKs, Eckert projection, エケルト図法 [#s2c7a506]
地球全体図を描くのに向いていると思われる図法.
- -JKf<lon0>/<width> :エケルト第4図法
- -JKs<lon0>/<width> :エケルト第6図法

lon0 は経度方向の中心である.緯度の annotations を入れる場合は,緯度 -90 と 90 のラベルが埋もれるので,表示されないように範囲を調整する.

#codeprettify(lang-bash){{
# output file
output="JKf.ps"
# options
proj=Kf180/16
region=d0/360/-89/89
axes="-Bxa60f60g60 -Ba30f30g30 -B+t-JKf180/<wid>,-Rd0/360/-89/89"
# GMT5
gmt pscoast -J$proj -R$region $axes -W -P -V > $output
}}

#codeprettify(lang-bash){{
# output file
output="JKs.ps"
# options
proj=Ks180/16
region=d0/360/-89/89
axes="-Bxa60f60g60 -Bya30f30g30 -B+t-JKs180/<wid>,-Rd0/360/-89/89"
# GMT5
gmt pscoast -J$proj -R$region $axes -W -P -V > $output
}}

&ref(https://main-t-miyashita.ssl-lolipop.jp/hydrocoast/image/GMT/JKf.png,460x277);
&ref(https://main-t-miyashita.ssl-lolipop.jp/hydrocoast/image/GMT/JKs.png,460x277);
~

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