GRPH1 で扱える座標系としては,直角直線座標系,曲線座標系のほかに
14種類の地図投影座標系がある.
(標準ライブラリのENV2が正しく移植されていれば,
コマンドdcltrf
によってサポートされている座標系の番号,略号,名称を知ることができる.)
U座標を2次元V座標に変換するこれらの正規化変換を設定することによって,
地図座標系での描画が可能となる.
次ページ以降の3ページには, 選択可能な地図投影変換を用いて,全球を表示した例を示す. 変換関数番号10から33までの14種類の投影法で海岸線情報と緯度・経度線が 描かれている. 第1ページ目では円筒図法の地図投影法を, 第2ページ目では円錐図法の地図投影法を, 第3ページ目では方位図法の地図投影法を用いて作画した.
地図投影変換を設定するために必要なパラメータとしては,
ビューポート, 相似変換パラメータ,
地図座標回転パラメータがある.
これらはSGSVPT
, SGSSIM
, SGSMPL
によって
設定する.
ビューポートは直角直線座標系の設定でも用いられていたように,
V座標系上においてユーザーが見たい矩形領域である.
ビューポートは, 矩形領域の左下と右上のすみのV座標値を指定する.
この例でもおこなっているように,
SG
pGET/
SG
pSET
が管理する
内部変数'LCLIP'
を.TRUE.
として
クリッピングをするように指定すると, この枠からはみ出した部分は
描画されない.
相似変換パラメータは拡大縮小と原点移動に関する指定をおこなう.
地図投影座標系の関数は MATH1/MAPLIB の関数によって定義されている.
GRPH1 では, これらの関数が返す値に, SIMFAC
(SGSSIM
の最初の引数)を掛けてV座標系の値に変換し,
原点をビューポートの中心から(VXOFF,VYOFF)
(SGSSIM
の2, 3番めの引数)だけ平行移動した位置に設定する.
地図座標回転パラメータは地図投影をする前におこなう
緯度・経度座標の回転を指定する.
(PLX,PLY)
(SGSMPL
の最初の2つの引数)は
投影座標の極をおく経度・緯度をU座標系で指定し,
PLROT
(SGSMPL
の最後の引数)は投影座標の極の回りの
回転角を指定する. くわしくは
「GRPH2マニュアル」
を参照のこと.
このほかに,円錐図法による投影をおこなう場合は標準緯度を
設定しなければならない(これは
SG
pGET/
SG
pSET
の管理する
内部変数'STLAT1'
, 'STLAT2'
を設定する).
また,ウインドウに関する情報は,地図投影変換そのものでは
用いられないが,GRPH2 で参照されることがある.
変換関数番号が30 (正射図法)かどうかで条件判断している部分では, この変換関数を用いて地球を投影したとき,裏と表の両面を書かないように するために地図投影におけるクリッピング境界を他の投影法と変えている. ふつうの投影法だと経度 [-180,+180], 緯度 [-90,+90]を 地図投影におけるクリッピング境界としておけばよいが 正射図法では片面だけを書かせるようにするために,緯度に関する クリッピング境界を [0.0,+90] とする必要がある.
これらのパラメータの指定は, 地図投影に関する十分な知識がないと
必ずしも容易ではないかも知れない. 次節では, 必要なパラメータのみ指定し,
ほかは適当に決めてくれるルーチン
UMPFIT
を使用した例を示す.
SGTRNL
は変換関数番号から変換関数名を得るルーチンである.
また, UMPMAP
は各種地図情報を描く;
UMPGLB
は緯度・経度線および地図の輪郭線を描く.
なお,
UM
pGET/
UM
pSET
の管理する内部変数'LGRIDMN'
を.FALSE.
として minor な緯度・経度線は描かないように指定した;
また major な緯度・経度線のラインインデクスを1とした
(くわしくは,
「GRPH2」マニュアルの UMPACK
の章を参照されたい).
UMPMAP
が描く地図情報としては世界の海岸線('coast_world'
)を
指定している.
ほかに, UMPMAP
で指定できる地図情報としては,
日本の海岸線('coast_japan'
),
世界の国境('border_world'
),
日本の県境('pref_japan'
)などがある.