DKRZ NCL EUMETSAT IASI swath data example#

Example script:

;-------------------------------------------------------------------------
; Plot IASI EUMETSAT original data
;
; Data:      Satellite swath 3hr data (unstructured)
;
; dimensions:
;   nMeas = 162417 ;
;   nInstr = 1 ;
;   nSens = 1 ;
;   nChannel = 5 ;
;   nAction = 19 ;
;   nTest = 15 ;
;   StringLen = 109 ;
; variables:
;   float LAT(nMeas) ;
;       LAT:long_name = "LATITUDE (HIGH ACCURACY)" ;
;       LAT:units = "DEGREE" ;
;       LAT:codetable = 5001 ;
;       LAT:_FillValue_0 = 9.96921e+36f ;
;   float LON(nMeas) ;
;       LON:long_name = "LONGITUDE (HIGH ACCURACY)" ;
;       LON:units = "DEGREE" ;
;       LON:codetable = 6001 ;
;       LON:_FillValue_0 = 9.96921e+36f ;
;   float BT_OBS(nMeas, nChannel) ;
;       BT_OBS:long_name = "Observed brightness temperature" ;
;       BT_OBS:units = "K" ;
;       BT_OBS:codetable = 12063 ;
;       BT_OBS:_FillValue = 9.96921e+36f ;
;
;
; Plot type: polymarkers
;
; 04.02.16  kmf
;-------------------------------------------------------------------------
begin
  st = get_cpu_time()                               ;-- for calculating the elapsed CPU time

  diri       = "$HOME/data/EUMETSAT/IASI/"
  odir       = "./"
  fili       = "IASI_004_200907170300-200907170600.nc"
  pltname    = "plot_IASI_EUMETSAT_original_data_markers"

  chan       =  2

;-- read the data from new netCDF file
  f   =  addfile(diri+fili,"r")
  var =  f->BT_OBS(:,chan)
  lat =  f->LAT
  lon =  f->LON

;-- open a workstation
  wks = gsn_open_wks("png",odir+"/"+pltname)

;-- assign and retrieve color map
  gsn_define_colormap(wks,"BlAqGrYeOrReVi200")
  cmap   = gsn_retrieve_colormap(wks)

;-- define value levels
  levels  = ispan(220,300,2)*1.
  nlevels = dimsizes(levels)
;-- define color array
  colors  = span_color_indexes(cmap(3:,:),dimsizes(levels)+1) + 3

;-- set map resources
  mpres                       =  True
  mpres@gsnMaximize           =  True                ;-- maximize size of plot in window
  mpres@gsnDraw               =  False               ;-- turn off draw
  mpres@gsnFrame              =  False               ;-- turn off page advance

  mpres@mpMinLatF             =  -90.
  mpres@mpMaxLatF             =   90.
  mpres@mpMinLonF             = -180.
  mpres@mpMaxLonF             =  180.

  mpres@mpDataBaseVersion     = "MediumRes"          ;-- better map resolution
  mpres@mpLandFillColor       = "tan"
  mpres@tiMainString          = "IASI EUMETSAT: 3hr test data"
  mpres@pmTickMarkDisplayMode = "Always"             ;-- nicer map tickmarks

;-- create the map
  map = gsn_csm_map(wks,mpres)

;-- group the variable values according to which range they fall
;-- in, and attach them to the map as a colored marker
  mkres                        = True
  mkres@gsMarkerIndex          = 16                  ;-- filled dot
  mkres@gsMarkerSizeF          = 0.001

  markerid = new(nlevels+1,graphic)

  do i=0,nlevels
     if(i.eq.0) then                                 ;-- first level
        ii := ind(var.lt.levels(0))
     else if(i.eq.nlevels) then                      ;-- middle levels
        ii := ind(var.ge.levels(nlevels-1))
     else                                            ;-- last level
        ii := ind(var.ge.levels(i-1).and.var.lt.levels(i))
     end if
     end if
     if(.not.any(ismissing(ii))) then
        mkres@gsMarkerColor   = colors(i)
        markerid(i) = gsn_add_polymarker(wks,map,lon(ii),lat(ii),mkres)
     end if
  end do

;-- draw map and the attached markers
  draw(map)
  frame(wks)

;-- calculate and print elapsed wall clock time
  et = get_cpu_time()
  print(" -->  Used CPU time:  "+ (et-st) + " seconds")

end

Result:

../../../../../../_images/plot_IASI_EUMETSAT_original_data_markers_w400.png