爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 8348|回复: 12

CINRAD雷达基数据图像绘制

[复制链接]

新浪微博达人勋

发表于 2014-4-4 17:12:57 | 显示全部楼层 |阅读模式

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

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

x
  1.             //显示仰角
  2.             this.label2.Text = T_Elevation[t_ElIndex].ToString();
  3.             //导入色阶文件
  4.             string legendFile = Application.StartupPath + "\\rd.lgs";
  5.             LegendScheme lgs = new LegendScheme(MeteoInfoC.Shape.ShapeTypes.Image);
  6.             lgs.ImportFromXMLFile(legendFile, true);

  7.             //初始化色阶
  8.             int breakNum = lgs.BreakNum;
  9.             double[] breakValue = new double[breakNum];
  10.             Color[] breakColor = new Color[breakNum];

  11.             for (int i = 0; i < breakNum; i++)
  12.             {
  13.                 breakValue = Convert.ToDouble(lgs.LegendBreaks.EndValue);
  14.                 breakColor = lgs.LegendBreaks.Color;
  15.             }
  16.             Color defaultColor = breakColor[breakNum - 1];    //默认颜色为最后一个颜色

  17.             //初始化画板
  18.             Graphics g = this.panel1.CreateGraphics();
  19.             g.Clear(Color.Transparent);


  20.             Pen p = new Pen(Color.Blue, 2);//定义外围圆圈画笔
  21.             Pen rp = new Pen(Color.Red, 1);//定义雷达图像画笔
  22.             g.DrawEllipse(p, 0, 0, 920, 920);//定义雷达图像矩形

  23.             //开始绘制
  24.             //每个仰角360个方位
  25.             for (int i = 0; i < 360; i++)
  26.             {
  27.                 //每个方位460个径向数据
  28.                 for (int b = 0; b < 460; b++)
  29.                 {
  30.                     //起点偏移!!
  31.                     g.TranslateTransform(460 - b, 460 - b);
  32.                     float data = T_RData[t_ElIndex, i, b];//雷达基数据,详见《CINRAD_雷达基数据产品格式》
  33.                     if (data != 999 && data != -999)
  34.                     {
  35.                         //每个径向数据的椭圆矩形
  36.                         Rectangle rt = new Rectangle(0, 0, b * 2, b * 2);
  37.                         //遍历数据对应的颜色值
  38.                         Color oneColor = defaultColor;
  39.                         for (int k = 0; k < breakNum - 1; k++)
  40.                         {
  41.                             if (data < breakValue[k])
  42.                             {
  43.                                 oneColor = breakColor[k];
  44.                                 rp = new Pen(oneColor, 1);
  45.                                 break;
  46.                             }
  47.                         }
  48.                         //绘制弧线
  49.                         g.DrawArc(rp, rt, i, 1);
  50.                     }
  51.                     //偏移复位
  52.                     g.ResetTransform();
  53.                 }
  54.             }
  55.             //下一个仰角
  56.             t_ElIndex++;
QQ截图20140404170938.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-4-4 20:34:35 | 显示全部楼层
看语法应该是c++写的吧?不应该发在meteoinfo区哦
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-4-4 20:39:38 | 显示全部楼层
请楼主稍微讲讲怎么用这个代码好吗?是MATLAB 程序还是MeteoInfo的呀?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-4-5 22:05:19 | 显示全部楼层
这是C#写的。其实发这个代码,只是想让同样做雷达数据图像的人借鉴一下思路,直接复制估计跑不起来,毕竟我还没把报文解析的代码贴出来。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-4-5 22:15:11 | 显示全部楼层
只是用到了meteoinfo的加载色阶文件方法,其他的都是用GDI+绘制
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-6-7 09:23:08 | 显示全部楼层
fancierhsj 发表于 2014-4-5 22:05
这是C#写的。其实发这个代码,只是想让同样做雷达数据图像的人借鉴一下思路,直接复制估计跑不起来,毕竟我 ...

谢谢楼主无私奉献,什么时候再发个帖子讲讲资料处理的{:lol:}
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-2-4 14:03:29 | 显示全部楼层
感谢楼主分享
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-5-14 20:41:23 | 显示全部楼层
急需积分怎么办啊
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-5-20 00:16:24 | 显示全部楼层
谢谢楼主分享。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-9-13 10:49:06 | 显示全部楼层
谢谢楼主分享。
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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