DCLで扱える座標系としては, 直角直線座標系などのほかに14種類の地図投 影座標 系があります. ユーザー座標系から正規座標系への正規化変換でこれらの座標系 を設定するれば, それぞれの地図座標系で描画が可能となります.
これらの地図投影変換を用いて, 全球(いくつかの例外あり)を表示した結果を下の出力図に示します. 変換関数番号(ITR)が10から33までの14 種類の投影法で海岸線情報と 緯度・経度線を描きます. 第1フレームは円筒図 法(6種), 第2フレームは円錐図法(4種), 第3 フレーム方位図法(4種)の地図投 影法です.
DCL で指定できる地図情報としては, 海岸線, 国境, 米国の州境, 日本の県境, プレート境界 などがあります.
program map01 use dcl integer,parameter :: np=14 integer,dimension(np) :: ntr = (/ & 10, 11, 12, 13, 14, 15, 20, & 21, 22, 23, 30, 31, 32, 33 /) real,dimension(np) :: fct = (/ & 0.12, 0.12, 0.14, 0.14, 0.14, 0.14, 0.11, & 0.16, 0.12, 0.12, 0.40, 0.12, 0.12, 0.17 /) character(len=32) :: cttl call DclOpenGraphics( -abs(DclSelectDevice()) ) call DclSetAspectRatio( 2.0, 3.0 ) call DclDivideFrame( 'y', 2, 3 ) call DclSetParm( 'MAP:LGRIDMN', .false. ) call DclSetParm( 'MAP:INDEXMJ', 1 ) do i=1,np call DclNewFrame call DclSetParm( 'GRAPH:stlat1', 45.0 ) call DclSetParm( 'GRAPH:stlat2', 30.0 ) call DclSetParm( 'MAP:dgridmj', 30. ) call DclSetSimilarity( fct(i), 0.0, 0.0 ) call DclSetMapProjectionAngle( 0.0, 90.0, 0.0 ) call DclSetViewPort( 0.1, 0.9, 0.1, 0.9 ) if ( ntr(i)==30 ) then call DclSetMapProjectionWindow( -180.0, 180.0, 0.0, 90.0 ) else call DclSetMapProjectionWindow( -180.0, 180.0, -90.0, 90.0 ) end if call DclSetTransNumber( ntr(i) ) call DclSetTransFunction call DclSetParm( 'GRAPH:LCLIP', .true. ) call DclDrawDeviceWindowFrame( 1 ) call DclDrawViewPortFrame( 1 ) call DclTransNumToLong( ntr(i), cttl ) call DclDrawTextProjected( 0.5, 0.95, cttl, height=0.03, index=3 ) call DclDrawMap( 'coast_world' ) call DclDrawGlobe() if ( ntr(i)==23 ) then call DclNewFrame call DclNewFrame end if end do call DclCloseGraphics end program |
|
|
|
DclSetTransNumber (GRSTRN) |
変換関数番号を設定する. |
DclSetViewPort (GRSVPT) |
ビューポートを設定する. |
DclSetSimilarity (GRSSIM) |
相似変換を設定する. |
DclSetMapProjectionAngle (GRSMPL) |
地図投影の角度を設定する. |
DclSetMapProjectionWindow (GRSTXY) |
地図投影ウインドを設定する. |
DclSetTransFunction (GRSTRF) |
変換関数を確定する. |
DclTransNumToLong (SGTRNL) |
変換関数番号から名称を求める. |
DclDrawGlobe (UMPGLB) |
地図の境界線(縁)と緯度線,経度線を描く. |
DclDrawMap (UMPMAP) |
各種地図情報を描く. |