加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

NCL画站点图思路

(2014-03-06 18:36:26)
分类: NCL学习

参考:http://bbs.06climate.com/forum.php?mod=viewthread&tid=11417&extra=&page=1

 

1、读取站点数据

lines asciiread("e:\a.txt",-1,"string") ;站点文件绝对路径e:\a.txt,为ascii文件

;即打开后可显示正常文字的txt、dat等文件

;-1表示不考虑维数

;string表示读入的数据视作字符串类型

;得到的lines为n*1维的数组,n为行数

lon stringtofloat(str_get_field(lines(0),2," ")) ;读取第一行第2个数据,并转换为浮点型

 

2、站点插值到网格点

a) 定义经纬度变量

olon new(51,"float") ;定义横坐标(经度)有51个格点,值均为浮点型

olat new(31,"float") ;定义纵坐标(纬度)有31个格点

 

 

do i=0.50 ;对新建的经纬度赋值

olon(j) 110+j*0.25 ;经度范围为110°~122.5°E,格点精度为0.25°

end do

 

do i=0,30

olat(j) 10+j*0.25 ;纬度范围为10°~17.5°N,格点精度为0.25°

end do

 

olon!0          "lon" ;经度为一维变量,第一维名称为lon

olon@long_name  "lon" ;告诉ncl第一维代表经度

olon@units      "degrees-east" ;以向东为正方向

olon&lon        olon ;经度的值取olon

 

olat!0          "lat"

olat@long_name  "lat"

olat@units      "degrees_north"

olat&lat        olat

 

b) 定义与站点对应的格点变量

grid_T new((/31,51/),"float") ;定义格点场为31*51的二维变量

 

c) 插值

T@_FillValue 9999.0 ;定义原变量T中的缺测值

;凡是记录值等于9999.0的点均忽略

rscan (/.5 .3 .15 .05/) ;定义影响半径数组

;数值单位为度,数组内数值依次递减
;数值越大,插值得到的结果越平滑

grid_T obj_anal_ic_deprecated(lon,lat,T,olon,olat,rscan,False)

;利用Cressman插值,得到插值后的格点场grid_T

 

3、设置resource,绘制grid_T

 

另:标记站点位置的画法

1. 用map gsn_csm_map(wks,res)画出地图

2. 读入站点文件的经纬度lon0,lat0

3. 设置站点的resource,令其为mkres

mkres True

mkres@gsMarkerIndex 16 ;标记的种类,16号为填色圆圈

mkres@gsMarkerSizeF 0.003 ;设定标记的大小

mkres@gsMarkerColor 230 ;设定标记颜色为colormap的第231个颜色

 

gsn_polymarker(wks,map,lon0,lat0,mkres) ;绘制


http://bbs.06climate.com/data/attachment/album/201403/06/183018lsdtt8yonxnytlld.png

Marker Table

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有