地図投影法を選択する

DCLで扱える座標系としては, 直角直線座標系などのほかに14種類の地図投 影座標 系があります. ユーザー座標系から正規座標系への正規化変換でこれらの座標系 を設定するれば, それぞれの地図座標系で描画が可能となります.

これらの地図投影変換を用いて, 全球(いくつかの例外あり)を表示した結果を下の出力図に示します. 変換関数番号(ITR)が10から33までの14 種類の投影法で海岸線情報と 緯度・経度線を描きます. 第1フレームは円筒図 法(6種), 第2フレームは円錐図法(4種), 第3 フレーム方位図法(4種)の地図投 影法です.

DCL で指定できる地図情報としては, 海岸線, 国境, 米国の州境, 日本の県境, プレート境界 などがあります.

map01.f90
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)
各種地図情報を描く.