登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 佳佳 于 2012-11-29 20:20 编辑
ncl绘制南海小地图及完整国界 此程序说明如下:
1、利用国家地理数据库的中国边界数据单独画中国边界图。包括中国完整边界,即"China","Disputed area between India andChina","Arunachal Pradesh"三个地区。而美国ncl中关于中国边界的数据不包括克什米尔地区与中印争议边界。
2、利用国家地理数据库海南岛屿单独绘制海南诸岛,并添加小地图。
;国家地理信息系统数据库
;包括中国完整边界数据及海南诸岛 ;{***********************************************************************************************
;***********************************************************************************************
;***********************************************************************************************
f = addfile("bou1_4l.shp","r") ; Open shapefile
;
; Read data off shapefile
;
segments = f->segments
geometry = f->geometry
segsDims = dimsizes(segments)
geomDims = dimsizes(geometry)
;
; Read global attributes
;
geom_segIndex = f@geom_segIndex
geom_numSegs = f@geom_numSegs
segs_xyzIndex = f@segs_xyzIndex
segs_numPnts = f@segs_numPnts
numFeatures = geomDims(0)
;************************************************************************************************
;************************************************************************************************
;************************************************************************************************} ;{************************************************************************************************
;*************************************China********************************************************
;*********************************************************************************************** ;绘制中国边界 lines1 =new(segsDims(0),graphic) ; array to hold polylines
lines2 = new(segsDims(0),graphic) ; array to hold polylines lon1 = f->x
lat1 = f->y
segNum = 0 ; Counter for addingpolylines
do i=0, numFeatures-1
startSegment = geometry(i, geom_segIndex)
numSegments = geometry(i, geom_numSegs)
do seg=startSegment, startSegment+numSegments-1
startPT = segments(seg,segs_xyzIndex)
endPT = startPT +segments(seg, segs_numPnts) - 1
lines1(segNum) =gsn_add_polyline(wks, base_map1 , lon1(startPT:endPT), \
lat1(startPT:endPT), plres)
lines2(segNum) =gsn_add_polyline(wks, base_map2 , lon1(startPT:endPT), \
lat1(startPT:endPT), plres)
segNum = segNum + 1
end do
end do
; if(isatt(res,"gsnDraw").and..not.res@gsnDraw) then
; draw(base_map1)
; end if
;************************************************************************************************
;************************************************************************************************
;************************************************************************************************}
;绘制附加小地图
; res@gsnCenterString ="July (1950-2006)"
;res@tmXBLabelsOn = True
;plot3 = gsn_csm_contour_map_ce(wks,ts3,res)
;res@gsnCenterString ="October (1950-2006)"
;plot4 = gsn_csm_contour_map_ce(wks,ts4,res)
; common label bar
mpres = True
mpres@gsnFrame = False
mpres@gsnDraw = False
; Tickmark stuff
; mpres@pmTickMarkDisplayMode = "Always"
; mpres@tmXBLabelFontHeightF = 0.01 lon1 = f->x
lat1 = f->y
segNum = 0 ; Counter for addingpolylines
do i=0, numFeatures-1
startSegment = geometry(i, geom_segIndex)
numSegments = geometry(i, geom_numSegs)
do seg=startSegment, startSegment+numSegments-1
startPT = segments(seg,segs_xyzIndex)
endPT = startPT +segments(seg, segs_numPnts) - 1
lines(segNum) =gsn_add_polyline(wks, map1 , lon1(startPT:endPT), \
lat1(startPT:endPT), plres1)
liness(segNum) =gsn_add_polyline(wks, map2 , lon1(startPT:endPT), \
lat1(startPT:endPT), plres1) segNum = segNum + 1
end do
end do
; if(isatt(res,"gsnDraw").and..not.res@gsnDraw) then
; draw(map)
; end if ;************************************************************************************************
;************************************************************************************************
;************************************************************************************************}
;将小地图加至大地图的右下角
amres = True
amres@amParallelPosF = 0.494 ; -0.5 is the left edge of the plot.
amres@amOrthogonalPosF =0.493 ; -0.5 is the top edge of the plot.
amres@amJust = "BottomRight" map_anno1 =gsn_add_annotation(base_map1, map1, amres) ; Attach map to map.
map_anno2 = gsn_add_annotation(base_map2, map2, amres)
|