爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 35463|回复: 68

[分享资料] grads绘制站点分布图(中文)

  [复制链接]

新浪微博达人勋

发表于 2014-8-29 19:24:23 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 lysx 于 2014-8-29 19:29 编辑

今天看到清风大侠的转帖——“GrADS中站点分布图的画法【转】http://bbs.06climate.com/forum.php?mod=viewthread&tid=7386&fromuid=21651”,心动不已,然而在站点附近只能用汉语拼音来标记站点名称,不能不说是一个缺憾。幸好最近研究了grads下的汉字输出问题,于是自己试着也写了一段程序以实现同样的功能。
以下代码,由本人免费送上

PROGRAM station
USE DFPORT
IMPLICIT NONE
REAL :: lat, lon, temp
CHARACTER ( LEN = 20 ) :: sta
INTEGER ::  k, status



OPEN ( 99 , FILE = 'cn_station.gs', STATUS = 'UNKNOWN', ACTION = 'WRITE', IOSTAT = status )
      IF ( status .EQ. 0 ) THEN
          WRITE ( 99, '(A)' ) "'reinit'"
          WRITE ( 99, '(A)' ) "'enable print cn_station.gmf'"
          WRITE ( 99, '(A)' ) "'set parea 0.3 10.7 0.5 8.0'"
          WRITE ( 99, '(A)' ) "'open fnl_20130301_00_00.ctl'"
          WRITE ( 99, '(A)' ) "'set grads off'"
          WRITE ( 99, '(A)' ) "'set grid off'"
          WRITE ( 99, '(A)' ) "'set xlopts 1 5 0.12'"
          WRITE ( 99, '(A)' ) "'set ylopts 1 5 0.12'"
          WRITE ( 99, '(A)' ) "'set xlab off'"
          WRITE ( 99, '(A)' ) "'set ylab off'"
          WRITE ( 99, '(A)' ) "'set font 1'"
          WRITE ( 99, '(A)' ) "'set mpdset cnmap cnriver'"
          WRITE ( 99, '(A)' ) "'set map 15 1 1'"
          WRITE ( 99, '(A)' ) "'set lon 73 136'"
          WRITE ( 99, '(A)' ) "'set lat 15 55'"
          WRITE ( 99, '(A)' ) "'set cmin 10000000.0'"
          WRITE ( 99, '(A)' ) "'d hgtprs'"
          WRITE ( 99, '(A)' ) "'q gxinfo'"
          WRITE ( 99, '(A)' ) "xx=sublin(result,3)"
          WRITE ( 99, '(A)' ) "yy=sublin(result,4)"
          WRITE ( 99, '(A)' ) "x1=subwrd(xx,4)"
          WRITE ( 99, '(A)' ) "x2=subwrd(xx,6)"
          WRITE ( 99, '(A)' ) "x=x1+(x2-x1)/2"
          WRITE ( 99, '(A)' ) "y1=subwrd(yy,4)"
          WRITE ( 99, '(A)' ) "y2=subwrd(yy,6)"
          WRITE ( 99, '(A)' ) "y=y1-0.5"
          WRITE ( 99, '(A)' ) "'axis -type b  -position i -start 75 -end 135 -interval 10 -sinterval 5 -suffix `3.'"
          WRITE ( 99, '(A)' ) "'axis -type l  -position i -start 20 -end 50 -interval 5 -sinterval 5 -suffix `3.'"
          WRITE ( 99, '(A)' ) "'axis -type t  -position i -start 75 -end 135 -interval 10 -sinterval 5 -suffix `3.'"
          WRITE ( 99, '(A)' ) "'axis -type r  -position i -start 20 -end 50 -interval 5 -sinterval 5 -suffix `3.'"
         
          OPEN ( 19, FILE = '160_station.txt', STATUS = 'OLD', ACTION = 'READ', IOSTAT = status )
                IF ( status .EQ. 0 ) THEN
                     DO
                        READ ( 19, *, IOSTAT = status ) temp, temp, lat, lon, sta
                        IF ( status .NE. 0 ) EXIT
                        WRITE ( 99, '(A8, 2F10.4, A10 )' ) "'q w2xy ", lon, lat, "'"
                        WRITE ( 99, '(A)' ) "x=subwrd(result,3)"
                        WRITE ( 99, '(A)' ) "y=subwrd(result,6)"
                        k = LEN_TRIM ( sta )                                                
                        WRITE ( 99, '(A18, A<K>, A15 )' ) " 'writehz 'x' 'y' ", TRIM ( sta ), " 2 1 2'"
                        WRITE ( 99, '(A)' ) "'draw mark 2 'x' 'y' 0.05'"
                     END DO
                ELSE
                     WRITE ( *, '(/, A, /)' ) 'WARNING:: the file 160_station.txt is not opened!!!'
                END IF
          CLOSE ( 19 )
          WRITE ( 99, '(A)' ) " 'southsea_last 0 11 0 8.5' "
          WRITE ( 99  , '(A)' ) "'printim cn_station.png white X1366 Y768'"
          WRITE ( 99, '(A)' ) "'print'"
          WRITE ( 99, '(A)' ) "'disable print'"
          WRITE ( 99, '(A)' ) "'quit'"
      ELSE
          WRITE ( *, '(/, A, /)' ) 'WARNING:: the file cn_station.gs is not opened!!!'
      END IF
