爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 8764|回复: 16

如何将经纬度点标注在地图上?

[复制链接]

新浪微博达人勋

发表于 2012-12-17 09:45:20 | 显示全部楼层 |阅读模式

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

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

x
rt
求助:如何将某经纬度标注在地图上,同时使用红色"+"或者使用蓝色"-"进行标示?
我下载了meteoinfo class library help ,请问搜什么关键字能找到我需要的信息?谢谢
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-12-17 09:58:16 | 显示全部楼层
可以参考此贴:MeteoInfo脚本示例:台风
http://bbs.06climate.com/forum.p ... 159&fromuid=106
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-12-17 10:15:11 | 显示全部楼层

Python语言看不懂,我用.NET c#的
感觉思路是:1先把点标注在Layer上,2然后再AddLayer()?
如果思路正确
"mipy.MapDocument.ActiveMapFrame.AddLayer(lLayer)"这一行是最后添加用的?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-12-17 10:34:05 | 显示全部楼层
记忆碎片 发表于 2012-12-17 10:15
Python语言看不懂,我用.NET c#的
感觉思路是:1先把点标注在Layer上,2然后再AddLayer()?
如果思路正确 ...

语言不一样,但思路是想通的。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-12-17 11:34:33 | 显示全部楼层
照着思路试了一上午,报错了。不得其解,还请指点~~
error.jpg
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-12-17 11:35:25 | 显示全部楼层
贴一下错误代码:
  1. PointD point = new PointD(120,30);
  2.             VectorLayer pLayer = new VectorLayer(MeteoInfoC.Shape.ShapeTypes.Point);
  3.             int shapeNum = pLayer.ShapeNum;
  4.             Shape shape = new Shape();
  5.             List<PointD> pointList = new List<PointD>();
  6.             pointList.Add(point);
  7.             shape.SetPoints(pointList);
  8.             pLayer.EditInsertShape(shape, shapeNum);

  9.             mapView1.AddLayer(pLayer);
复制代码
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-12-17 11:44:52 | 显示全部楼层
记忆碎片 发表于 2012-12-17 11:35
贴一下错误代码:

你没仔细看脚本代码,我相信你能自己找出错误。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-12-17 12:13:03 | 显示全部楼层

咕~~(╯﹏╰)b看了一上午了
好,我再试试
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-12-17 12:29:27 | 显示全部楼层
记忆碎片 发表于 2012-12-17 12:13
咕~~(╯﹏╰)b看了一上午了
好,我再试试

二次开发开发教程里也讲过:MeteoInfo二次开发教程(九)
http://bbs.06climate.com/forum.p ... 024&fromuid=106
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-12-17 13:57:40 | 显示全部楼层
本帖最后由 记忆碎片 于 2012-12-17 14:06 编辑
MeteoInfo 发表于 2012-12-17 12:29
二次开发开发教程里也讲过:MeteoInfo二次开发教程(九)
http://bbs.06climate.com/forum.php?mod=view ...


我放着教程九进行了尝试
代码如下:
  1. //New layer
  2.             VectorLayer aLayer = new VectorLayer(ShapeTypes.Point);
  3.             aLayer.LayerName = "New_Point_Layer";
  4.             aLayer.LegendScheme =LegendManage.CreateSingleSymbolLegendScheme(ShapeTypes.Point, Color.Red, 10);
  5.             aLayer.Visible = true;

  6.             //Add fields            
  7.             aLayer.EditAddField("STATION", typeof(string));
  8.             aLayer.EditAddField("LON", typeof(double));
  9.             aLayer.EditAddField("LAT", typeof(double));
  10.             aLayer.EditAddField("DATA", typeof(double));

  11.             //Prepare coordinate data
  12.             double[] X = new double[2] { 120, 30 };
  13.             double[] Y = new double[2] { 120, 30 };
  14.             double[] data = new double[2] { 1,2 };

  15.             //Add shape
  16.             for (int i = 0; i < 2; i++)
  17.             {
  18.                 PointShape aPS = new PointShape();
  19.                 PointD aPoint = new PointD();
  20.                 aPoint.X = X[i];
  21.                 aPoint.Y = Y[i];
  22.                 aPS.Point = aPoint;
  23.                 int shapeNum = aLayer.ShapeNum;
  24.                 if (aLayer.EditInsertShape(aPS, shapeNum))
  25.                 {
  26.                     //Edit record value
  27.                     aLayer.EditCellValue("STATION", shapeNum, "St1");
  28.                     aLayer.EditCellValue("LON", shapeNum, aPoint.X);
  29.                     aLayer.EditCellValue("LAT", shapeNum, aPoint.Y);
  30.                     aLayer.EditCellValue("DATA", shapeNum, data[i]);
  31.                 }
  32.             }

  33.             //Add Label
  34.             aLayer.LabelSet.FieldName = "DATA";
  35.             aLayer.LabelSet.LabelFont = new Font("Arial", 15);
  36.             aLayer.LabelSet.YOffset = 30;
  37.             aLayer.AddLabels();

  38.             //Add layer
  39.             layersLegend1.ActiveMapFrame.AddLayer(aLayer);
  40.             layersLegend1.ActiveMapFrame.MapView.PaintLayers();
  41.             layersLegend1.Refresh();
复制代码


很奇怪:x:120,y:30
两个点位置却不同
得到如下效果:

错误的效果

错误的效果


期望实现如下效果:

期望的效果

期望的效果



两个疑问:
1  //Prepare coordinate data
double[] X = new double[2] { 120, 30 };
double[] Y = new double[2] { 120, 30 };
double[] data = new double[2] { 1,2 };
这里1、2两个点明明一样的数字,显示的点位置却不同

2 120E,30N应该是在底图中央的,因为地图是shp的浙江地图。按理应该会叠加上去么,怎么会那么偏?




密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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