地図情報や緯線・経線を描くのと同時に, 等高線図やトーンによる塗りわけを おこなったり, ベクトル場を描いたりすることが可能です. 等高線図作画DclDrawContourとトーンによ る塗りわけDclShadeContourはともにユーザー座標系 で作画するルーチン群ですから, 正規化変換で地図投影変換を指定していても これまでと全く同じように利用できます.
下のプログラムでは, 球面調和関数の重ね合わせを 正射図法で描きます. 等高線とハッチが地図上で作画され, 地球の裏側の部分は描かれないように なっています.
program map03
use dcl
integer,parameter :: nx=18, ny=18
real,parameter :: xmin= 0, xmax=360, ymin=-90, ymax=+90
real,parameter :: pi=3.141592, drad=pi/180, dz=0.05, dp=0.2
real,dimension(0:nx,0:ny) :: p
do j = 0, ny
do i = 0, nx
alon = ( xmin + (xmax-xmin) * i/nx ) * drad
alat = ( ymin + (ymax-ymin) * j/ny ) * drad
slat = sin(alat)
p(i,j) = cos(alon) * (1-slat**2) * sin(2*pi*slat) + dz
end do
end do
call DclOpenGraphics()
rmiss = DclGetReal( 'GLOBAL:RMISS' )
call DclSetParm( 'GRAPH:lsoftf', .false. )
call DclNewFrame
call DclSetWindow( xmin, xmax, ymin, ymax )
call DclSetViewPort( 0.1, 0.9, 0.1, 0.9 )
call DclSetSimilarity( 0.4, 0.0, 0.0 )
call DclSetMapProjectionAngle( 165.0, 60.0, 0.0 )
call DclSetMapProjectionWindow( -180.0, 180.0, 0.0, 90.0 )
call DclSetTransNumber( DCL_OTHOGAPHIC )
call DclSetTransFunction
call DclSetParm( 'GRAPH:lclip', .true. )
call DclSetShadeLevel( rmiss, -dp, 201 )
call DclSetShadeLevel( dp, dp*2, 401 )
call DclSetShadeLevel( dp*2, rmiss, 402 )
call DclShadeContour( p )
call DclSetContourLevel( p, dp )
call DclDrawContour( p )
call DclDrawMap( 'coast_world' )
call DclDrawGlobe()
call DclCloseGraphics
end program
|
![]() |
|
DclSetSimilarity (GRSSIM) |
相似変換を設定する. |
|
DclSetMapProjectionAngle (GRSMPL) |
地図投影の角度を設定する. |
|
DclSetMapProjectionWindow (GRSTXY) |
地図投影ウインドを設定する. |
|
DclDrawGlobe (UMPGLB) |
地図の境界線(縁)と緯度線,経度線を描く. |
|
DclDrawMap (UMPMAP) |
各種地図情報を描く. |