爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
楼主: breeze_li

[图形美化] grads绘制市县地图问题

[复制链接]

新浪微博达人勋

发表于 2016-9-8 09:17:16 | 显示全部楼层
breeze_li 发表于 2016-9-7 09:43
我发的帖子用的是maskout,那个插值下来的数据不能完美吻合边界,填色之后边界与阴影之间有空白间隙, ...

这个问题我前面和你讲过啦,解决办法就是自己写一个程序生成格点背景场。你自己尝试下,遇到问题再讨论。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-9-8 11:18:41 | 显示全部楼层
四叶草 发表于 2016-9-8 09:17
这个问题我前面和你讲过啦,解决办法就是自己写一个程序生成格点背景场。你自己尝试下,遇到问题再讨论。

你是说不用meteoinfo生成的那个格点场,自己写一个,你帮我看下我这个哪里有问题:
fortran生成格点场的程序:
Program gen_grid
Implicit none  
!这里是定义的变量
integer i,j  
integer,parameter::x=31,y=21
real grid
!程序开始
grid=1.0  
Open(1,file='mask.dat',status='replace',form='binary')
Do i=1,y   
Do j=1,x
  Write(1)grid   
Enddo
Enddo
close(1)  
!程序结束
End

格点场ctl:
DSET  mask.dat
TITLE Mask data
UNDEF -9999.0
XDEF 31 LINEAR 107.0 0.1
YDEF 21 LINEAR 33.0 0.1
ZDEF 1 LINEAR 1.0 1.0
TDEF 1 linear 01may2011 1mo
VARS 1
  mask 0 99 background mask data (99)
ENDVARS

gs:
'reinit'
'open e:/project/temp/sta.ctl'
'open e:/project/temp/xian_mask.ctl'
'set mpdraw off'
'set lon 107.6 109.9'
'set lat 33.6 34.8'
'set ccolor 1'
'set csmooth on'
'set gxout shaded'
'd smth9(maskout(oacres(mask.2,temper,2),mask.2(t=1)))'
'set gxout contour'
'd smth9(maskout(oacres(mask.2,temper,2),mask.2(t=1)))'
'draw shp e:/project/temp/xian.shp'
'e:/project/temp/output.gs'
'cbar_interp 0.75 1 1'
'printim e:/project/temp/xian_mask.png white'
;
是这个意思么?这是绘制出来的图,边界外的数据怎么清楚,这个色标为什么没数字,怎么样做出meteoinfo制作出来的格点场?
xian_mask.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-9-8 12:36:13 | 显示全部楼层
breeze_li 发表于 2016-9-8 11:18
你是说不用meteoinfo生成的那个格点场,自己写一个,你帮我看下我这个哪里有问题:
fortran生成格点场的 ...

你的做法对呢!清除边界外的数据就用province-basemap啦。色标无数据,你试试cbarn嘛
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-9-8 12:49:48 | 显示全部楼层
本帖最后由 breeze_li 于 2016-9-8 12:53 编辑
四叶草 发表于 2016-9-8 12:36
你的做法对呢!清除边界外的数据就用province-basemap啦。色标无数据,你试试cbarn嘛


那么问题来了,我绘制的是西安市地图,使用province-basemap的话还需要xian_out.txt,就是不知道这个该怎么得到?我用meteoinfo制作的西安市地图格点场不用province-basemap,用maskout函数直接就屏蔽边界外数据了,就是绘图不吻合边界,我能不能自己生成一个格点场,使用maskout方法就自动屏蔽外边界呢?
换了cbarn之后可以显示数字了,这是cbar_interp的bug吗?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-9-8 13:00:32 | 显示全部楼层
breeze_li 发表于 2016-9-8 12:49
那么问题来了,我绘制的是西安市地图,使用province-basemap的话还需要xian_out.txt,就是不知道这个该 ...

1、xian_out.txt文件MicAPS里有,抑或你自己用meteoinfo做一个,但是直接出来的好像不能用,需要自己改动下数据排列方向,我记得是逆时针排列,因为好久没接触,所以记不清啦。
2、maskout函数怎么用?你自己仔细看看函数说明。
3、meteoinfo出的格点场,maskout后还是有锯齿,又回到了当初的问题?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-9-8 13:31:15 | 显示全部楼层
breeze_li 发表于 2016-9-8 12:49
那么问题来了,我绘制的是西安市地图,使用province-basemap的话还需要xian_out.txt,就是不知道这个该 ...

西安.JPG

上图就是用西安边界数据province-bansemap后的结果,实际运用中,白色部分就是屏蔽的,黑色部分保留。
我都是做了个xian_out.txt 文件了,但是市、县的边界数据不方便在家园里传,你自己研究下,如果做不出来,我可以单独发给你。

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

新浪微博达人勋

 楼主| 发表于 2016-9-8 13:33:42 | 显示全部楼层
四叶草 发表于 2016-9-8 13:31
上图就是用西安边界数据province-bansemap后的结果,实际运用中,白色部分就是屏蔽的,黑色部分保留 ...

嗯,这个是用什么做的,告诉我方法就好
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-9-8 13:44:48 | 显示全部楼层
breeze_li 发表于 2016-9-8 13:33
嗯,这个是用什么做的,告诉我方法就好

meteoinfo来的最快,你直接用西安的shp文件生成边界数据,之后删掉无关的信息就行啦!另外,直接输出的数据好像不能直接用,需要自己编程重新读写一遍,至于是什么原因,我暂时不清楚。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-9-8 18:48:22 | 显示全部楼层
四叶草 发表于 2016-9-8 13:44
meteoinfo来的最快,你直接用西安的shp文件生成边界数据,之后删掉无关的信息就行啦!另外,直接输出的数 ...

用shp文件生成边界数据?是边界数据文本文件吗,能说稍微详细点吗。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-9-8 19:01:20 | 显示全部楼层
breeze_li 发表于 2016-9-8 18:48
用shp文件生成边界数据?是边界数据文本文件吗,能说稍微详细点吗。

shp文件导出格式为ASCII值
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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