[ncl-talk] how to plot observation stations wind vector on a map?
dyjbean at gmail.com
dyjbean at gmail.com
Sat Nov 5 05:33:53 MDT 2016
hi,
i want add several obervation wind vector data on a map, but i cannot find appropriate function to plot.
the following is my script:
++++++++++++++++++++++++++++++++++++++
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
load "$GEODIAG_ROOT/geodiag.ncl"
begin
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; uv data
bj_csvs=systemfunc("ls uvdata/112920_inside_obs.csv")
lines=asciiread(bj_csvs,-1,"string")
nlines=dimsizes(lines) - 1
delim=","
field_names=str_split(lines(0),delim)
nfields=dimsizes(field_names)
;
fields=new((/nfields,nlines/),string)
do nf=0,nfields-1
fields(nf,:)=str_get_field(lines(1:),nf+1,delim)
end do
print(fields(1,:) + " "+fields(2,:) + " "+fields(3,:)+" "+fields(4,:))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; pm2.5 data
ncol = 3 ; number of columns is 3£»ÄãµÄÁÐÊý
stationdata= readAsciiTable("pm2.5_txt/15112920.txt", ncol, "float", 1)
print(dimsizes(stationdata))
nps =dimsizes(stationdata)
npts = nps(0) ; Number of points.
lat = stationdata(:,1) ; latitude values
lon = stationdata(:,0) ; longitude values
pm25= stationdata(:,2) ; station numbers to appear on the map£»Õâ¸öµØ·½Äã¿ÉÒÔдÎÛȾÊý¾Ý
printMinMax(pm25,0)
;-------interpolate-----------------------------------------------------
olon =new(80,"float")
olat =new(80,"float")
data1=new((/80,80/),"float")
do j=0,79
olon(j)=113+j*0.1
end do
do k=0,79
olat(k)=36+k*0.1
end do
;---------set interpolate res--------------------------------------------
olon!0 ="lon"
olon at long_name="lontitude"
olon at units ="degrees-east"
olon&lon =olon
olat!0 ="lat"
olat at long_name="latitude"
olat at units ="degrees-north"
olat&lat =olat
;--------Call interpolation function--------------------------------------
;pm25 at _FillValue=999999.000000
rscan=(/10,5,3,2,1,0.5,0.2,0.1/)
data1=obj_anal_ic_deprecated(lon, lat, pm25, olon, olat, rscan, False);creanm
printMinMax(data1 ,0)
data1!0="lat"
data1!1="lon"
data1&lat=olat
data1&lon=olon
data1 at units=""
data1 at long_name="pm2.5"
;data1 at _FillValue = pm25 at _FillValue
printMinMax(olat,0)
printMinMax(olon, 0)
;; plot
type="png"
wks = gsn_open_wks(type,"2015112920") ; Open a workstation and
colors=(/"White","Black","(/.027,.729,.145/)","(/.431,.824,.035/)",\
"(/.800,.937,.012/)","(/1.00,.969,0.00/)","(/1.00,.871,0.00/)",\
"(/1.00,.710,0.00/)","(/1.00,.549,0.00/)","(/0.00,.757,1.00/)",\
"(/0.00,0.455,1.00/)","(/0.00,.122,1.00/)","(/1.00,.275,0.00/)",\
"(/1.00,0.059,0.00/)"/)
gsn_define_colormap(wks,colors)
res = True
res at cnFillOn = True
res at cnLinesOn = False
res at cnLineLabelsOn = False
res at gsnDraw = False
res at gsnFrame = False
res at gsnMaximize = True
res at gsnAddCyclic = False
res at mpLimitMode = "LatLon"
res at mpMinLatF = 39.40
res at mpMaxLatF = 41.00
res at mpMinLonF = 115.35
res at mpMaxLonF = 117.55
res at isShowProvince = False
res at isShowBeijingCounty = True
res at beijingCountyColor = "black"
res at beijingCountyThickness = 1.0
res at isShowBeijingRing2 = True
res at beijingRing2Color = "black"
res at beijingRing2Thickness = 1.50
res at isShowBeijingRing3 = True
res at beijingRing3Color = "black"
res at beijingRing3Thickness = 1.50
res at isShowBeijingRing4 = True
res at beijingRing4Color = "black"
res at beijingRing4Thickness = 1.5
res at isShowBeijingRing5 = True
res at beijingRing5Color = "black"
res at beijingRing5Thickness = 1.5
res at isShowBeijingRing6 = True
res at beijingRing6Color = "black"
res at beijingRing6Thickness = 1.5
setup_china_map(res)
plot = gsn_csm_contour_map(wks,data1,res)
attach_china_map(wks, plot)
draw(plot)
; wmsetp("vch", 0.05)
; wmsetp("vcc", 1)
; wmsetp("vcw", 3.)
; wmsetp("wbs", 0.05)
; wmsetp("col", 1)
; wmsetp("wbs", 0.06)
; wmsetp("ezf",2)
; wmsetp("wbs",0.12)
wmsetp("ars",0.05)
wmsetp("arl",1.5)
; wmvectmap(wks, tofloat(fields(2,:)), tofloat(fields(1,:)), tofloat(fields(3,:)), tofloat(fields(4,:)))
; wmvlbl(wks, 1.0, 0.0)
wmbarbmap(wks, tofloat(fields(2,:)), tofloat(fields(1,:)), tofloat(fields(3,:)), tofloat(fields(4,:)))
frame(wks)
end
++++++++++++++++++++++++++++++++++++++
the red and bold font is for wind barb.
the figure is as follows:
the wind barb are so small on this plot, but those sizes are so tiny , which function can be used to enlarge the wind rod for appropriate size.
thanks
dyjbean at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20161105/ede2379b/attachment-0001.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/png
Size: 77393 bytes
Desc: not available
Url : http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20161105/ede2379b/attachment-0001.png
More information about the ncl-talk
mailing list