; ; This script draws a vertical profile of temperature for longitudes ; separated by 5 degrees. ; ; ; Open data file containing grid of global temperatures. ; a = addfile("data/94062712_aT.cdf","r") ; ; Open an X workstation object. ; wks = create "wks" xWorkstationLayerClass noparent end create ; ; Set up intial scalar field with longitude of ; temperature data. Convert data to Degrees F ; from Degrees K before assigning them to the ; sfDataArray resource. ; field1 = create "field1" scalarFieldLayerClass noparent "sfDataArray" : (a->T(0,:,:,0) - 273.15) * 9 / 5 + 32.0 "sfMissingValueV": a->T@_FillValue "sfXCStartV" : a->lat(0) "sfXCEndV": a->lat(dimsizes(a->lat) - 1) "sfYArray" : a->level end create ; ; Determine extents of grid. ; lat = a->lat if(lat(0) .lt. lat(dimsizes(lat)-1)) then min_lat = lat(0) max_lat = lat(dimsizes(lat)-1) else max_lat = lat(0) min_lat = lat(dimsizes(lat)-1) end if level = a->level if(level(0) .lt. level(dimsizes(level)-1)) then min_level = level(0) max_level = level(dimsizes(level)-1) else max_level = level(0) min_level = level(dimsizes(level)-1) end if ; ; Create contour using manual spacing. ; con1 = create "con1" contourLayerClass wks "vpXF": .2 "vpYF": .8 "vpWidthF" : .6 "vpHeightF" : .6 "cnScalarFieldData" : field1 "cnLevelSelectionMode" : "MANUAL" "cnMaxLevelCount" : 25 "cnMinLevelValF" : -80.0 "cnMaxLevelValF" : 110.0 "cnLevelSpacingF" : 10.0 "trXMinF" : min_lat "trXMaxF" : max_lat "trYMinF" : min_level "trYMaxF" : max_level "trYReverse" : "True" "tiMainString" : "Longitude " + a->lon(0) + " Degrees" end create ; ; Draw first step. ; draw(con1) frame(wks) ; ; Loop on remaining longitude values and reset the title every iteration. ; do i = 1, dimsizes(a->lon) - 1 setvalues field1 "sfDataArray" : (a->T(0,:,:,i) - 273.15) * 9 / 5 + 32.0 end setvalues setvalues con1 "tiMainString" : "Longitude " + a->lon(i) + " Degrees" end setvalues draw(con1) frame(wks) end do delete(con1) delete(field1) delete(wks)