爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 10212|回复: 18

基于meteoInfo的闪电程序二次开发。持续更新

[复制链接]

新浪微博达人勋

发表于 2012-8-7 16:00:20 | 显示全部楼层 |阅读模式

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

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

x
我搞雷电相关研究的。最近在做一个全国的闪电定位系统数据叠加的软件。希望能够实现几个简单的功能:1把闪电叠加到底图上,并且能够逐级放大、缩小;2把经过计算的地闪密度分布情况(Ng)插值图叠加在底图上;3提供一个判断条件,从闪电库中提取出来比如浙江省的数据(已知经纬度,推测所地闪所在省份)。
我那款软件的现有功能简介:http://blog.csdn.net/fanrong1985/article/details/7830993

2012年8月7日问题,我已经实现如下效果
无标题.jpg
希望实现如下效果,点击“放大”后可以出现各地方的名字?
shot.JPG

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

新浪微博达人勋

0
早起挑战累计收入
发表于 2012-8-7 16:03:13 | 显示全部楼层
加油吧~不过看不出你发这个帖子的目的是什么,提问?分享经验?还是介绍你的博客和那个软件?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-8-7 16:10:55 | 显示全部楼层

主要目的是提问,需要实现如上图所示的效果。希望高手能指出技术路线,给出关键函数的名字。或者告诉我,在哪里能找到县、市、省的名字

第一段只是大致介绍一下做什么样一个事情。不然太突兀了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-8-7 16:16:40 | 显示全部楼层
最终希望能够通过meteoInfo二次开发模拟实现如下效果:
叠加截图.JPG
和如下效果
AcidRain2.png
两种
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2012-8-7 16:17:44 | 显示全部楼层
你现在实现的才只是MeteoInfo二次开发教程中的第一节?
标注以及图层操作在后面的几个教程中全部都有,你把二次开发的教程都练一遍也许就知道常用的函数在哪里了索引贴:
http://bbs.06climate.com/forum.php?mod=viewthread&tid=7232&extra=page%3D1
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-8-7 16:22:22 | 显示全部楼层
mofangbao 发表于 2012-8-7 16:17
你现在实现的才只是MeteoInfo二次开发教程中的第一节?
标注以及图层操作在后面的几个教程中全部都有,你把 ...

已经实现的内容是在“MeteoInfoDemo”程序中,叠加中国的shp文件出来的效果。
好的,感谢回复。我再试试看。有成果会不断更新,分享学习进步过程
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-8-8 15:39:33 | 显示全部楼层
  1. //Label city name
  2.             VectorLayer cityLayer = (VectorLayer)aLayer;
  3.             cityLayer.LabelSet.FieldName = "NAME";
  4.             cityLayer.LabelSet.AvoidCollision = true;
  5.             cityLayer.LabelSet.LabelAlignType = MeteoInfoC.Legend.AlignType.Center;
  6.             cityLayer.LabelSet.YOffset = 0;
  7.             cityLayer.LabelSet.LabelFont = new Font("Arial", 8);
  8.             cityLayer.LabelSet.LabelColor = Color.Red;
  9.             cityLayer.LabelSet.DrawShadow = false;
  10.             cityLayer.LabelSet.ShadowColor = Color.White;
  11.             cityLayer.LabelSet.ColorByLegend = false;
  12.             cityLayer.AddLabels();
复制代码
上面的代码是添加城市label用的,我之前没有用过GIS的东西。想了一天也没想明白一个问题:
以上代码中到底哪一句包含了城市名和经纬度?
用通俗的道理说:想把城市标记成点叠加在底图上,至少要知道城市的经纬度和城市名字。这些信息从哪里找到?代码里如何反应?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-8-8 17:29:26 | 显示全部楼层
记忆碎片 发表于 2012-8-8 15:39
上面的代码是添加城市label用的,我之前没有用过GIS的东西。想了一天也没想明白一个问题:
以上代码中到底 ...

GIS图层都是有属性数据的(每个图元对应一条属性),属性数据其实是一个关系数据库,可以有很多字段,比如这个图层包含Name字段,里面是每个城市的城市名,将Label的字段设置以后就可以从属性数据里调出每个图元该字段的属性了。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-8-8 18:21:11 | 显示全部楼层
本帖最后由 记忆碎片 于 2012-8-8 18:21 编辑

感谢,我明白这个label的问题了
有个新的问题:
通过我的“地闪数据时空特征分析”,可以分析出雷电的密度分布情况。希望叠加到meteoInfo底图上。
结果文件格式为:“经度,纬度,数值(Ng值)”。格式如下图所示
经纬度.jpg
希望实现的效果如下:
china-shaded.jpg
希望叠加,首先要把源txt文件进行kriging差值并格点化成grid文件。然后再添加等值线图文件并调整至理想化效果。
问题如下:1、meteoInfo能否支持txt数据源?
2meteoInfo能否支持插值并生成格点文件的功能?如果支持,函数名是?
3、叠加后,会遇到效果不满意的情况,不同色标标志不同数值范围的情况应该如何调节?请告知函数名。
或者如果时间足够的话,能给出详细的dll开发者文档,效果更佳。
那么多问题,恳请不吝赐教,实在是打扰作者时间了。我乐意把我的进步与大家分享。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-8-8 19:19:30 | 显示全部楼层
MeteoInfo 发表于 2012-8-8 17:29
GIS图层都是有属性数据的(每个图元对应一条属性),属性数据其实是一个关系数据库,可以有很多字段,比如 ...

按照lz的提示,我编写了以下函数
  1. private void LoadCityLayer(MapLayer aLayer)
  2.         {
  3.             //((PointBreak)aLayer.LegendScheme.breakList[0]).Color = Color.Red;
  4.             aLayer.Expanded = true;
  5.             layersLegend1.ActiveMapFrame.AddLayer(aLayer);
  6.             //Label city name
  7.             VectorLayer cityLayer = (VectorLayer)aLayer;
  8.             cityLayer.LabelSet.FieldName = "NAME";
  9.             cityLayer.LabelSet.AvoidCollision = true;
  10.             cityLayer.LabelSet.LabelAlignType = MeteoInfoC.Legend.AlignType.Center;
  11.             //cityLayer.LabelSet.Offset = 0;
  12.             cityLayer.LabelSet.LabelFont = new Font("Arial", 8);
  13.             cityLayer.LabelSet.LabelColor = Color.Red;
  14.            cityLayer.LabelSet.DrawShadow = false;
  15.             cityLayer.LabelSet.ShadowColor = Color.White;
  16.            cityLayer.LabelSet.ColorByLegend = false;
  17.             cityLayer.AddLabels();
  18.         }
复制代码
但是运行后异常提示“列“NAME”不属于表 。”
我使用的shp地图是从 http://www.diva-gis.org/gdata 下载下来的文件“CHN_adm3.shp”
是地图问题还是代码"cityLayer.LabelSet.FieldName = "NAME";"有问题?
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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