; ; Open file containing surface pressure data for ; the entire globe. ; a = addfile("data/94072700_aP.cdf","r") ; ; Read in pressure variable and convert it to pascals. ; p = a->Psl/100.0 ; ; Read in forecast times variable. ; frtime = a->frtime ; ; Sort the pressure array by forecast ; time to put them in increasing order. ; tmp = new(dimsizes(p(0,:,:)),float) ind = 0 do i = 0, dimsizes(frtime) - 2 ind = i do j = i + 1, dimsizes(frtime) - 2 if(frtime(j) .lt. frtime(ind)) ind = j end if end do if(ind.ne.i) tmp = p(ind,:,:) p(ind,:,:) = p(i,:,:) p(i,:,:) = tmp tmp2 = frtime(ind) frtime(ind) = frtime(i) frtime(i) = tmp2 end if end do ; ; Compute minimums and maximums. ; lat = a->lat if(lat(0) .lt. lat(dimsizes(lat)-1)) then ymin = lat(0) ymax = lat(dimsizes(lat)-1) else ymax= lat(0) ymin = lat(dimsizes(lat)-1) end if lon = a->lon if(lon(0) .lt. lon(dimsizes(lon)-1)) then xmin = lon(0) xmax = lon(dimsizes(lon)-1) else xmax= lon(0) xmin = lon(dimsizes(lon)-1) end if ; ; Create the scalar field object with the first time step. ; field1 = create "field1" scalarFieldLayerClass noparent "sfDataArray" : p(0,:,:) "sfMissingValueV" : p@_FillValue "sfXCStartV" : a->lon(0) "sfXCEndV" : a->lon(dimsizes(a->lon)- 1) "sfYCStartV" : a->lat(0) "sfYCEndV" : a->lat(dimsizes(a->lat) - 1) end create ; ; Create an NCGM workstation with the metafile name "mapcontour01.ncgm". ; wks = create "wks" ncgmWorkstationLayerClass noparent "wkMetaName" : "mapcontour01.ncgm" end create ; ; Create the map that is used as the base of the overlay. ; map = create "map" mapPlotLayerClass wks "vpXF": .1 "vpYF": .9 "vpWidthF": .8 "vpHeightF": .8 "mpCenterLatF": -60.0 "mpCenterLonF": 0.0 "mpProjection": "ORTHOGRAPHIC" end create ; ; Create the contour object to be overlaid on the map object. ; The contour object uses manual contour intervals and solid- ; fill color. ; con = create "con" contourLayerClass wks "cnScalarFieldData" : field1 "tfOverlayPlotBase": "True" "cnLevelSelectionMode" : "MANUAL" "cnMinLevelValF" : 970.0 "cnMaxLevelValF" : 1030.0 "cnLevelSpacingF" : 5.0 "cnMaxLevelCount" : 35 "trYMinF": ymin "trYMaxF": ymax "trXMinF": xmin "trXMaxF": xmax "cnMonoFillPattern" : "True" "cnFillPatterns" : 0 "cnFillOn" : "True" "cnMonoLineColor" : "True" "cnLineColors" : 1 "tiMainString" : "Forcast time " + 0 + " hours" "cnLowLabelsOn" : "False" "cnHighLabelsOn" : "False" "cnLineLabelsOn" : "False" end create ; ; Use the overlay function to assign the object "con" to the overaly base. ; overlay(map,con) ; ; Draw first time step. ; draw(map) frame(wks) ; ; Loop over the remaining time steps and change the title string. ; do i = 1, dimsizes(frtime) - 1 setvalues field1 "sfDataArray" : p(i,:,:) end setvalues setvalues con "tiMainString" : "Forcast time " + frtime(i) + " hours" end setvalues draw(map) frame(wks) end do ; ; Free variables used in this script. ; delete(a) delete(p) delete(tmp) delete(tmp2) delete(i) delete(j) delete(ind) delete(lat) delete(lon) delete(xmax) delete(ymax) delete(xmin) delete(ymin)