mapproject − 2 次元座標のフォワード及びインバースの図法変換 |
mapproject infiles −Jparameters −Rwest/east/south/north[r] [ −Ab|B|f|Flon0/lat0 ] [ −C[dx/dy] ] [ −Dc|i|m|p ] [ −E[datum] ] [ −F[k|m|n|i|c|p] ] [ −G[x0/y0][/unit] ] [ −H[i][nrec] ] [ −I ] [ −Lline.xy[/unit] ] [ −M[i|o][flag] ] [ −Q[d|e] [ −S ] [ −T[h]from[/to] ] [ −V ] [ −:[i|o] ] [ −b[i|o][s|S|d|D][ncol] ] [ −f[i|o]colinfo ] |
mapproject は(経度, 緯度)の位置を infiles
[又は標準入力]から読んで、指 定した図法及びスケールを用いて
(x,y) 座標を計算する。随意で、インバース 変換により (x,y)
の位置を読んで(経度, 緯度)の値を計算することもできる。
これは図法が分かっている地図を数値化することにより得られた線形の
(x,y) の
点を地理座標に変換するのに使える。また、測線に沿って固定点までの距離
、又は直線までの最短経路を計算することもできる。そして、様々な基準面
の 変 換に使うこともできる。最初の 2 列には(経度、緯度)又は
(x,y) が入って いる必要があるが、この 2
列の後に追加のデータフィールドを設けることもで きる。
(緯度、経度)のファイルを読む方法については −:
オプションを参照す ること。 |
infiles |
変 換されるデータファイル。与えられないときは、標準入力を読み込 む。 |
−J |
地図の図法を選択する。以下の文字により図法を決定する。大 文 字 のときはスケールとして与えられた数値は地図の幅(軸の長さ)とし て解釈され、そうでないときは地図のスケールになる(それぞれの図法 に 対する定義を参照すること)。単位(UNIT)はcm、インチ、mのいずれ かで、 .gmtdefaults4 で設定された MEASURE_UNIT に依存する が 、 c, i, m を scale/width の値に付けることによって、コマンドライン 上で上書き変更することができる。代わりに地図の高さ、最大の大 き さ 、最小の大きさを指定するには、それぞれ h, +, - を width に付 けること [デフォルトは w (幅)]。 |
地図投影で用いられている回転楕円体は、ホームディレクトリにあ
る .gmtdefaults4
ファイルを編集することにより、ユーザ定義とするこ
とができる。共通で用いられる 63 種類の回転楕円体と球体が現在
サ ポ
ートされており、またユーザは独自の回転楕円体のパラメータを設
定することも可能である。 (詳細は gmtdefaults の man を参照す
る こと)。 GMT のデフォルトは WGS-84
である。いくつかの GMT パラメ ータは投影結果に 影 響 を 及
ぼ す 。 ELLIPSOID, INTERPOLANT,
MAP_SCALE_FACTOR, MEASURE_UNIT 詳細は
gmtdefaults の man ページ を参照すること。 |
円筒図法: |
−Jclon0/lat0/scale 又は −JClon0/lat0/width (カッシーニ図法)。 |
投影中心とスケールを与えること( 1:xxxx 又は UNIT/度 )。 |
−Jclon0/lat0/scale 又は −JClon0/lat0/width (カッシーニ図法)。 |
投影中心とスケールを与えること( 1:xxxx 又は UNIT/度 )。 |
−Jjlon0/scale 又は −JJlon0/width (ミラー円筒図法)。 |
中 心子午線とスケールを与えること( 1:xxxx 又は UNIT/度 ) 。 |
−Jmparameters (メルカトル図法 [C])。 |
次のいずれかを選ぶこと。 |
−Jmscale 又は −JMwidth |
赤道沿いのスケールを与えるこ と( 1:xxxx 又 は UNIT/度 )。 |
−Jmlon0/lat0/scale 又は −JMlon0/lat0/width |
中心子午線、標準緯度と標準緯線沿いのスケールを与 えること( 1:xxxx 又は UNIT/度 )。 |
−Joparameters (斜めメルカトル図法 [C])。 |
次のいずれかを選ぶこと。 |
−Joalon0/lat0/azimuth/scale 又 は −JOalon0/lat0/azimuth/width |
投影中心、斜め赤道の方位とスケールを設定すること 。 |
−Joblon0/lat0/lon1/lat1/scale 又 は −JOblon0/lat0/lon1/lat1/scale |
投影中心、斜め赤道上のもう一つの点とスケールを設 定すること。 |
−Joclon0/lat0/lonp/latp/scale 又 は −JOclon0/lat0/lonp/latp/scale |
投影中心、斜め投影の極とスケールを設定すること。 |
斜め赤道沿いのスケールを与えること( 1:xxxx 又は UNIT/度 ) 。 |
−Jqlon0/scale 又は −JQlon0/width (等距円筒図法 (Plate Carree) ) 。 |
中心子午線とスケールを与えること( 1:xxxx 又は UNIT/度 ) 。 |
−Jtparameters (横メルカトル図法 [C])。 |
次のいずれかを選ぶこと。 |
−Jtlon0/scale 又は −JTlon0/width |
中 心 子 午線とスケールを与えること( 1:xxxx 又は UNIT/度 )。 |
−Jtlon0/lat0/scale 又は −JTlon0/lat0/width |
投影中心とスケールを与えるこ と( 1:xxxx 又 は UNIT/度 )。 |
−Juzone/scale 又は −JUzone/width (UTM - ユニバーサル横メルカトル 図法 [C]). |
ゾ ー ン 番号 (1-60) とスケールを与えること( 1:xxxx 又は
UNIT/度 )。 |
−Jylon0/lats/scale 又は −JYlon0/lats/width (基本円筒図法 [E])。 |
中心子午線、標準緯線とスケールを与えること( 1:xxxx 又 は UNIT/度 )。標準緯線は典型的には以下のいずれかである(ただ し任意の値にすることが可能)。 |
45 - ピーターズ図法 |
方位図法: 極を除いて −Rw/e/s/n は −Rg にリセットされる。より小さな領域に対 しては −R<...>r を使うこと。 |
−Jalon0/lat0/scale 又は −JAlon0/lat0/width (ランベルト正積方位 [E])。 |
lon0/lat0 で投影中心を特定する。スケールを 1:xxxx 又は radius/lat で与えること。ここで radius は原点から斜め 緯 度 lat までの UNIT 単位の距離。 |
−Jelon0/lat0/scale 又は −JElon0/lat0/width (正距方位図法)。 |
lon0/lat0 で投影中心を特定する。スケールを 1:xxxx 又は radius/lat で与えること。ここで radius は原点から斜め 緯 度 lat までの UNIT 単位の距離。 |
−Jflon0/lat0/horizon/scale 又は −JFlon0/lat0/horizon/width (心射 図法)。 |
lon0/lat0 で投影中心を特定する。 horizon で投影中心から の最大距離を特定する(度で < 90 )。スケールを 1:xxxx 又は radius/lat で与えること。ここで radius は原点から斜め緯 度 lat までの UNIT 単位の距離。 |
−Jglon0/lat0/scale 又は −JGlon0/lat0/width (正射図法)。 |
lon0/lat0 で投影中心を特定する。スケールを 1:xxxx 又 は radius/lat で与えること。ここで radius は原点から斜め緯 度 lat までの UNIT 単位の距離。 |
−Jslon0/lat0/scale 又は −JSlon0/lat0/width (一般平射図法 [C])。 |
lon0/lat0 で投影中心を特定する。スケールを 1:xxxx (極で 正しい)又は slat/1:xxxx (標準緯線 slat で正しい) 又 は radius/lat ( radius は原点から斜め緯度 lat までの UNIT 単位の距離)で与えること。 |
円錐図法: |
−Jblon0/lat0/lat1/lat2/scale 又は −JBlon0/lat0/lat1/lat2/width ( アルベルス正積円錐図法 [E])。 |
投影中心、 2 本の標準緯線とスケールを与えること( 1:xxxx 又は UNIT/度 )。 |
−Jdlon0/lat0/lat1/lat2/scale 又は −JDlon0/lat0/lat1/lat2/width ( 正距円錐図法) |
投 影中心、 2 本の標準緯線とスケールを与えること( 1:xxxx 又は UNIT/度 )。 |
−Jllon0/lat0/lat1/lat2/scale 又は −JLlon0/lat0/lat1/lat2/width ( ランベルト正角円錐図法 [C]) |
原点、 2 本の標準緯線とこれらに沿ったスケールを与える こ と( 1:xxxx 又は UNIT/度 )。 |
様々な図法: |
−Jhlon0/scale 又は −JHlon0/width (ハンメル図法 [E])。 |
中 心子午線と赤道沿いのスケールを与えること( 1:xxxx 又は UNIT/度 )。 |
−Jilon0/scale 又 は −JIlon0/width ( 正弦曲線図法=サンソン図法 [E])。 |
中心子午線と赤道沿いのスケールを与えること( 1:xxxx 又 は UNIT/度 )。 |
−Jk[f|s]lon0/scale 又は −JK[f|s]lon0/width (エッケルト IV (f) 及 び VI (s) 図法 [E])。 |
中 心子午線と赤道沿いのスケールを与えること( 1:xxxx 又は UNIT/度 )。 |
−Jnlon0/scale 又は −JNlon0/width (ロビンソン図法)。 |
中心子午線と赤道沿いのスケールを与えること( 1:xxxx 又 は UNIT/度 )。 |
−Jrlon0/scale −JRlon0/width (ヴィンケル第 3 式図法)。 |
中 心子午線と赤道沿いのスケールを与えること( 1:xxxx 又は UNIT/度 )。 |
−Jvlon0/scale or −JVlon0/width (ファン・デア・グリンテン図法)。 |
中 心子午線と赤道沿いのスケールを与えること( 1:xxxx 又は UNIT/度 )。 |
中心子午線と赤道沿いのスケールを与えること( 1:xxxx 又は UNIT/度 )。 |
非地理的図法: |
−Jp[a]scale[/origin][r|z] 又は −JP[a]width[/origin][r|z] (極座標 (theta,r)) |
随意で a を −Jp [又は −JP ]の後に挿入すると、東から反 時 計回りの方向[デフォルト]の代わりに北から時計回りの方位を 表す。随意で度単位の /origin を付けると、角度のオフセ ッ ト[0] を表す。また r が度単位の仰角であれば r を付けるこ と( s >= 0 かつ n <= 90 である必要がある)。半径[デフォル ト]でなく高さに目盛を入れたいときは z を付けること。スケ ールを UNIT/r-unit で与えること。 |
−Jxx-scale[/y-scale] 又は −JXwidth[/height] (線形、対数、指数ス ケーリング) |
x-scale を UNIT/x-unit 単位で、 y-scale を UNIT/y-unit で 与えること。あるいは width か height を UNIT 単位で指 定すること (別々に指定しないときは y-scale=x-scale )。軸 の向きを反転させたいときは負のスケールを使うこと (例、 y ならば正が下向き)。 随 意 で x-scale, y-scale, width, height に次のいずれかを付けることができる。 |
d |
データは地理座標である(度)。 |
||
l |
スケールする前に値の log10 をとる。 |
||
ppower |
スケールする前に値の power 乗をとる。 |
||
t |
入力座標は TIME_EPOCH に対する相対時間である。 |
||
T |
入力座標は絶対時刻である。 |
デフォルトの軸の長さ( gmtdefaults 参照) は −JXh (横 置 き 用)を用いて呼び出すことができる。 −JXv (縦置き用)を使うと x 軸と y 軸の長さが入れ替わる。最初のインストール時の GMT の デ フ ォ ル ト の 単 位 は UNIT である。しかし、これは .gmtdefaults4 ファイルを編集することにより変えることが で きる (このファイルがないときは gmtdefaults を実行すれば作 られる)。 |
−R |
xmin, xmax, ymin, ymax は対象とする領域を指定する。地理的領 域 に対しては、これらの境界は西、東、南、北に対応し、小数値を含 む度又は [+-]dd:mm[:ss.xxx][W|E|S|N] のフォーマットで指定できる 。東西南北の代わりに地図座標の左下と右上を使うときは r を付ける こと。 2 つの略号 −Rg −Rd は全球領域(それぞれ経度 0/360 又 は -180/+180 と緯度 -90/+90 )を表す。暦時間座標系に対しては相対時 間(選択された TIME_EPOCH に対して相対的で、選択された TIME_UNIT を単位とする。 t を −JX|x に付けること)又は [date]T[clock] 形式 の絶対時刻(T を −JX|x に付けること)のどちらかを与えることができ る。少なくとも date と clock のどちらかが存在していなければなら ない。 T は常に必要である。 date の文字列は [-]yyyy[-mm[-dd]] ( グレゴリオ暦)又は yyyy[-Www[-d]] (ISO 週暦)の形式でなければなら ない。 clock の文字列は hh:mm:ss[.xxx] の形式でなければならない 。 区切り文字を利用する場合にはその型と位置が指定どおりでなけれ ばならない(ただし入出力と描画フォーマットは変更可能である)。 |
infile(s) |
2 列以上の入力ファイル。ファイルが与 え ら れ な い と き は 、 mapproject は標準入力から読み込む。 |
−A[f|b] |
−Af は固定点 lon/lat から各データ点への(前方の)方位角を計算する 。データ点から固定点への逆の方位角を求めるには −Ab を使うこと。 大 文字 F 又は B を使うと地理緯度から地心緯度に変換して、 (現在 の回転楕円体が球でないことを仮定して)測地線の方位角を推定する。 |
−C |
投影される座標の中心を地図の投影中心に設定する[デフォルトで は左下隅]。随意で、特定の投影領域に対する見かけの偏東距離や偏北 距離のように、投影された座標系に(から)加える(又は −I を設定した ときに差し引く)オフセットを投影された図上の単位で付けることがで きる[ 0/0 ]。オフセットをメートル単位とする −F が使われない限り 、事実上、オフセットに使われる単位は図上の距離の単 位 で あ る( MEASURE_UNIT を参照)。 |
||
−D |
一時的に MEASURE_UNIT に上書きして、代わりに c (cm), i (イ ンチ), m (メートル), 又は p (ポイント)を使う。 −F と一緒に使 う ことはできない。 |
||
−E |
地 理座標(経度,緯度,高度)から地球中心地球固定座標 (ECEF) (x,y,z) へ変換する(逆変換するには −I を追加すること)。基準面 ID (−Qd 参照)を付けるか、 ellipsoid:dx,dy,dz を与えること。ここで ellipsoid は回転楕円体 ID (−Qe 参照)又は a,1/f で与えられ る 。 datum が - か与えられないときは WGS-84 を仮定する。 |
||
−F |
1:1 のスケーリングにする。すなわち、出力(又は入力、 −I 参 照)データは実際に投影されたメートルになる。他の単位を指定するに は、 k (km), m (マイル), n (海里), i (インチ), c (cm), 又は p ( ポイント)を付けること。 −F が無いときは、出力(または入力 、 −I 参照)は MEASURE_UNIT で指定される単位になる (ただし −D 参照)。 |
||
−G |
測線に沿った距離又は −Gx0/y0 で設定された随意の点までの距離 を計算する。距離の単位を e (m), k (km), m (マイル), n (海里), d (度), c (入力座標を使ったカルテジアン座標) 又は C (投影座標を使 ったカルテジアン座標)の中から選んで付けること。最後の単位は −R 及 び −J が設定されていることを必要とする。大文字の E, K, M, N, 又は D を付けると測地学的に正確な距離を計算する方法 (現在の回転 楕 円体が球でないことを仮定して、角度の計算に地心緯度を用いて長 さの単位で距離を計算する Rudoe の方法)を使う。 |
||
−H |
入力ファイルにヘッダ行がある時に使う。 ヘ ッ ダ 行 の 数 は .gmtdefaults4 ファイルを編集することにより変更できる。このオプ ションが使われた場合、 GMT のデフォルトではヘッダ行は 1 行で あ る。入力データだけにヘッダ行が必要な場合は −Hi を使うこと [デフ ォルトでは入力データにヘッダ行があればそれも出力される]。 |
||
−I |
インバース変換を行う。すなわち、 (x,y) データから(経度、 緯 度)を取得する。 |
||
−L |
入 力 デ ー タの点からアスキーの複数セグメントのファイル line.xy で与えられた直線までの最短距離を決定する。距離と最近 接 点の座標は 3 つの新しい列として出力に付加される。距離の単位を e (m), k (km), m (マイル), n (海里), d (度), c (入力座標を使っ た カルテジアン座標) 又は C (投影座標を使ったカルテジアン座標)の中 から選んで付けること。最後の単位は −R 及び −J が設定されてい る ことを必要とする。地理座標系のデータには球近似が使われる。 |
||
−M |
複数のセグメントからなるファイルであることを意味する。セグ メントは特別な行で区切られる。アスキーファイルでは最初の文字 は flag でなければならない [デフォルトは’>’]。バイナリファイルでは 全てのフィールドが NaN で、 −b に明示的に出力する列数を設定しな け ればならない。デフォルトでは −M の設定は入力と出力の両方に適 用される。別々に設定するには −Mi 及び −Mo を使うこと。 |
||
−Q |
全ての投影パラメータをリストする。基準面だけをリストする に は 、 −Qd を使うこと。回転楕円体だけをリストするには、 −Qe を使 うこと。 |
||
−S |
領域の外側に出る点を出力しない。 |
||
−T |
from と to の間で基準面の座標変換を行う。 3 番目の入力列 に 回転楕円体上の高度があるときは −Th を使うこと [デフォルトでは高 度 = 0 すなわち回転楕円体上を仮定]。 ID (−Qd 参照)を使 う か 、 ellipsoid:dx,dy,dz を 与 え て 基 準 面を指定すること。ここで ellipsoid は回転楕円体 ID (−Qe 参照)又は a,1/f で与えられ る 。 datum が - か与えられないときは WGS-84 を仮定する。 −T は −R −J と一緒に使って座標変換前の基準面を変えることができる (逆投影 後 の 基準面変換に適用するには −I を加えること)。 ELLIPSOID の設定 が実際に正しいか確認すること。 |
||
−V |
冗長モードを選択する。標準エラー出力に経過報告を送る[デフォ ルトでは「黙って」実行する]。 |
||
−: |
入出力の(経度、緯度)と(緯度、経度)を入れ替える [デフォルト は(経度、緯度)]。 i を付けると入力のみが、 o を付けると出力のみ が入れ替わる [デフォルトでは両方入れ替わる]。 |
||
−bi |
バイナリ入力を選択する。単精度に対しては s を付けること [ デフォルトは d (倍精度)]。大文字の S (又は D) にするとバイト ス ワ ップを行う。随意で、バイナリファイルの列数がこのプログラムで 必要な列数を越えるときは、バイナリファイルの列数 ncol を付け る こと [デフォルトは 2 ]。 |
||
−bo |
バイナリ出力を選択する。単精度に対しては s を付けること [ デフォルトは d (倍精度)]。大文字の S (又は D) にするとバイト ス ワ ップを行う。随意で、バイナリ出力ファイルの必要な列数 ncol を 付けること [デフォルトは入力と同じ]。 |
||
−f |
入出力列の特殊フォーマットを使う(時間又は地 理 デ ー タ) 。 i(nput) 又は o(utput) を指定すること [デフォルトでは入力と出力 の両方]。コンマ区切りで 1 列以上(又は列の範囲)を与えること。 各 列 又 は 列 の範囲の項目に対して T (絶対暦時刻)、 t (選択された TIME_EPOCH に対する相対時間)、 x (経度)、 y (緯度)、 f ( 小 数) の いずれかを付けること。 −f[i|o]g は −f[i|o]0x,1y (地理座標)の 省略形である。 |
数値データのアスキー出力形式は .gmtdefaults4 ファイルのパラメータによっ て 決まる。緯度経度は OUTPUT_DEGREE_FORMAT に従ってフォーマットされ、一 方、他の値は D_FORMAT に従ってフォーマットされる。フォーマットの結果 と し て出力の精度が落ちて、その先の処理に影響する可能性があることに注意す ること。十分な精度で出力されていないと思ったら、バイナリ出力に変更する( も し使えるなら −bo とする)か、 D_FORMAT の設定を用いてより多くの桁数を 指定すること。 |
(経度、緯度)のファイルを 1 度 0.5cm スケールの cm 単位のメルカトルグ リ ッド上の (x,y) 座標に変換する。 mapproject lonlatfile −R20/50/12/25 −Jm0.5c > xyfile 複数の 2 列、バイナリ、倍精度の(緯度、経度)のファイルを、地図の範囲の外 側になる点を省略して、スケール = 1:500000 の横メルカトルグリッド(中心経 度 75W )上の (x,y) 座標に変換する。 mapproject tracks.* −R-80/-70/20/40 −Jt-75/1:500000 −: −S −Di −bo −bi2 > tmfile.b ファイル old.dat の地理座標系(経度,緯度,高度)を NAD27 CONUS 基準面 ( ク ラーク 1866 回転楕円体を使っている基準面 ID 131 )から WGS 84 へ変換する 。 mapproject old.dat −Th131 > new.dat 入力ファイル quakes.dat の各点と複数セグメントのア ス キ ー フ ァ イ ル coastline.xy で与えられる線分との最短距離を( km 単位で)計算する。 mapproject quakes.dat −Lcoastline.xy/k > quake_dist.dat |
−R で設定した長方形の入力範囲は一般には非長方形グリッドに投影される。 −C が設定されていない限り、このグリッドの左端点は xvalue = 0.0 で、最下 点 は yvalue = 0.0 になる。そこで、地図を数値化する前に、 mapproject に 適当なスケールを用いて範囲を超える地図の座標を変換して投影される (x,y) の 値を見ること。インバース変換を正しく行うために、数値化の際にはこれら の値を使うこと。又は代わりに、変換を実行する前に awk を使って (x,y) の 値をスケール、シフトすること。 |
ユ ーザが参照形( gmtdefaults の ELLIPSOID を参照)として楕円形を選択した 場合、 GMT は楕円公式をあれば使う。ユーザはいくつかの潜在的な落とし穴に 気づく必要がある。 (1) 横メルカトル図法、アルベルス図法、ランベルト正角 円錐図法のような一部の図法において、投影される面積が小さいときは楕円 表 現 を使い、大きな地図に対しては(適切な補助緯度を代わりに用いて)球表現に 切り替える。楕円公式が用いられるのは以下の場合である。 (a) 横メルカトル 図法: 全ての点が中心子午線から 10 度以内にあるとき。 (b) 円錐図法: 経度 の範囲が 90 度未満のとき。 (c) カッシーニ図法: 全ての点が中心子午線から 4 度以内にあるとき。 (2) 一部の過去のデータ(例えば、ある図法、ある標準 楕円体において得られた座標)を合成しようとするとき、 GMT は少し異なる 結 果 を与えることに気づくかもしれない。このミスマッチの原因としてあり得る のは、しばしば古い計算では重要でない桁を使用しているということがある 。 例えば、スナイダーの例ではよくクラーク 1866 の回転楕円体(彼により扁平率 f = 1/294.98 で定義されている)が使われている。この f から我々は離心率の 平 方を 0.00676862818 (これが GMT で使われている値)と計算することができ るが、スナイダーは丸めて 0.00676866 を使っている。この違いは数十 cm に な る。このわずかに異なる離心率を用いて座標を投影しなおす必要がある場合 は、クラーク 1866 と同じパラメータの回転楕円体を f = 1/294.97861076 と し て独自に設定するべきである。また、古いデータは異なる基準面を参照して いる可能性もあることに注意されたい。どの基準面が使われたのか知ってい て 全 てのデータを共通の基準面へ変換するのではない限り、数十〜数百メートル のミスマッチを生じる可能性はある。 (3) 最後に、 MAP_SCALE_FACTOR が一部 の 図法に対してあるデフォルト値を持っているために、他の設定により得られ た結果と合わせるために設定を上書きしなければならないかもしれないこと に 注意されたい。 |
gmtdefaults(l), GMT(l), project(l) |
Bomford, G., 1952, Geodesy, Oxford U. Press. |