爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
楼主: MeteoInfo

MeteoInfoLab脚本示例:160站数据绘图

  [复制链接]

新浪微博达人勋

 楼主| 发表于 2016-9-10 21:23:43 | 显示全部楼层
︶ㄣ安定■丶 发表于 2016-9-10 21:14
王老师,按照您的代码,前面两个报错,错误如下,第三个能顺利出图!用的是1.3.6最新版本

错误提示第29行出错,你看看第29行代码是什么?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-9-11 09:58:13 | 显示全部楼层
MeteoInfo 发表于 2016-9-10 21:23
错误提示第29行出错,你看看第29行代码是什么?

我知道了,是地图里面少了点东西。。嘿嘿,谢谢王老师
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-9-15 19:33:35 | 显示全部楼层
谢谢楼主!
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2016-10-16 22:09:02 | 显示全部楼层
谢谢~大赞!
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2017-1-12 16:48:08 | 显示全部楼层
本帖最后由 zoevy9 于 2017-1-12 16:53 编辑

楼主,我根据您的方法来画一个地方的温度图,以揭阳为例,一直出现错误,您能帮忙指正下吗     代码如下:
  1. stfn = 'D:/jieyang/stations.csv'
  2. table = readtable(stfn, delimiter=',', format='%f%f%f')
  3. lon = table['Lon']
  4. lat = table['Lat']
  5. T = table['Temp']

  6. axesm()
  7. bou2_layer = shaperead('D:/jieyang/JieyangLine.shp')
  8. bou1_layer = shaperead('D:/ljieyang/JieyangPoly.shp')

  9. geoshow(bou2_layer)
  10. geoshow(bou1_layer)
  11. layer = contourfm(lon, lat, T, 2)

  12. colorbar(layer)
复制代码

jieyang.rar

19.38 KB, 下载次数: 2, 下载积分: 金钱 -5

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-1-12 19:58:19 | 显示全部楼层
zoevy9 发表于 2017-1-12 16:48
楼主,我根据您的方法来画一个地方的温度图,以揭阳为例,一直出现错误,您能帮忙指正下吗     代 ...

需要对readtable函数有个基本了解,其中的format参数定义了每一个字段(数据中的每一列)的数据类型:字符型用%s,整形用%i,浮点型用%f。如果连续几列数据类型相同可以在中间加一个重复次数。对于你的数据可以用下面的语句将数据读到一个表格中:
table = readtable(stfn, delimiter=',', format='%s%4f')

另外,对于站点数据不能直接绘制等值线图,可以绘制散度图:
layer = scatterm(lon, lat, T)

要绘制等值线图必选先将站点数据插值为格点数据,具体参考此贴1楼的代码。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-1-13 11:31:05 | 显示全部楼层
MeteoInfo 发表于 2017-1-12 19:58
需要对readtable函数有个基本了解,其中的format参数定义了每一个字段(数据中的每一列)的数据类型:字 ...

感谢楼主这么详细的解答,根据您的代码我修改了下我的,之后在画等值线图的时候还是有些问题,不知是不是我插值插错了哪里?
代码如下
  1. stfn = 'D:/jieyang/stations.csv'



  2. table = readtable(stfn, delimiter=',', format='%s%4f')
  3. lon = table['Lon']
  4. lat = table['Lat']
  5. T = table['Temp']

  6. x = arange(115.5, 116.7, 0.11)
  7. y = arange(22.8, 23.9, 0.11)
  8. gtemp,gx,gy = griddata((lon, lat), T, xi=(x, y), method='idw', pointnum= 4)

  9. axesm()
  10. bou2_layer = shaperead('D:/jieyang/JieyangLine.shp')
  11. bou1_layer = shaperead('D:/jieyang/JieyangPoly.shp')

  12. geoshow(bou2_layer)
  13. geoshow(bou1_layer)
  14. layer = contourfm(x, y, T, 20)

  15. colorbar(layer)
复制代码
QQ图片20170113113553.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-1-13 12:18:08 | 显示全部楼层
zoevy9 发表于 2017-1-13 11:31
感谢楼主这么详细的解答,根据您的代码我修改了下我的,之后在画等值线图的时候还是有些问题,不知是不是 ...

你对数据进行了格点化,但画图的时候用的还是站点数据,相应的语句改为

layer = contourfm(gx, gy, gtemp, 20)

另外,站点数据格点化必然会带来误差,怎么设置griddata中的参数需要多尝试,比如去掉pointnum参数。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-1-13 15:27:31 | 显示全部楼层
MeteoInfo 发表于 2017-1-13 12:18
你对数据进行了格点化,但画图的时候用的还是站点数据,相应的语句改为

layer = contourfm(gx, gy, gt ...

感谢楼主细心的回复,我再试试改改参数
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-2-19 19:13:43 | 显示全部楼层
zoevy9 发表于 2017-1-13 15:27
感谢楼主细心的回复,我再试试改改参数

老师,您好
请问如果只要站点数据插值成0.5*0.5度的格点数据,应该怎么实现?谢谢
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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