名前
mapproject - 2-D 座標のフォワードおよびインバースマップ変換
概要
mapproject infiles -Jparameters -Rwest/east/south/north[r]
[ -C ] [ -Dc|i|m|p ] [ -F[k|m|n|i|c|p] ] [ -H[nrec] ] [ -I
] [ -M[flag] ] [ -S ] [ -V ] [ -: ] [ -bi[s][n] ] [
-bo[s][n] ]
記述
mapproject は(経度, 緯度)の位置を infiles [または標準入
力]から読んで(x,y)座標を指定したマップ投影およびスケールを
用いて計算します。オプションとして、(x,y)の位置を読んで(経
度, 緯度)の値をインバース変換により計算することもできます。
これは知られている投影法のマップを数値化することにより得ら
れた線形の(x,y)の点を地理的座標に変換するのに使えます。最初
には(経度,緯度)または(x,y)が入っている必要がありますが、こ
の 2 列の後に追加のデータフィールドを設けることもできます。
(緯度,経度)のファイルを読む方法については -: オプションを参
照してください。
オプションフラッグとそれに付属する記述の間にスペースを入
れてはいけません。オプションフラッグには大文字を使い、その
付属コードには小文字を使います。
infiles
変換されるデータファイル。与えられないときは、標準入
力が読まれます。
-J マップの投影法を選択します。後に続く文字によって投
影法を決定します。大文字のときはスケールとして与え
られた数値はマップの幅(軸の長さ)として解釈され、そ
うでないときはマップのスケールになります(それぞれ
の投影法に対する定義を参照してください)。単位(UNIT)
はcm、inch、mのいずれかで、.gmtdefaultsで設定された
MEASURE_UNITに依存しますが、c、i、mをscale/widthの
値に付け加えることによりコマンドライン上で変更する
ことができます。以下の投影法から1つを選んでください
(投影法名の後のEまたはCはそれぞれEqual-Area[正積]また
はConformal[正角]を表します):
円筒図法:
-Jclon0/lat0/scale または -JClon0/lat0/width (カッ
シーニ)。
投影中心とスケールを与えます(1:xxxx または
UNIT/degree)。
-Jjlon0/scale または -JJlon0/width (ミラー円筒図法)。
中心子午線とスケールを与えます(1:xxxx または
UNIT/degree)。
-Jmparameters (メルカトル [C])。次のいずれかを選び
ます:
-Jmscale または -JMwidth
赤道沿いのスケールを与えます(1:xxxx
または UNIT/degree)。
-Jmlon0/lat0/scale または -JMlon0/lat0/width
中心子午線、標準緯度と標準緯線沿いの
スケールを与えます(1:xxxx または UNIT/degree)。
-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/degree)。
-Jqlon0/scale または -JQlon0/width (等距円筒図法
(Plate Carree))。
中心子午線とスケールを与えます(1:xxxx または
UNIT/degree)。
-Jtparameters (横メルカトル [C])。次のいずれかを選び
ます:
-Jtlon0/scale または -JTlon0/width
中心子午線とスケールを与えます(1:xxxx
または UNIT/degree)。
-Jtlon0/lat0/scale または -JTlon0/lat0/width
投影中心とスケールを与えます(1:xxxx
または UNIT/degree)。
-Juzone/scale または -JUzone/width (UTM - ユニバー
サル横メルカトル [C])。
ゾーン番号(1-60)とスケールを与えます(1:xxxx
または UNIT/degree)。
ゾーン: 前に - または + を付けると南半球また
は北半球の慣習に従います[正ならば北半球になります]。
-Jylon0/lats/scale または -JYlon0/lats/width (基本
円筒図法 [E])。
中心子午線、標準緯線とスケールを与えます
(1:xxxx または UNIT/degree)。
標準緯線は典型的には以下のいずれかになりま
す(しかし任意の値にすることが可能です):
45 - Peters図法
37.4 - Trystan Edwards図法
30 - Behrman図法
0 - Lambert図法
方位図法:
-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/hori-
zon/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/degree)。
-Jdlon0/lat0/lat1/lat2/scale または
-JDlon0/lat0/lat1/lat2/width (正距円錐)。
投影中心、2本の標準緯線とスケールを与えます
(1:xxxx または UNIT/degree)。
-Jllon0/lat0/lat1/lat2/scale または
-JLlon0/lat0/lat1/lat2/width (ランベルト正角円錐 [C])。
原点、2本の標準緯線とこれらに沿ったスケール
を与えます(1:xxxx または UNIT/degree)。
様々な図法:
-Jhlon0/scale または -JHlon0/width (ハンメル [E])。
中心子午線と赤道沿いのスケールを与えます(1:xxxx
または UNIT/degree)。
-Jilon0/scale または -JIlon0/width (正弦曲線=サン
ソン [E])。
中心子午線と赤道沿いのスケールを与えます(1:xxxx
または UNIT/degree)。
-Jk[f|s]lon0/scale または -JK[f|s]lon0/width (エッ
ケルト IV (f) および VI (s) [E])。
中心子午線と赤道沿いのスケールを与えます(1:xxxx
または UNIT/degree)。
-Jnlon0/scale または -JNlon0/width (ロビンソン)。
中心子午線と赤道沿いのスケールを与えます(1:xxxx
または UNIT/degree)。
-Jrlon0/scale または -JRlon0/width (ヴィンケル第3式)。
中心子午線と赤道沿いのスケールを与えます(1:xxxx
または UNIT/degree)。
-Jvlon0/scale または -JVlon0/width (ファン・デア・
グリンテン)。
中心子午線と赤道沿いのスケールを与えます(1:xxxx
または UNIT/degree)。
-Jwlon0/scale または -JWlon0/width (モルワイデ [E])。
中心子午線と赤道沿いのスケールを与えます(1:xxxx
または UNIT/degree)。
非地理的図法:
-Jp[a]scale[/origin] または -JP[a]width[/origin]
(極(theta,r)座標用の線形図法。 a を -Jp [または -JP]
の後に挿入すると、東から反時計回りの方向[デフォルト]
の代わりに、北から時計回りの方位を表し、 /origin を
度の単位で付け加えると、角度のオフセット[0]になります)。
スケールを UNIT/r-unit で与えます。
-Jxx-scale[/y-scale] または -JXwidth[/height]
scale [または width] は次の3通りのいずれかにすること
ができます:
-Jxscale - 通常の線形スケール方式。
-Jxscalel - スケールをとる前に値の log10 を
とる。
-Jxscaleppower - スケールをとる前に値の power
乗をとる。
x-scale を UNIT/x-unit で、 y-scale を UNIT/y-unit
で与えます (別々に設定しないときは y-scale = x-scale
になります)。軸の向きを反転させたいときは負のスケー
ルを使います(例えば、 y については正が下向きになりま
す)。
データが度単位の地理的座標ならば d を付け加えます。
デフォルトの軸の長さ( gmtdefaults 参照) は -JXh
(ランドスケープ用)を用いて呼び出すことができます;
-JXv (ポートレート用)を使うと x と y 軸の長さが入れ
替わります。最初のインストール時のGMTのデフォルトの
単位は UNIT です。しかし、これは .gmtdefaults ファイ
ルを編集することにより変えることができます(このファ
イルがないときは gmtdefaults を実行すれば作られます)。
マップ投影で用いられる回転楕円体は、ホームディレクト
リにある .gmtdefaults ファイルを編集することにより、
ユーザ定義することができます。一般に用いられる13種類
の回転楕円体と球体が現在サポートされており、またユー
ザは独自の回転楕円体のパラメータを設定することも可能
です(詳細は gmtdefaults のマニュアルを参照してくだ
さい)。GMTのデフォルトはWGS-84です。いくつかのGMTパ
ラメータは投影結果に影響を及ぼします: ELLIPSOID,
INTERPOLANT, MAP_SCALE_FACTOR, MEASURE_UNIT; 詳細は
gmtdefaults のマニュアルページを参照してください。
-R west, east, south, north は興味のある領域を特定し
ます。度と分[と秒]で境界を特定するには、dd:mm[:ss]
のフォーマットを使ってください。wesnの代わりに左下
と右上のマップ座標を使うときは r を付け加えてくださ
い。
オプション
infile(s)
2 列以上の入力ファイル。ファイルが与えられないときは、
mapproject は標準入力を読みます。
-C 投影される座標を投影中心基準にします[デフォルトでは
左下が基準になります]。
-D 一時的に MEASURE_UNIT を c (cm), i (インチ), m
(メートル), または p (ポイント)に置き換えます。 -F
とともに使うことはできません。
-F 1:1 のスケーリングにします。すなわち、出力(または入
力、 -I 参照)データは実際に投影されたメートルになり
ます。他の単位を指定するには、 k (km), m (マイル),
n (海里), i (インチ), c (cm), または p (ポイント)
を付けます。 -F が無いときは、出力(または入力、 -I
参照)は MEASURE_UNIT で指定されている単位になります
(ただし -D 参照)。
-H 入力ファイルにヘッダレコードがあります。ヘッダレコ
ードの数は .gmtdefaults ファイルを編集することによ
り変更できます。このオプションが使われた場合、 GMT
のデフォルトではヘッダレコードは1行です。
-I インバース変換を行います。すなわち、(x,y)データを
(経度,緯度)に変えます。
-M 複数セグメントファイル。セグメントは特別なレコードで
区切られています。 ASCII ファイルでは最初の文字は
flag でなければなりません[デフォルトは'>']。バイナリ
ファイルではすべてのフィールドが NaN でなければなり
ません。
-S 領域の外側に出る点を省略します。
-V 冗長モードを選択します。標準エラー出力に経過報告を
送ります[デフォルトでは"静かに"走ります]。
-: 入出力の(経度,緯度)と(緯度,経度)を入れ替えます。[デ
フォルトは(経度,緯度)です]。地理座標のみに適用されま
す。
-bi バイナリ入力を選択します。単精度に対しては s を付け
加えます[デフォルトは倍精度です]。バイナリファイルの
列数に応じて n を付け加えてください[デフォルトは2で
す]。
-bo バイナリ出力を選択します。単精度に対しては s を付け
加えます[デフォルトは倍精度です]。
用例
(経度,緯度)のファイルを(x,y)の位置に cm 単位でメルカトルグ
リッド上に1度あたり 0.5cm のスケールで変換します。
mapproject lonlatfile -R20/50/12/25 -Jm0.5c > xyfile
複数の2列、バイナリ、倍精度の(緯度,経度)のファイルを(x,y)の
位置に横メルカトルグリッド(中心経度75W)、 scale = 1:500000、
マップの範囲の外側になる点を省略するとして変換を行います。
mapproject tracks.* -R-80/-70/20/40 -Jt-75/1:500000 -: -S
-Di -bo -bi2 > tmfile.b
制限
-R で設定した長方形の入力範囲は一般には非長方形グリッドに
マップされます。 -C が設定されていない限り、このグリッドの
左端点は xvalue = 0.0 で、最下点は yvalue = 0.0 になります。
そこで、マップを数値化する前に、 mapproject に適当なスケー
ルを用いて範囲を超えるマップの座標を変換してマップされる
(x,y)の値を見てください。インバース変換を正しく行うために、
数値化の際にはこれらの値を使ってください。または代わりに、
awk を用いて変換を実行する前に(x,y)の値をスケール、シフト
してください。
回転楕円体と球体
ユーザが参照形( gmtdefaults 参照)として楕円形を選択した場
合、 GMT は楕円公式を使います。ユーザはいくつかの潜在的な落
とし穴に気づく必要があります: (1) 横メルカトル、アルベルス、
ランベルト正角円錐などの投影法において、マップされる面積が
小さいときは楕円表現を使い、大きなマップに対しては(適切な補
助緯度を代わりに用いて)球表現に切り替えます。楕円公式が用い
られるのは以下の場合です: (a) 横メルカトル: すべての点が中
心子午線から10度以内にあるとき、 (b) 円錐図法: 経度の範囲が
90度未満のとき、 (c) カッシーニ図法: すべての点が中心子午線
から4度以内にあるとき。 (2) 一部の過去のデータを合わせよう
とするとき(例えば、ある投影法、ある標準楕円において得られた
座標) GMT は少し異なる結果を与えることに気づくでしょう。こ
のミスマッチの原因としてあり得るのは、しばしば古い計算では
重要でない桁を使用しているということがあります。例えば、
Snyder の例ではよく Clarke 1866 の回転楕円体(彼により扁平率
f = 1/294.98 で定義されている)が使われています。この f から
我々は離心率の平方を 0.00676862818 (これが GMT で使われてい
る)と計算することができますが、 Snyder は丸めて 0.00676866
を使っています。この違いは数十cmになります。このわずかに異
なる離心率を用いて座標を投影しなおす必要がある場合は、
Clarke 1866 と同じパラメータの回転楕円体を f = 1/294.97861076
として独自に指定すると良いでしょう。
関連事項
gmtdefaults(l), gmt(l), project(l)
参考文献
Snyder, J. P., 1987, Map Projections - A Working Manual,
U.S. Geological Survey Prof. Paper 1395.
1 May 2003 MAPPROJECT(l)
Man(1) output converted with
man2html