爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 3581|回复: 7

[脚本编辑] 有用C#将十进制转二进制站点资料的吗?

[复制链接]

新浪微博达人勋

发表于 2014-10-8 16:46:49 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 ecologycn 于 2014-10-8 16:54 编辑

要开发一个业务平台,使用的是C#,想用C#处理站点数据,将十进制转二进制,生成grd和dat文件,但是作图等值线无法画出。大家一般用Fortran转码?有没有用C#转的?
转化程序见附件:
1.txt (6.69 KB, 下载次数: 5)
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-10-8 17:06:22 | 显示全部楼层
用c#定义float变量二进制输出
下面是我写的将AQI空气质量指数写成二进制文件,数据存放在一维数组里
#region 输出数据到二进制文件Grads格式
public static void OutPut2BinaryHourAqi(string fname, string[]Id,float[]Lng,float[]Lat,float[]val)
                {
                        FileStream fs=new FileStream(Environment.CurrentDirectory+"\\"+fname,FileMode.Create);
                        BinaryWriter br=new BinaryWriter(fs);
                       
                        int nlev=1;
                        int nflag=1;
                        float tim=0.0f;
                        string tmp="";
                       
                        Console.WriteLine("输出二进制格式....");
                        string EchoInfo="";
                        for(int i=0;i<Id.Length;i++)
                        {
                                if(tmp.Length>7)
                                {
                                        tmp=tmp.Substring(0,7);
                                }
                                else
                                {
                                        tmp=tmp.PadLeft(7,' ');
                                }
                                br.Write(tmp);
                                br.Write(Lat[i]);
                                br.Write(Lng[i]);
                                br.Write(tim);
                                br.Write(nlev);
                                br.Write(nflag);
                                br.Write(val[i]);
                               
                                EchoInfo=string.Format("{0},{1},{2},{3},{4}",(i+1).ToString().PadLeft(3,' '),Id[i],Lat[i],Lng[i],val[i]);
                                Console.WriteLine(EchoInfo);
                        }
                        nlev=0;
                        br.Write(tmp);
                        br.Write(Lat[Id.Length-1]);
                        br.Write(Lng[Id.Length-1]);
                        br.Write(tim);
                        br.Write(nlev);
                        br.Write(nflag);

                        br.Close();
                }
#endregion
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-10-8 17:22:25 | 显示全部楼层
谢谢,我试试
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-10-8 21:29:20 | 显示全部楼层
建议去看一下GrADS关于站点数据写成二进制的要求吧http://grads.iges.org/grads/gadoc/aboutstationdata.html#create
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-10-9 22:04:35 | 显示全部楼层
很好,谢谢
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2016-8-29 18:20:45 | 显示全部楼层
y18735399 发表于 2014-10-8 17:06
用c#定义float变量二进制输出
下面是我写的将AQI空气质量指数写成二进制文件,数据存放在一维数组里
#reg ...

   if(tmp.Length>7)
                                {
                                        tmp=tmp.Substring(0,7);
                                }
                                else
                                {
                                        tmp=tmp.PadLeft(7,' ');
                                }
请教一下,这里的tmp是做什么的
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-8-30 09:11:36 | 显示全部楼层
我按照上面写的那个代码自己补充些了些,如果加上站号,就不能使用stnmap怎么回事啊,去掉站号后能出事全球的,并不是我的经纬度范围的,而且好像还是有错,求指教
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-11-3 13:45:10 | 显示全部楼层
很好,谢谢分享
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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