爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 3367|回复: 9

[脚本编辑] grads色彩设置出图错误,不明白为什么?

[复制链接]

新浪微博达人勋

发表于 2018-4-23 21:05:06 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
'run define_colors.gs''set clevs -4 -3 -2 -1 1 2 3 4''set ccols 26 25 24 22 41 43 44 45 46'和不用,出图差别很大,前者明显有错误,但不知道哪里错了?第一张图代码:
  1. 'reinit'
  2. 'open D:\matlabht\pdsi\pdsi1991-2014.ctl'
  3. 'set mpdset cnbasemap'
  4. 'set lon 70 140'
  5. 'set lat 10 60'
  6. 'set lev 0'
  7. 'set grads off'
  8. 'set gxout shaded'
  9. 'set grid off'
  10. 'set xlint -10'
  11. 'set ylint -10'
  12. 'set xlopts 1 4 0.2'
  13. 'set ylopts 1 4 0.2'
  14. 'run define_colors.gs'
  15. 'set clevs -4 -3 -2 -1 1 2 3 4'
  16. 'set ccols 26 25 24 22 41 43 44 45 46'
  17. 'cnbasemap ave(pdsi,t=1,t=114)'
  18. 'cbarn'
  19. 'run southsea.gs'
  20. 'printim D:\matlabht\tp\pdsi000.png white'
  21. pull dummy
  22. 'c'
复制代码
第二张图代码:
  1. 'reinit'
  2. 'open D:\matlabht\pdsi\pdsi1991-2014.ctl'
  3. 'set mpdset cnbasemap'
  4. 'set lon 70 140'
  5. 'set lat 10 60'
  6. 'set lev 0'
  7. 'set grads off'
  8. 'set gxout shaded'
  9. 'set grid off'
  10. 'set xlint -10'
  11. 'set ylint -10'
  12. 'set xlopts 1 4 0.2'
  13. 'set ylopts 1 4 0.2'
  14. 'cnbasemap ave(pdsi,t=1,t=114)'
  15. 'cbarn'
  16. 'run southsea.gs'
  17. 'printim D:\matlabht\tp\pdsi000.png white'
  18. pull dummy
  19. 'c'
复制代码


第一张图

第一张图

第二张图

第二张图
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-4-23 22:03:58 | 显示全部楼层
应该是grd中生成的数据有问题。所以最后等值线的大小不对。
密码修改失败请联系微信:mofangbao
回复 支持 0 反对 1

使用道具 举报

新浪微博达人勋

发表于 2018-4-24 09:49:04 | 显示全部楼层
'set clevs -4 -3 -2 -1 1 2 3 4'  设定的数值与图2中数值数量级不一致,检查数据
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-4-24 10:00:01 | 显示全部楼层
柚子皮 发表于 2018-4-24 09:49
'set clevs -4 -3 -2 -1 1 2 3 4'  设定的数值与图2中数值数量级不一致,检查数据

对的,生成的grd文件数据有问题,但不知道错误出现在哪里?这是我的脚本,麻烦您帮我看看数据生成过程有什么问题。脚本的目的是将三个月平均数据的nc文件先求出年平均,再综合写入一个grd文件中。逻辑清晰,不长,急求指导。
  1. 'reinit'
  2. 'set gxout fwrite'
  3. 'set fwrite d:/matlabht/pdsi/pdsi1901-2014.grd'
  4. 'sdfopen d:/matlabht/remap05x05.pdsi.mon.mean.selfcalibrated_190001-194912.nc'
  5. 'sdfopen d:/matlabht/remap05x05.pdsi.mon.mean.selfcalibrated_195001-199912.nc'
  6. 'sdfopen d:/matlabht/remap05x05.pdsi.mon.mean.selfcalibrated_200001-201412.nc'

  7. 'set dfile 1'
  8. tt=13
  9. while(tt<600)
  10.     'set lon 70 140'
  11.     'set lat 10 60'
  12.     'set lev 0'
  13.     'set t 'tt''
  14.     'd ave(pdsi,t='tt',t='tt'+11)'
  15.     tt=tt+12
  16. endwhile

  17. 'set dfile 2'
  18. tt=1
  19. while(tt<600)
  20.     'set lon 70 140'
  21.     'set lat 10 60'
  22.     'set lev 0'
  23.     if(tt=1)
  24.         'set t 'tt''
  25.         'd ave(pdsi,t='tt',t='tt'+11)'
  26.         tt=tt+12
  27.     else if(tt>12)
  28.         'set t 'tt''
  29.         'd ave(pdsi,t='tt',t='tt'+11)'
  30.         tt=tt+12
  31.     endif
  32. endwhile

  33. 'set dfile 3'
  34. tt=1
  35. while(tt<180)
  36.     'set lon 70 140'
  37.     'set lat 10 60'
  38.     'set lev 0'
  39.     if(tt=1)
  40.         'set t 'tt''
  41.         'd ave(pdsi,t='tt',t='tt'+11)'
  42.         tt=tt+12
  43.     else if(tt>12)
  44.         'set t 'tt''
  45.         'd ave(pdsi,t='tt',t='tt'+11)'
  46.         tt=tt+12
  47.     endif
  48. endwhile
  49. 'disable fwrite'
  50. ;
复制代码
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-4-24 10:03:16 | 显示全部楼层
柚子皮 发表于 2018-4-24 09:49
'set clevs -4 -3 -2 -1 1 2 3 4'  设定的数值与图2中数值数量级不一致,检查数据

描述文件如下:打开什么的都没问题。
dset D:\matlabht\pdsi\pdsi1901-2014.grd
undef -99999
title  1991-2014 annual average sc_PDSI
xdef 141 linear 70 0.5
ydef 101 linear 10 0.5
zdef 1 linear 0 1
tdef 114 linear 00Z01JAN1901 1yr
vars  1
pdsi=>pdsi  0 t,y,x Monthly Self-calibrated Palmer Drought Severity Index using Peman-Monteith PE
ENDVARS
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-4-25 11:00:33 | 显示全部楼层
LemonTree007 发表于 2018-4-24 10:00
对的,生成的grd文件数据有问题,但不知道错误出现在哪里?这是我的脚本,麻烦您帮我看看数据生成过程有 ...

建议现将pdsi的三个时间段写入一个数组,构成连续的月平均资料,然后直接求一次年平均。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-4-25 12:26:50 | 显示全部楼层
柚子皮 发表于 2018-4-25 11:00
建议现将pdsi的三个时间段写入一个数组,构成连续的月平均资料,然后直接求一次年平均。

但是我不会定义多维数组,您能给个简单的类似的例子吗?z主要是不知道如何连续读入,分三个nc文件的话,数组会自动接起来吗?
‘set lon 70 140’
'set lat 10 60'
'set lev 0'
'set t 1 1368'
‘set dfile 1’
'define sc_pdsi=pdsi'
‘set dfile 2’
'define sc_pdsi=pdsi'
‘set dfile 3’
'define sc_pdsi=pdsi'
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-4-25 12:27:27 | 显示全部楼层
柚子皮 发表于 2018-4-25 11:00
建议现将pdsi的三个时间段写入一个数组,构成连续的月平均资料,然后直接求一次年平均。

set t 1 1380'
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-4-25 13:34:35 | 显示全部楼层
本帖最后由 柚子皮 于 2018-4-25 13:39 编辑

搜论坛看看,我对grads的语法已经模糊了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-4-25 16:08:43 | 显示全部楼层
柚子皮 发表于 2018-4-25 13:34
搜论坛看看,我对grads的语法已经模糊了

好的,我再看看
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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