爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
楼主: MeteoInfo

MeteoInfoLab脚本示例:站点数据绘制等值线

  [复制链接]

新浪微博达人勋

发表于 2016-7-19 23:57:20 | 显示全部楼层
谢谢老师!可能我没说清楚,我上面用的就是MeteoInfoLab,出错信息是这样,换成MeteoInfo java脚本执行也是一样出错。不知道跟java版本有关吗,我直接升级成 java 1.8.0_91了,Jython 是2.7.0
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-7-20 08:32:39 | 显示全部楼层
seafog 发表于 2016-7-19 23:57
谢谢老师!可能我没说清楚,我上面用的就是MeteoInfoLab,出错信息是这样,换成MeteoInfo java脚本执行也是 ...

代码中所有的<>换为[],
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-7-20 20:12:11 来自手机 | 显示全部楼层
谢谢老师,图画出来了,可发现不是雨量累加的效果,还是第一个文件的雨量
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-7-20 20:35:03 | 显示全部楼层
这是对比图,请老师再帮忙看看,谢谢!
对比图.GIF
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-7-20 20:39:15 | 显示全部楼层
左上图和下图应该是一样的,对比右上两处最为明显:一是西宁、兰州的雨区没有,二是最东北的雨区没有
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-8-2 08:32:05 | 显示全部楼层

谢谢楼主,辛苦了,保存了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-8-23 20:51:23 | 显示全部楼层
很好的帖子,留下来了。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-9-13 09:53:39 | 显示全部楼层
老师您好,我编程的目标是想实现读取文本格式的数据,实现插值,于是我对您上面的例子进行了变动这样做了
1、请问如果我读入的文件是一个文本文件,里面包含精度,纬度和数值
fn = 'E:/Temp/txt.dat'
ncol = numasciicol(fn)
nrow = numasciirow(fn)
a = asciiread(fn,shape=(nrow,ncol))
lon = a[:,0]
lat = a[:,1]
v = a[:,2]
axesm()

2、综合参考您给的例子
#griddata function - interpolate
x = arange(75, 135, 0.5)
y = arange(18, 55, 0.5)
pr = griddata((lon, lat), v, xi=(x, y), method='idw', convexhull=True)[0]
3、其他的不变,运行出来的结果怎么和降雨量的结果一样啊
E:\Temp\ABC.BMP
我是刚刚开始学习这样语言的,之前有接触过c语言,通过看你的分享收益匪浅,还有没有其他好的资料或学习网站推荐
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-9-13 10:00:53 | 显示全部楼层
gjj123 发表于 2016-9-13 09:53
老师您好,我编程的目标是想实现读取文本格式的数据,实现插值,于是我对您上面的例子进行了变动这样做了
...

没看明白到底想问什么?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-9-13 10:07:53 | 显示全部楼层
本帖最后由 gjj123 于 2016-9-13 10:12 编辑
MeteoInfo 发表于 2016-9-13 10:00
没看明白到底想问什么?


主要是想实现读取文本文件,文件格式如下,包含精度,纬度,和值
#Set data folders
# coding=utf-8
basedir = 'C:/Users/jingjing_gu/Desktop/MeteoInfo_Java_1.3.4R3_Files/MeteoInfo'
datadir = os.path.join(basedir, 'sample/MICAPS')
mapdir = os.path.join(basedir, 'map')
#Read shape files
bou2_layer = shaperead(os.path.join(mapdir, 'bou2_4p.shp'))
bou1_layer = shaperead(os.path.join(mapdir, 'bou1_4l.shp'))
china_layer = shaperead(os.path.join(mapdir, 'china.shp'))
city_layer = shaperead(os.path.join(mapdir, 'res1_4m.shp'))
#Read station data

fn = 'E:/Temp/txt.dat'
ncol = numasciicol(fn)
nrow = numasciirow(fn)
a = asciiread(fn,shape=(nrow,ncol))
lon = a[:,0]
lat = a[:,1]
v = a[:,2]

axesm()

#griddata function - interpolate
x = arange(75, 135, 0.5)
y = arange(18, 55, 0.5)
prg = griddata((lon, lat), v, xi=(x, y), method='idw', convexhull=True)[0]

#Plot
axesm()
geoshow(bou2_layer, edgecolor='lightgray')
geoshow(bou1_layer, facecolor=(0,0,255))
geoshow(city_layer, facecolor='r', size=4, labelfield='NAME', fontname=u'楷体', fontsize=16, yoffset=15)
geoshow(china_layer, visible=False)
levs = [0.1, 1, 2, 5, 10, 20, 25, 50, 100]
cols = [(255,255,255),(170,240,255),(120,230,240),(200,220,50),(240,220,20),(255,120,10),(255,90,10), \
    (240,40,0),(180,10,0),(120,10,0)]
layer = contourfm(prg, levs, colors=cols)
masklayer(china_layer, [layer])
colorbar(layer)
xlim(72, 136)
ylim(16, 55)
text(95, 52, u'全国PM2.5实况图', fontname=u'黑体', fontsize=16)
text(95, 50, u'(2010-10-14 08:00 至 2010-10-14 14:00)', fontname=u'黑体', fontsize=14)
#Add south China Sea
sc_layer = bou1_layer.clone()
axesm(position=[0.14,0.18,0.15,0.2], axison=False)
geoshow(sc_layer, facecolor=(0,0,255))
xlim(106, 123)
ylim(2, 23)
savefig("E:/Temp/ABC.BMP")
可是出来的结果不对,显示的点数并不是我txt.bat中所设的点
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表