爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 5450|回复: 8

请教:关于uv风场图和格点显示的问题?

[复制链接]

新浪微博达人勋

发表于 2012-8-27 10:53:28 | 显示全部楼层 |阅读模式

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

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

x
1、用u,v数据绘制风场时,这个方法:
DrawMeteoData.CreateGridVectorLayer(GridData uData, GridData vData, GridData gridData, LegendScheme aLS, bool ifColor, string lName, bool isUV)的前两个是u,v分量场,第三个参数gridData是需要什么场?
2、格点图层显示格点值时,怎么样把低于某个数值的格点值全部改变颜色,比如把低于1000hpa的格点值的标注(label)显示为蓝色,其它格点值为黑色?
请老师指教
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-8-27 11:48:46 | 显示全部楼层
本帖最后由 MeteoInfo 于 2012-8-27 11:49 编辑

1、如果你做彩色风场图,第三个GridData作为颜色的变量。否则第三个变量没什么用。
2、这个有点复杂。图层添加了Label以后实际上所有Label都在VectorLayer的LabelPoints列表里,可以通过遍历这个列表对每个Label进行修改。如你的例子,Label都是数字,可以用下面的方法来处理:
  1. for (int i = 0; i < aLayer.LabelPoints.Count; i++)
  2. {
  3.    if (double.Parse((LabelBreak)aLayer.LabelPoints[i].Legend).Text) < 1000)
  4.   {
  5.      ((LabelBreak)aLayer.LabelPoints[i].Legend).Color = Color.Blue;
  6.   }
  7. }
复制代码
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-9-6 11:52:29 | 显示全部楼层

直接用MapView获取图层就可以了呀。问题有点弱
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-9-6 11:08:22 | 显示全部楼层
MeteoInfo 发表于 2012-9-6 09:26
可以通过更底层的方法来控制站点标注,这里给一个例子:

这个需要通过LayerLegend得到的图层才能标注吧,我是直接将aLayer加入到mapview中的,没有LayerLegend,是不是就不能实现了?(vs提示“未将对象引用设置到对象的实例”)
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-9-6 09:26:25 | 显示全部楼层
vortexroc 发表于 2012-9-6 08:41
再挖出这个帖子来请教老师,在站点过多的情况下,标注的值会有部分隐藏,如何能不隐藏,达到 ...

可以通过更底层的方法来控制站点标注,这里给一个例子:
  1. VectorLayer aLayer = (VectorLayer)G_LayerLegend.ActiveMapFrame.MapView.GetLayerFromName("站点");
  2.             string fldName = "Value";
  3.             aLayer.RemoveLabels();
  4.             string labFldName = "STATION";
  5.             PointF aPoint = new PointF();
  6.             for (int i = 0; i < aLayer.ShapeNum; i++)
  7.             {
  8.                 if (double.Parse(aLayer.GetCellValue(fldName, i).ToString()) > 0)
  9.                 {                    
  10.                     PointShape aPS = (PointShape)aLayer.ShapeList[i];
  11.                     LabelBreak aLP = new LabelBreak();                    
  12.                     aLP.Text = aLayer.GetCellValue(labFldName, i).ToString();
  13.                     aLP.Color = aLayer.LabelSet.LabelColor;
  14.                     aLP.Font = aLayer.LabelSet.LabelFont;
  15.                     aLP.AlignType = aLayer.LabelSet.LabelAlignType;
  16.                     aLP.YShift = aLayer.LabelSet.Offset;
  17.                     Graphic aGraphic = new Graphic(aPS, aLP);
  18.                     aLayer.AddLabel(aGraphic);
  19.                 }
  20.             }
  21.             aLayer.LabelSet.DrawLabels = true;
复制代码
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-9-6 08:41:17 | 显示全部楼层
MeteoInfo 发表于 2012-8-27 11:48
1、如果你做彩色风场图,第三个GridData作为颜色的变量。否则第三个变量没什么用。
2、这个有点复杂。图层 ...

再挖出这个帖子来请教老师,在站点过多的情况下,标注的值会有部分隐藏,如何能不隐藏,达到如下图的效果,即优先显示标注值(就是显示出不同的颜色层次),再显示地名,不然一些较大降雨值的地区就没法一眼看到了
我尝试设置AvoidCollision但是没法达到要求
4.JPG
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-9-6 17:51:48 | 显示全部楼层
MeteoInfo 发表于 2012-9-6 11:52
直接用MapView获取图层就可以了呀。问题有点弱

没有效果,数值较大的点还是被遮盖。。。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-9-6 17:59:37 | 显示全部楼层
vortexroc 发表于 2012-9-6 17:51
没有效果,数值较大的点还是被遮盖。。。

你把代码和效果图贴出来,要不怎么分析问题所在呀。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-7-10 23:35:01 | 显示全部楼层
                                       。         
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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