[ncarg-talk] help for basemap overlay with contour_vector map

刘勇 liuy0813 at gmail.com
Mon Dec 22 18:41:50 MST 2014


hi ,

I want to draw a contour and vector plot on a self-define coastline,my code shows below,First I try to draw  a basemap ,then use  
gsn_csm_vector_scalar_map to draw contour and vector map, finally try to overlay this two map,but the coastline of my first map were overlayed by the second map.
I also try this way:  First draw the basemap, then draw contour map through gsn_csm_contour(wks,out,res),but this  doesn't show the lon&lat infomation of out,and can't overlay to my basemap.
hope U can help me.

thxs.

liuy


fig show below:
http://oneputao.qiniudn.com/zonal.png
http://oneputao.qiniudn.com/current.png

code are there:
;*************************************************

; plot_xmbay.ncl
;
;*************************************************
;load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"  
;load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"  
load "./ROMS_utils.ncl"
undef("create_map")
function create_map(wks,title,resolution)
local a, res2
begin
  res2               = True
  res2 at mpDataBaseVersion = resolution
  res2 at gsnMaximize   = True
  res2 at gsnDraw       = False
  res2 at gsnFrame      = False

  res2 at mpOutlineOn   = False
  res2 at mpFillOn      = False 

;---Turn on fancier tickmark labels.
  res2 at pmTickMarkDisplayMode = "Always"

  lon1=117.80
  lat1=24.20
  lon2=118.35+15.0/60.0
  lat2=24.4+25.0/60.0
;---Zoom in on area of interest
  res2 at mpLimitMode           = "Corners"
  res2 at mpLeftCornerLatF    = lat1
  res2 at mpLeftCornerLonF    = lon1
  res2 at mpRightCornerLatF   = lat2
  res2 at mpRightCornerLonF   = lon2
  ;res2 at tiMainString          = title
;  res2 at mpGridAndLimbDrawOrder = "Predraw"

;---Create map.
  map = gsn_csm_map(wks,res2)

  return(map)
end

begin
;************************************************
; User settings
;************************************************

   fhis="roms_his_2010_nouse.nc"
   outfile = "roms_5"
   depth = -2.0
   rec   = 1

;***********************************************
; Read data and interpolate
;***********************************************
   his   =  addfile (fhis,"r")
   lon2d = his->lon_rho
   lat2d = his->lat_rho
   out   = roms_3d_interp(his,"salt",rec,depth)
   ur    = roms_3d_interp(his, "u", rec, depth) ; they are automatically put to "rho"
   vr    = roms_3d_interp(his, "v", rec, depth)
   angle = his->angle
   uvrot = uv_rot(ur,vr,angle)

   urr   = uvrot(0,:,:)
   vrr   = uvrot(1,:,:)


   delete(uvrot)
   delete(ur)
   delete(vr)

   urr at lat2d = lat2d
   urr at lon2d = lon2d
   vrr at lat2d = lat2d
   vrr at lon2d = lon2d
   out at lat2d = lat2d
   out at lon2d = lon2d

   minValue  = 0.0
   maxValue  = 35.0
   step   = 1
   stride = 5

   ;************************************************
   ; create plot
   ;************************************************
   wks_type = "x11"        ; or "eps"
   wks_type at wkOrientation = "Portrait"
   wks  = gsn_open_wks (wks_type, outfile)            ; open workstation
   gsn_define_colormap(wks, "BlAqGrYeOrRevi200")
   i = NhlNewColor(wks,0.8,0.8,0.8)                   ; add gray to colormap

   reso="HighRes"
   title="Coast draw test"
   map = create_map(wks,title,reso)
   data=asciiread("./ranges/bigzone_zhu.txt",-1,"float")
   temp=reshape(data,(/dimsizes(data)/2,2/))
   lat0=temp(:,1)
   lon0=temp(:,0)
   lnres = True
   lnres at gsLineThicknessF = 3.0

   lnres at gsLineColor = "brown"

   lnres at gsFillColor     = "gray"
   lnres at gsLineColor = "black"
   ln0 = gsn_add_polygon(wks,map,lon0,lat0,lnres)
   ln2 = gsn_add_polyline(wks,map,lon0,lat0,lnres)