CLOSE ( 99 )



CALL SYSTEM ( 'grads -lbc cn_station.gs' )
END PROGRAM station
PS:红色代码为FORTRAN调用grads的方式
看看图吧:




cn_station.png

评分

参与人数 7金钱 +54 贡献 +17 收起 理由
nikochen + 1 很给力!
小短腿 + 1 很给力!
水静流深 + 2 很给力!
尽头的尽头 + 15 + 5
river + 10 + 2 赞一个!
二爷名声在外 + 10 + 5 很给力!
mofangbao + 15 + 5 赞一个!

查看全部评分

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

新浪微博达人勋

0
早起挑战累计收入
发表于 2014-8-29 20:26:31 | 显示全部楼层
站点分布图还有升级版的 楼主可以在论坛搜索  多谢分享~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 32430
发表于 2014-8-29 20:29:34 | 显示全部楼层
么么哒
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2014-8-29 21:11:15 | 显示全部楼层
楼主高手啊,曾经我参照清风大侠的只画出了拼音的分布图就佩服自己了,现在是膜拜了!{:5_213:}{:5_213:}
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-8-29 21:18:16 | 显示全部楼层
可否详细说一下怎么使用啊?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-8-29 21:28:49 | 显示全部楼层
一个不小心 发表于 2014-8-29 21:11
楼主高手啊,曾经我参照清风大侠的只画出了拼音的分布图就佩服自己了,现在是膜拜了!{: ...

谬赞了,让我情何以堪啊!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-8-29 21:29:00 | 显示全部楼层
一个不小心 发表于 2014-8-29 21:11
楼主高手啊,曾经我参照清风大侠的只画出了拼音的分布图就佩服自己了,现在是膜拜了!{: ...

谬赞了,让我情何以堪啊!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-8-29 21:30:57 | 显示全部楼层
小傅之追梦 发表于 2014-8-29 21:18
可否详细说一下怎么使用啊?

我的程序写的比较清楚了吧?应该比较简单吧!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-8-29 21:32:01 | 显示全部楼层
mofangbao 发表于 2014-8-29 20:26
站点分布图还有升级版的 楼主可以在论坛搜索  多谢分享~

嗯,谢谢,我去看看!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-8-29 21:32:35 | 显示全部楼层
mofangbao 发表于 2014-8-29 20:26
站点分布图还有升级版的 楼主可以在论坛搜索  多谢分享~

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

本版积分规则

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

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

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