[ncl-talk] why the landcover index cannot display to match the colorbar?
dyjbean soybean
dyjbean at gmail.com
Wed Sep 23 20:43:30 MDT 2015
hi,
i have made a landcover map, which includes indices from 1 to 19 and
31-32 , all is 22 categories.
but after i ploted them, only the 1 to 19 and 33 category appearing in
figure, but the 31-32 these two category cannot be shown in figure.
those below is my NCL 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 "$NCARG_ROOT/lib/ncarg/nclscripts/csm/shea_util.ncl"
load "./shapefile_mask_data.ncl"
begin
forgname="globecover_hubei_liuhuan_usgs_ronghe_snow-ice1.txt"
fconname="globecover_huabei_liuhuan_usgs_new_allocate1.txt"
onlat=5403
omlon=5403
nnlat=1801
nmlon=1801
odat=new((/onlat,omlon/),"integer","No_FillValue")
ndat=new((/nnlat,nmlon/),"integer","No_FillValue")
odat=readAsciiTable(forgname,omlon,"integer",5)
ndat=asciiread(fconname,(/nnlat,nmlon/),"integer")
delete(odat at _FillValue)
delete(ndat at _FillValue)
;; confused lc
olat=new((/onlat/),"float","No_FillValue")
olon=new((/omlon/),"float","No_FillValue")
do i=0,onlat-1
olat(i)=45.00413067-i*0.0027778
end do
do j=0,omlon-1
olon(j)=109.99606533+j*0.0027778
end do
olat!0="lat"
olat at units="degrees_north"
olat at long_name="latitude"
olon!0="lon"
olon at units="degrees_east"
olon at long_name="longitude"
odat!0="lat"
odat!1="lon"
odat&lat=olat
odat&lon=olon
odat at units=""
odat at long_name="land cover confused with globaland30 and globercover"
odat at _FillValue = -999
;; new classified lc
nlat=new((/nnlat/),"float","No_FillValue")
nlon=new((/nmlon/),"float","No_FillValue")
do i=0,nnlat-1
nlat(i)=45.00413067-i*0.0083334
end do
do j=0,nmlon-1
nlon(j)=109.99606533+j*0.0083334
end do
nlat!0="lat"
nlat at units="degrees_north"
nlat at long_name="latitude"
nlon!0="lon"
nlon at units="degrees_east"
nlon at long_name="longitude"
ndat!0="lat"
ndat!1="lon"
ndat&lat=nlat
ndat&lon=nlon
ndat at units=""
ndat at long_name="land cover new categories after confused"
ndat at _FillValue = -999
print(odat(onlat-1,omlon-1))
;
; If you already have the mask NetCDF file, set this to False.
; Creating the mask can be slow!
;
CREATE_MASK = True
;---Whether to draw lat/lon points and shapefile outlines
ADD_LATLON_POINTS = False
ADD_SHAPEFILE_OUTLINES = True
;---Name of shapefile containing USA outlines
shp_fname = "huan_6.shp"
;---Name of file to write mask to or to read mask from.
mask_oname = "liuhuan_mask_300m.nc"
mask_nname = "liuhuan_mask_1km.nc"
;---Rough area we are interested in. Everything outside this will be masked.
minlon = 116.0
maxlon = 116.8
minlat = 39.6
maxlat = 40.2
;; odat
if(CREATE_MASK) then
print("Creating the mask file...")
;---Create a new mask using a shapefile of USA
odims = dimsizes(odat)
opto = True
opto at return_mask = True
; opto at debug = True
opto at minlon = minlon ; Makes the shapefile masking
opto at maxlon = maxlon ; go faster.
opto at minlat = minlat
opto at maxlat = maxlat
odat_mask = shapefile_mask_data(odat,shp_fname,opto)
;---Write new mask to file
system("rm -f " + mask_oname)
oout = addfile(mask_oname,"c")
oout->odat_mask = odat_mask
else
print("Reading mask off file.")
;---Read the new mask from the NetCDF file
omask = addfile(mask_oname,"r")
odat_mask = omask->odat_mask
end if
;; ndat
if(CREATE_MASK) then
print("Creating the mask file...")
;---Create a new mask using a shapefile of USA
ndims = dimsizes(ndat)
optn = True
optn at return_mask = True
; optn at debug = True
optn at minlon = minlon ; Makes the shapefile masking
optn at maxlon = maxlon ; go faster.
optn at minlat = minlat
optn at maxlat = maxlat
ndat_mask = shapefile_mask_data(ndat,shp_fname,optn)
;---Write new mask to file
system("rm -f " + mask_nname)
nout = addfile(mask_nname,"c")
nout->ndat_mask = ndat_mask
else
print("Reading mask off file.")
;---Read the new mask from the NetCDF file
nmask = addfile(mask_nname,"r")
ndat_mask = nmask->ndat_mask
end if
;---Create masked data array
omask = where(odat_mask.eq.1,odat,odat at _FillValue)
copy_VarMeta(odat,omask)
;---Create masked data array
nmask = where(ndat_mask.eq.1,ndat,ndat at _FillValue)
copy_VarMeta(ndat,nmask)
;ind32=ind(ndtooned(nmask).eq.32)
;print(ind32)
dimsnmk=dimsizes(nmask)
do i=0,dimsnmk(0)-1
do j=0,dimsnmk(1)-1
if(any(ndat(i,j).eq.32)) then
print(i+" "+j+" "+" "+ndat(i,j))
end if
end do
end do
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; create plot
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
plot=new(2,"graphic")
info=(/ \
"1 urban_and_built-in" ,\
"2 dryland_cropland" ,\
"3 irrigated_cropland" ,\
"4 mixed_dry_cropland" ,\
"5 cropland_grassland" ,\
"6 cropland_woodland" ,\
"7 grassland" ,\
"8 shrubland" ,\
"9 mixed_shrub_grassland",\
"10 savanna" ,\
"11 deciduous_broadleaf" ,\
"12 deciduous_needleleaf" ,\
"13 evergreen_broadleaf" ,\
"14 evergreen_needleleaf" ,\
"15 mixed_forest" ,\
"16 water" ,\
"17 herbaceous_wetland" ,\
"18 wooded_wetland" ,\
"19 barren_or_sparse" ,\
"31 low_intensity_res" ,\
"32 mid_intensity_res" ,\
"33 high_intensity_res"/)
ninfo=dimsizes(info)
ninfo = dimsizes(info) ; # of classifications
;************************************************
; create plot
;************************************************
pltType = "png" ; ps, pdf, png, x11, eps
colorscheme =(/"red","lawngreen","mediumseagreen","springgreen",\
"limegreen","darkolivegreen3","green","lightsalmon","green3",\
"gold","palegreen","olivedrab3","chartreuse3","chartreuse", \
"darkgreen","blue","hotpink2","hotpink","light cyan", \
"khaki1","violetred1","purple3"/)
ncolors = dimsizes(colorscheme)
if (ninfo.ne.ncolors) then ; make sure # of colors match
categories (classes)
print("size mismatch: ninfo="+ninfo+" ncolors="+ncolors)
exit
end if
wks = gsn_open_wks(pltType,"plot_origin_new_lc_test")
plot=new(2,graphic)
res = True ; plot mods desired
res at gsnDraw = False
res at gsnFrame = False
;res at gsnMaximize = True ; ps, pdf
res at gsnAddCyclic = False
;res at mpMinLatF = min(odat&lat)
;res at mpMaxLatF = max(odat&lat)
;res at mpMinLonF = min(odat&lon)
;res at mpMaxLonF = max(odat&lon)
res at cnFillOn = True ; color Fill
res at cnFillMode = "RasterFill"
res at cnLinesOn = False ; Turn off contour lines
res at cnLineLabelsOn = False
res at cnLevelSelectionMode = "ExplicitLevels" ; set explict contour levels
res at cnLevels = tobyte(ispan(1,ninfo-1,1)+1)
res at cnFillPalette = colorscheme ; distinct colors for categories
res at gsnSpreadColors = False ; use each color sequentially
res at cnInfoLabelOn = False
res at mpFillOn = False
res at gsnAddCyclic = False ; regional data
;res at trGridType = "TriangularMesh"
res at tmXBLabelFontHeightF = 0.01 ; Make lon & lat text smaller
res at tmYLLabelFontHeightF = res at tmXBLabelFontHeightF
res at gsnLeftString = ""
res at gsnRightString = ""
res1 = True
res1 = res
res1 at mpMinLatF = minlat
res1 at mpMaxLatF = maxlat
res1 at mpMinLonF = minlon
res1 at mpMaxLonF = maxlon
res1 at tmXBMode = "Explicit"
res1 at tmXBValues =
(/116.0,116.1,116.2,116.3,116.4,116.5,116.6,116.7,116.8/)
res1 at tmXBLabels =
(/"116.0~S~o~N~E","116.1~S~o~N~E","116.2~S~o~N~E","116.3~S~o~N~E","116.4~S~o~N~E","116.5.0~S~o~N~E",\
"116.6~S~o~N~E","116.7~S~o~N~E","116.8~S~o~N~E"/)
res1 at tmYLMode = "Explicit"
res1 at tmYLValues = (/39.6,39.7,39.8,39.9,40.0,40.1,40.2/)
res1 at tmYLLabels =
(/"39.6~S~o~N~N","39.7~S~o~N~N","39.8~S~o~N~N","39.9~S~o~N~N","40.0~S~o~N~N","40.1~S~o~N~N","41.2~S~o~N~N"/)
res1 at tiMainString = "confused LC"
res1 at lbLabelBarOn = False
plot(0) = gsn_csm_contour_map_ce(wks, omask, res1) ; create plot
res2 = True
res2=res
res2 at mpMinLatF = minlat
res2 at mpMaxLatF = maxlat
res2 at mpMinLonF = minlon
res2 at mpMaxLonF = maxlon
res2 at lbLabelBarOn = False
res2 at tmXBMode = "Explicit"
res2 at tmXBValues =
(/116.0,116.1,116.2,116.3,116.4,116.5,116.6,116.7,116.8/)
res2 at tmXBLabels =
(/"116.0~S~o~N~E","116.1~S~o~N~E","116.2~S~o~N~E","116.3~S~o~N~E","116.4~S~o~N~E","116.5.0~S~o~N~E",\
"116.6~S~o~N~E","116.7~S~o~N~E","116.8~S~o~N~E"/)
res2 at tmYLMode = "Explicit"
res2 at tmYLValues = (/39.6,39.7,39.8,39.9,40.0,40.1,40.2/)
res2 at tmYLLabels =
(/"39.6~S~o~N~N","39.7~S~o~N~N","39.8~S~o~N~N","39.9~S~o~N~N","40.0~S~o~N~N","40.1~S~o~N~N","41.2~S~o~N~N"/)
res2 at tiMainString = "reclassified LC"
plot(1) = gsn_csm_contour_map_ce(wks,nmask,res2)
pres = True
pres at gsnFrame = False
pres at gsnPanelLabelBar = True
pres at lbLabelFontHeightF = 0.01
pres at gsnPanelBottom = 0.05
pres at lbLabelPosition = "Center" ; label position
pres at lbLabelAlignment = "BoxCenters" ; label orientation
pres at cnLevels = (/1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,\
31,32,33/)
pres at lbLabelStrings = (/"1","2","3","4","5","6","7","8","9","10",\
"11","12","13","14","15","16","17","18","19",\
"31","32","33"/)
;pres at lbLabelStrings = ispan(0,ninfo,1)
;pres at lbLabelStride = 1
pres at lbLabelAutoStride = True
gsn_panel(wks,plot,(/1,2/),pres)
rtxt = True
rtxt at txJust = "TopLeft"
rtxt at txFontHeightF = 0.0125
; Add text: rows x columns of text (arbitrary)
; Usually must play with xx, yy and txFontHeightF
nrow = 5 ; # rows
ncol = 6 ; # columns
n = -1
xx = 0.015 ; arbitrary
do nc=0,ncol-1
yy = 0.20
do nr=0,nrow-1
n = n+1
if (n.le.(ninfo-1)) then
gsn_text_ndc (wks,info(n),xx,yy,rtxt)
yy = yy - 2*rtxt at txFontHeightF
end if
end do
xx = xx + 0.20
end do
;draw(plot)
frame(wks)
end
++++++++++++++++++++++++++++++++++
i don't know if the nested pic can show, so i attach it
i change the urban (denote with red color in left panel) into impervious
category (31,32,33,show in right panel), but eventually only 33 appeared,
31 and 32 disappeared.
the 31-32 exists in data.
can the ncl script match the landcover index automatically?
would you please give me some advices for this problem which i have been
confused some days?
thanks
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20150924/6fd61af5/attachment.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: plot_beijing_liuhuan.png
Type: image/png
Size: 100509 bytes
Desc: not available
Url : http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20150924/6fd61af5/attachment.png
More information about the ncl-talk
mailing list