;
; Control appearance of map.
;

  vres1 = True               ; plot mods desired
  vres1 at gsnDraw              = True
  vres1 at gsnFrame             = True
  vres1 at gsnMaximize          = True    ; Maximize plot in frame
;  vres1 at gsnPaperOrientation  = "Portrait"
;  vres1 at cnFillDrawOrder      = "PreDraw"
  vres1 at cnFillOn             = True               ; turn on color for contours
  vres1 at cnLinesOn            = False              ; turn off contour lines
  vres1 at cnLineLabelsOn       = False              ; turn off contour line labels
  vres1 at cnFillMode           = "RasterFill"
  vres1 at gsnScalarContour     = True               ; contours desired
  vres1 at gsnSpreadColors      = True               ; use full color map
  vres1 at gsnSpreadColorEnd    = -2
;  vres1 at mpLandFillColor      = "gray"            ; set land to be gray
  vres1 at lbLabelBarOn              = True
  vres1 at lbLabelStride        = stride
  vres1 at cnLevelSelectionMode = "ManualLevels"     ; set manual contour levels
  vres1 at cnMinLevelValF       = minValue                ; set min contour level
  vres1 at cnMaxLevelValF       = maxValue                ; set max contour level
   vres1 at cnLevelSpacingF      = step                 ; set contour spacing
   vres1 at lbOrientation        = "Vertical"     ; /Vertical label bar
   vres1 at pmLabelBarOrthogonalPosF = -0.01          ; move label bar closer
   vres1 at pmLabelBarDisplayMode = "Always"          ; Turn on a label bar.
   vres1 at lbPerimOn             = False             ; no box around it
   vres1 at lbBoxLinesOn         = True               ; Yes/No labelbar box lines.
   vres1 at vcRefMagnitudeF           = 1.0             ; define vector ref mag
   vres1 at vcRefLengthF              = 0.045              ; define length of vec ref
   vres1 at vcRefAnnoOrthogonalPosF   = -1.0            ; move ref vector
   vres1 at vcRefAnnoParallelPosF    = 0.108
   vres1 at vcRefAnnoArrowLineColor   = "black"         ; change ref vector color
   vres1 at vcRefAnnoArrowUseVecColor = False           ; don't use vec color for ref
   vres1 at vcRefAnnoString1 = "1.0 m/s"
   vres1 at vcLabelsOn = False
   vres1 at vcLineArrowColor = "black"
   vres1 at vcRefAnnoOn = True
   vres1 at vcMonoLineArrowColor  = True             ; vec's colored by their mag
   vres1 at vcLineArrowHeadMaxSizeF = 0.008
   vres1 at vcLineArrowHeadMinSizeF = 0.0055  
   vres1 at vcMinDistanceF           = 0.0145            ; thin vectors , xishu with big data
   vres1 at vcLineArrowThicknessF    = 1.5               ; change vector thickness
   vres1 at vcGlyphStyle          = "CurlyVector"     ; turn on curly vectors
   lon_in1=117.80
   lat_in1=24.20
   lon_in2=118.35+15.0/60.0
   lat_in2=24.4+25.0/60.0

; MAP
;   vres1 at mpProjection           = "Mercator"
   vres1 at mpLimitMode            = "Corners"             ; choose range of map
   vres1 at mpLeftCornerLatF       = lat_in1
   vres1 at mpLeftCornerLonF       = lon_in1
   vres1 at mpRightCornerLatF      = lat_in2
   vres1 at mpRightCornerLonF      = lon_in2
   vres1 at mpDataBaseVersion      = "HighRes"          ; use high resolution coast
   vres1 at pmTickMarkDisplayMode  = "Always"           ; turn on tickmarks

   plot1= gsn_csm_vector_scalar_map(wks,urr,vrr,out,vres1)
   overlay(map,plot1)
   draw(map)
   frame(wks)

end 


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncarg-talk/attachments/20141223/5c32e96d/attachment-0001.html 


More information about the ncarg-talk mailing list