爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
楼主: breeze_li

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

[复制链接]

新浪微博达人勋

 楼主| 发表于 2016-9-20 09:39:28 | 显示全部楼层
四叶草 发表于 2016-9-19 18:23
这个程序我没看出什么毛病,这个问题暂时不能帮你解决你自己先研究研究

这个解决了,就是站点太多,每个都要修改边界数据,ctl。现在想为每一个市县在地图上标注地名,一个一个写太麻烦,照着论坛的帖子改了fortran程序,在写入writehz与地名时出现乱码,怎么回事?
fortran程序:
program main
integer stn
parameter(stn=10) !定义一个常数,用以存储站点数量
real sta(stn,2)    !用来存储经纬度
character(len=10) st_name(20)  !存储站名或站号
integer i
character(len=80) str(7)  !定义一个长度为80的数组
real tmp
open(1,file="e:/project/temp1/zd.txt")     !站点文件  分别是 经纬度 站点名或站号
do i = 1 , stn
read(1,*) sta(i,1) , sta(i,2) , st_name(i)
enddo
open(2,file="e:/project/temp1/out3.txt")
str(1) = "'q w2xy "
str(2) = "'"
str(3) = "x=subwrd(result,3)"
str(4) = "y=subwrd(result,6)"
str(5) = "'draw mark 3 "
str(6) = " 'x' 'y' "
str(7) = "'"
str(8) = "writehz "
str(9) = "1 2 1 0.9 0.5 0"
str(10) = "'"
tmp = 0.1              !表示标记的大小,这里设置为0.1
do i = 1, stn
write(2,'(a8\f7.2,f7.2\a1/)') str(1),sta(i,1),sta(i,2),str(2)
write(2,'(a19/a19)') str(3),str(4)
write(2,'(a13\a9\f3.1\a1/)') str(5),str(6),tmp,str(7)
write(2,'(a1\a9\a9\a6\a13\a1)') str(7),str(8),str(6),st_name(i),str(9),str(10)
enddo
close(1)
close(2)
end
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-9-20 13:02:03 | 显示全部楼层
breeze_li 发表于 2016-9-20 09:39
这个解决了,就是站点太多,每个都要修改边界数据,ctl。现在想为每一个市县在地图上标注地名,一个一个 ...

汉语字库我都是没用过。从你给的程序里,看不出问题,你直接贴出全部gs脚本看看
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-9-20 22:25:00 | 显示全部楼层
四叶草 发表于 2016-9-20 13:02
汉语字库我都是没用过。从你给的程序里,看不出问题,你直接贴出全部gs脚本看看

gs脚本,你是指我用fortran生成的gs脚本?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-9-21 08:47:06 | 显示全部楼层
breeze_li 发表于 2016-9-20 22:25
gs脚本,你是指我用fortran生成的gs脚本?

你绘图的脚本。地图上标注地名,先标一个看看,没问题再批量标,这样操作才好找错。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-9-21 10:18:19 | 显示全部楼层
四叶草 发表于 2016-9-21 08:47
你绘图的脚本。地图上标注地名,先标一个看看,没问题再批量标,这样操作才好找错。

是这样的,我这个还没到那一步,之前只有市的情况,我就手写一个gs文件然后导入我要绘图的gs文件。现在县级数量太多,我现在出错是在用fortran批处理生成一组类似下面数据的gs,还没有到绘图那一步,问题是fortran读取txt文件写入时出错,writehz与cityName显示乱码
'q w2xy lon lat'
x=subwrd(result,3)
y=subwrd(result,6)
'writehz 'x' 'y' cityName 1  2 1 0.9 0.5 0'
'draw mark 2 'x+0.2' 'y-0.05' 0.08'
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-9-21 10:52:45 | 显示全部楼层
breeze_li 发表于 2016-9-21 10:18
是这样的,我这个还没到那一步,之前只有市的情况,我就手写一个gs文件然后导入我要绘图的gs文件。现在县 ...

哦哦,这个你就好好检查读取的数据文件,或是格式问题
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-9-21 10:53:47 | 显示全部楼层
四叶草 发表于 2016-9-21 10:52
哦哦,这个你就好好检查读取的数据文件,或是格式问题

可是汉语乱码可以理解,writehz怎么也不能正常显示呢
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-9-21 11:08:02 | 显示全部楼层
breeze_li 发表于 2016-9-21 10:53
可是汉语乱码可以理解,writehz怎么也不能正常显示呢

character(len=80) str(7)
仔细看了下,你的数组定义与实际赋值时不等,也就是数组array bounds exceeded
str(8) = "writehz "
str(9) = "1 2 1 0.9 0.5 0"
str(10) = "'"
你运行程序没有提示???不应该么
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-9-21 11:13:06 | 显示全部楼层
四叶草 发表于 2016-9-21 11:08
character(len=80) str(7)
仔细看了下,你的数组定义与实际赋值时不等,也就是数组array bounds exceede ...

没有报错啊,character(len=80) str(7):这个是说有7个字符串还是名为str(7)的字符串长度为80?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-9-21 11:16:13 | 显示全部楼层
breeze_li 发表于 2016-9-21 11:13
没有报错啊,character(len=80) str(7):这个是说有7个字符串还是名为str(7)的字符串长度为80?

不报错?这么神奇……
你把str(7)改成str(10)就行啦
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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