爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
楼主: menglhl

[讨论] [求助帖]全球0.5*0.5栅格数据如何处理成国家-年份

[复制链接]

新浪微博达人勋

 楼主| 发表于 2016-9-6 15:08:27 | 显示全部楼层
本帖最后由 menglhl 于 2016-9-6 15:10 编辑
MeteoInfo 发表于 2016-9-5 20:22
建议你仔细看看这里:http://www.meteothinker.com/docs/meteoinfolab/userguide/data_tutorial.html

王老师您好,非常感谢您的帮助。不过还要麻烦您给看一下新的问题
2.PNG 为什么会no attribute
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-9-6 15:38:16 | 显示全部楼层
menglhl 发表于 2016-9-6 15:08
王老师您好,非常感谢您的帮助。不过还要麻烦您给看一下新的问题
为什么会no attribute

un.getShapes()
改为:
un.shapes()

un.getCellValue('NAME_LONG', i)
改为:
un.cellvalue('NAME_LONG', i)
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-9-6 15:41:18 | 显示全部楼层
menglhl 发表于 2016-9-6 15:08
王老师您好,非常感谢您的帮助。不过还要麻烦您给看一下新的问题
为什么会no attribute

还有 '\'在很多编程语言里都是转义符,将
un = shaperead('E:\New folder\countries.shp')
改为:
un = shaperead(r'E:\New folder\countries.shp')
或者:
un = shaperead('E:\\New folder\\countries.shp')
或者:
un = shaperead('E:/New folder/countries.shp')
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-9-8 11:04:02 | 显示全部楼层
本帖最后由 menglhl 于 2016-9-8 11:05 编辑
MeteoInfo 发表于 2016-9-6 15:41
还有 '\'在很多编程语言里都是转义符,将
un = shaperead('E:\New folder\countries.shp')
改为:

非常感谢王老师的详细指导!

但是不知道是不是因为数据的经纬度精度(resolution)是0.5*0.5,缺测值达到了66%,所以运行出来结果都是NaN。不知道这个问题该怎么解决呢? 1.PNG
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-9-8 11:35:50 | 显示全部楼层
menglhl 发表于 2016-9-8 11:04
非常感谢王老师的详细指导!

但是不知道是不是因为数据的经纬度精度(resolution)是0.5*0.5,缺测值达 ...

你把数据文件发给我帮你看看
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-9-8 12:03:05 | 显示全部楼层
本帖最后由 menglhl 于 2016-9-8 12:06 编辑
MeteoInfo 发表于 2016-9-8 11:35
你把数据文件发给我帮你看看

王老师您好,因为数据文件太大我上传到google drive上了,能不能麻烦您去下载看看。非常感谢!

https://drive.google.com/file/d/0Bxi-PNumegYnSWM2U1p0czdxbG8/view?usp=sharing --- 未处理过的原始数据

https://drive.google.com/file/d/0Bxi-PNumegYnT2pORmpYbDRiT0U/view?usp=sharing  --- 已处理成年平均气温的数据文件,variable name: yav
这是原始数据文件(air.mon.mean.v401.nc)的数据结构信息 original1.PNG original2.PNG
这是处理过后数据文件(air.year.mean.nc)的数结构信息 processed.PNG
谢谢!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-9-8 12:32:15 | 显示全部楼层
menglhl 发表于 2016-9-8 12:03
王老师您好,因为数据文件太大我上传到google drive上了,能不能麻烦您去下载看看。非常感谢!

https: ...

google我们这里上不去,你放在百度云上共享吧。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-9-8 13:06:32 | 显示全部楼层
MeteoInfo 发表于 2016-9-8 12:32
google我们这里上不去,你放在百度云上共享吧。

不好意思,我的错。
这是百度云共享链接:
https://pan.baidu.com/s/1kV6l763   --- 未处理过的原始文件

https://pan.baidu.com/s/1cqoSRc    --- 已处理成年平均气温的数据文件,variable name: yav

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

新浪微博达人勋

发表于 2016-9-8 15:03:52 | 显示全部楼层
menglhl 发表于 2016-9-8 13:06
不好意思,我的错。
这是百度云共享链接:
https://pan.baidu.com/s/1kV6l763   --- 未处理过 ...

你是数据经度范围是0 - 360度,而shape文件中国家行政界线的范围是-180 - 180,导致-180 - 0度范围内的国家没有数据。需要在读取数据后按180度分隔为两个数据,然后再重新拼接起来形成-180 - 180度的数据,然后再按照国家进行平均。当然有些国家太小,加之数据分辨率是0.5度,所以该国家内一个格点数据都没有,会形成NaN值。下面的脚本供参考:

  1. #Add a grid data
  2. f = addfile('E:/Temp/air.mon.mean.v401.nc')
  3. tdata = f['air'][0,:,:]
  4. d1 = tdata[:,[180,360]]
  5. d2 = tdata[:,[0,179.75]]
  6. tdata = d1.join(d2, 1)
  7. n = tdata.dimlen(1)
  8. lon = linspace(-179.75, 179.75, n)
  9. tdata.setdimvalue(1, lon)
  10. #Read world shape file
  11. world = shaperead('D:/Temp/map/country1.shp')
  12. #Average temporature for each country
  13. i = 0
  14. for rpoly in world.shapes():
  15.     name = world.cellvalue('CNTRY_NAME', i)
  16.     mdata = tdata.maskout(rpoly)
  17.     tave = mdata.ave()
  18.     tmin = mdata.min()
  19.     tmax = mdata.max()
  20.     print '%i: %s, Ave: %.2f, Min: %.2f, Max: %.2f' %(i, name, tave, tmin, tmax)
  21.     i += 1

  22. #Plot
  23. axesm()
  24. world = shaperead('D:/Temp/map/country1.shp')
  25. geoshow(world)
  26. geoshow(world, edgecolor=[0,0,255])
  27. #layer = contourfm(tdata,20)
  28. layer = imshowm(tdata, 20)
  29. title('Temporature distribution map')
  30. colorbar(layer)


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

新浪微博达人勋

 楼主| 发表于 2016-9-8 16:28:44 | 显示全部楼层
MeteoInfo 发表于 2016-9-8 15:03
你是数据经度范围是0 - 360度,而shape文件中国家行政界线的范围是-180 - 180,导致-180 - 0度范围内的国 ...

终于做出结果了

非常感谢您这几天来的帮助,每个问题都能得到详尽的解答,不胜感激!而且您的软件也很实用,值得好好研究一下,有问题再向您请教。

再次感谢您对我论文的帮助。

Best regards.
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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