爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4711|回复: 3

脚本绘图后的经纬度网格消失问题?

[复制链接]

新浪微博达人勋

发表于 2011-11-25 12:12:45 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 孤蓝et 于 2011-11-25 12:15 编辑

使用meteoinfo自带脚本demo_rainmap.py,我只修改了其中的经纬度范围信息,发现执行后没有经纬度网格信息。
而后我删除脚本中的循环读取micaps数据部分,继续测试,可以得到经纬度网格,然后鼠标左键点击绘图窗体,经纬度网格消失?
不知道这个是什么原因?貌似其他脚本也有这个问题?还是由于我用的meteoinfo版本不对啊?
具体代码和图形结果如下 :

  1. # This Python file uses the following encoding: GB2312
  2. #---- 引入类库
  3. import clr
  4. clr.AddReferenceByPartialName("System")
  5. clr.AddReferenceByPartialName("System.Windows.Forms")
  6. clr.AddReferenceByPartialName("System.Drawing")
  7. from System import *
  8. from System.Windows.Forms import *
  9. from System.Drawing import *
  10. clr.AddReference("MeteoInfoC.dll")
  11. from MeteoInfoC import *
  12. from MeteoInfoC.Layout import *
  13. #---- 创建MIApp类的对象
  14. myApp = MIApp()
  15. #---- 添加图层
  16. myApp.OpenLayer("..\\Map\\bou2_4p.shp")
  17. #---- 设置图层渲染
  18. myApp.SetLegendBreak("bou2_4p.shp",0,Color.Yellow,Color.Gray,1,True,False,True)
  19. #myApp.OpenLayer("..\\Map\\bou1_4l.shp")
  20. #myApp.SetLegendBreak("bou1_4l.shp",0,Color.Blue)
  21. myApp.OpenLayer("..\\Map\\china.shp")
  22. myApp.SetLayerVisible("china.shp", False)
  23. myApp.OpenLayer("..\\Map\\res1_4m.shp")
  24. myApp.SetLegendBreak("res1_4m.shp",0,5,Color.Red,Color.Black,True,True,True)
  25. #---- 获取矢量图层对象,并设置标注
  26. aLayer = myApp.GetVectorLayer("res1_4m.shp")
  27. aLayer.LabelSet.FieldName = "NAME";
  28. aLayer.LabelSet.LabelFont = Font("楷体", 10);
  29. aLayer.LabelSet.Offset = 15;
  30. aLayer.AddLabels();
  31. #---- Lambert投影
  32. myApp.ProjectLayers("+proj=lcc+lat_1=25+lat_2=47+lon_0=84")
  33. #---- 按照经纬度范围缩放地图
  34. myApp.ZoomLonLat(76,94,35,50)
  35. #---- 设置屏蔽图层(只绘制中国境内图形)
  36. myApp.SetMaskout("china.shp")
  37. #---- 设置绘图类型为shaded
  38. myApp.SetDrawType("shaded")
  39. #---- 站点数据插值为格点数据的设置
  40. myApp.SetInterpolation(60,140,-20,60,160,160,"IDW_Radius",1,1)
  41. #---- 设置图例文件
  42. myApp.SetLegendScheme("..\\Legend\\aws.lgs")

  43. #---- 设置DefalutLayoutMap(图层显示)
  44. myApp.MapLayout.DefaultLayoutMap.DrawGridLine = False
  45. myApp.MapLayout.DefaultLayoutMap.DrawNeatLine = False
  46. myApp.MapLayout.DefaultLayoutMap.Left = 10
  47. myApp.MapLayout.DefaultLayoutMap.Top = 10
  48. myApp.MapLayout.DefaultLayoutMap.Width = 620
  49. myApp.MapLayout.DefaultLayoutMap.Height = 450

  50. #---- 设置DefaultTitle(图形标题)
  51. myApp.MapLayout.DefaultTitle.SetFont("黑体", 12)
  52. myApp.MapLayout.DefaultTitle.Top = 30
  53. myApp.MapLayout.DefaultTitle.Left = 80
  54. #---- 设置DefaultLegend(图例)
  55. myApp.MapLayout.DefaultLegend.LegendStyle = LegendStyleEnum.Normal  
  56. myApp.MapLayout.DefaultLegend.DrawNeatLine = False
  57. myApp.MapLayout.DefaultLegend.Title = "相对湿度"
  58. myApp.MapLayout.DefaultLegend.BackColor = Color.White
  59. myApp.MapLayout.DefaultLegend.Font = Font("Arial", 8)
  60. myApp.MapLayout.DefaultLegend.Left = 575
  61. myApp.MapLayout.DefaultLegend.Top = 150

  62. #---- 显示程序窗体(只是为了看效果,自动运行时不需要)
  63. Application.Run(myApp)
复制代码

使用上述脚本运行后,弹出的绘图窗体显示如下:
无标题.png
而后,在窗体上点击鼠标左键,经纬度网格消失。

无标题2.png
使用我自己的数据文件,获得如下图形。么有经纬度网格啊。貌似自带的其他脚本也有这个问题?

RH_2011080300.png


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

新浪微博达人勋

发表于 2011-11-25 13:26:17 | 显示全部楼层
注意这句:
myApp.MapLayout.DefaultLayoutMap.DrawGridLine = False

自然就没有经纬度网格线了。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2011-11-25 15:39:32 | 显示全部楼层
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2011-11-25 15:55:22 | 显示全部楼层
用了后,发觉脚本用来批量工作很强大啊。
本来是用meteoinfo来画自动站的逐时数据,这点了半天都画得不对劲。
后面想起了脚本,斑竹给了那么多的注释,相当容易上手。推荐大家多多尝试。
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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