爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
12
返回列表 发新帖
楼主: 记忆碎片

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

[复制链接]

新浪微博达人勋

发表于 2012-8-8 20:40:55 | 显示全部楼层

建议你先学习一下MeteoInfo桌面软件的用法,这些问题自然就明白了。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-8-11 11:42:41 | 显示全部楼层
MeteoInfo 发表于 2012-8-8 20:40
建议你先学习一下MeteoInfo桌面软件的用法,这些问题自然就明白了。

学习进度:
MeteoInfo桌面软件的,菜单栏>图层属性数据
已经能够找到shp的文件字段内容。不过看来网站上下下来的数据还不太符合我的需求,仍需修改。

其他内容尚在学习中……
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2012-8-11 13:55:51 | 显示全部楼层
记忆碎片 发表于 2012-8-11 11:42
学习进度:
MeteoInfo桌面软件的,菜单栏>图层属性数据
已经能够找到shp的文件字段内容。不过看来网站上 ...

楼主如果没有心得会或者代码分享,那么这样的记录最好放在个人日志中
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-8-24 21:02:54 | 显示全部楼层
同意楼上的观点
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-8-28 16:01:27 | 显示全部楼层
紫夜怡静 发表于 2012-8-24 21:02
同意楼上的观点

已经意识到我发错了地方,现在放在个人日志里面了。
网址如下:http://bbs.06climate.com/home.ph ... do=blog&id=1022
敬请谅解
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-8-28 16:10:51 | 显示全部楼层
本帖最后由 记忆碎片 于 2012-8-28 16:13 编辑

沉寂了一阵子,工作实在太忙。抱歉
最近研究,meteoInfo确实很强大。分享进步共同学习如下
希望实现功能:用户输入经纬度,判断经纬度所在省市区。
效果图如下:
232355k7ucgxuukxbur9on.jpg
代码如下
  1. public class AdjustLocationClass
  2.     {
  3.         public static Location AdjustLocation(double longitude, double latitude)
  4.         {
  5.             Location location=new Location();
  6.             string aFile = Environment.CurrentDirectory + @"\CHN_adm3.shp";
  7.             MapLayer aLayer = MapDataManage.OpenLayer(aFile);
  8.             VectorLayer cityLayer = (VectorLayer)aLayer;
  9.             var extent = new MeteoInfoC.Global.Extent();
  10.             for (int i = 0; i < cityLayer.ShapeList.Count; i++)
  11.             {
  12.                 extent = cityLayer.ShapeList.Extent;
  13.                 if (longitude >= extent.minX && longitude <= extent.maxX && latitude >= extent.minY && latitude <= extent.maxY)
  14.                 {
  15.                     location.Province = cityLayer.GetCellValue(4, i).ToString();
  16.                     location.City = cityLayer.GetCellValue(6, i).ToString();
  17.                     location.Distinct = cityLayer.GetCellValue(8,i).ToString();
  18.                 }
  19.             }
  20.             return location;
  21.         }
  22.     }
  23.     public struct Location
  24.     {
  25.         string province;
  26.         string city;
  27.         string distinct;
  28.         string locationString;
  29.         public string LocationString
  30.         {
  31.             get
  32.             {
  33.                 processLocationString();
  34.                 return locationString;
  35.             }
  36.             set { locationString = value; }
  37.         }
  38.         public string Distinct
  39.         {
  40.             get { return distinct; }
  41.             set { distinct = value; }
  42.         }
  43.         public string City
  44.         {
  45.             get { return city; }
  46.             set { city = value; }
  47.         }
  48.         public string Province
  49.         {
  50.             get
  51.             {
  52.                 return province;
  53.             }
  54.             set
  55.             {
  56.                 province = value;
  57.             }
  58.         }
  59.         private void processLocationString()
  60.         {
  61.             locationString = "该位置位于:" + province + "省" + city + "市" + distinct + "区";
  62.         }
  63.     }

使用方法:新建项目,引用meteoInfoC 的dll,并且把对应的shp地图拷到dll相同的文件夹下。即可使用。很方便

经过管理员“MeteoInfo”指出:每个shape的Extent是该shape的最小外接矩形,比shape的真实边界要大,点在一个shape的Extent内未必就在该shape内。

恳请指导如何解决这个问题?

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

新浪微博达人勋

发表于 2012-8-28 16:51:35 | 显示全部楼层
记忆碎片 发表于 2012-8-28 16:10
沉寂了一阵子,工作实在太忙。抱歉
最近研究,meteoInfo确实很强大。分享进步共同学习如下
希望实现功能: ...

可以用MeteoInfoC.Geoprocess命名空间里的GeoComputation类的PointInPolygon方法。
  1. PointD aPoint = new PointD(longitude, latitude);
  2. for (int i = 0; i < cityLayer.ShapeList.Count; i++)
  3. {
  4.   PolygonShape aPGS = (PolygonShape)ShapeList[i];
  5.   if (GeoComputation.PointInPolygon(aPGS, aPoint))
  6.   {
  7.     ...
  8.   }
  9. }
复制代码
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-8-29 16:23:03 | 显示全部楼层
MeteoInfo 发表于 2012-8-28 16:51
可以用MeteoInfoC.Geoprocess命名空间里的GeoComputation类的PointInPolygon方法。

感谢指导!
这种类似的函数和属性的用法是否有相关文档能查到?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-8-29 17:25:04 | 显示全部楼层
记忆碎片 发表于 2012-8-29 16:23
感谢指导!
这种类似的函数和属性的用法是否有相关文档能查到?

http://www.meteothinker.com/ 上类库的帮助文档
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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