2次元図における欠損値処理

格子点の値が欠損値のときでも, 欠損値処理の指定をすることによって, UDPACK や UEPACK, UGPACK にある2次元量表示サブルーチンでも欠損値処理を して作図できます.
プログラム MISS2 の例では, 基本的には第2.2節の QUICK4 と同じプログラム構成で, ただし格子点値の一部分を欠損値 RMISS (この値はGLRGET ルーチンで設定されている実数欠損値を 参照しました)として, 欠損値処理の指定をおこなって作画しています. 欠損 値処理の指定は, やはり GLLSET ルーチンによって内部変数 'LMISS'.TRUE. とすることによっておこないます. この実行結果 からもわかるように, 欠損値のまわりの格子点を境界としてコンターやトーン が描かれません.

2次元ベクトル場を作画する UGPACK でも, 同様の欠損値処理を行ないます. UGVECT ルーチンでは, ベクトルの少なくとも1成分が欠損値の時にはベ クトルを描きません. UGLSET ルーチンで UGPACK に関する内部変数 'LMISSP'.TRUE. にすると, 欠損値ベクトルの格子点にマー カー $\times$ を描きます. この印のマーカータイプやマーカーサイズは, やはり, UGISET, UGRSET ルーチンでそれぞれ対応する内部変数 'ITYPE1', 'RSIZEM' を設定することにより変更できます.

\resizebox{10cm}{!}{\includegraphics{miss/miss2.eps}}

 

 

 

2d02.f90
program sample_2d02

  use dcl
  integer,parameter :: nx=18, ny=18
  real,parameter :: xmin=0, xmax=360, dx1=10, dx2=60
  real,parameter :: ymin=-90, ymax=90
  real,parameter :: pi=3.141592, drad=pi/180, dz=0.05
  integer,parameter :: my=6, nc=3

  real ::      p(0:nx, 0:ny), uy1(0:ny), uy2(0:my)
  character(len=nc),dimension(0:my) :: ch

    ch = (/ 'SP ', '60S', '30S', 'EQ ', '30N', '60N', 'NP ' /)

    do j = 0, ny
      alat = ( ymin + (ymax-ymin) * j/ny ) * drad
      slat = sin(alat)
      uy1(j) = slat
      do i = 0, nx
        alon = ( xmin + (xmax-xmin) * i/nx ) * drad
        p(i,j) = cos(alon) * (1-slat**2) * sin(2*pi*slat) + dz
      end do
    end do

    do j = 0, my
      alat = ( ymin + (ymax-ymin) * j/my ) * drad
      slat = sin(alat)
      uy2(j) = slat
    end do

    call DclOpenGraphics()
    call DclNewFrame

    call DclSetWindow( xmin, xmax, uy1(1), uy1(ny) )
    call DclSetViewPort( 0.2, 0.8, 0.2, 0.8 )
    call DclSetTransFunction

    call DclDrawAxis( 'bt', dx2, dx1 )
    call DclDrawTitle( 'b', 'LONGITUDE', 0.0 )

    call DclDrawAxisSpecify( 'lr', uy2, uy1, ch )
    call DclDrawTitle( 'l', 'LATITUDE', 0.0 )

    call DclSetXEvenGrid( xmin, xmax, nx+1 )
    call DclSetYGrid( uy1 )

    call DclSetContourLabelFormat( '(f6.1)' )
    call DclSetContourLevel( p, 0.2 )
    call DclSetContourLine( 0.1, index=1, type=4, height=0.01 )

    call DclDrawContour( p )

    call DclCloseGraphics

end program


DclDrawLine
(SGPLU,SGPLZU)
ユーザー座標系で折れ線を描く.
DclSetLineType
(SGSPLT)
折れ線のラインタイプを設定する.
DclSetLineIndex
(SGSPLI)
折れ線のラインインデクスの設定する.

* 括弧の中は、対応するf77インターフェイス名.

関連リンク