爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
楼主: MeteoInfo

MeteoInfo介绍

  [复制链接]

新浪微博达人勋

 楼主| 发表于 2012-10-3 14:15:22 | 显示全部楼层

写了一个脚本将你提供的coastline数据生成一个线图层,基本可以肯定coastline数据不适合做mask,线条很零碎(见下图中的彩色线,每条零碎的线用不同颜色显示),想要形成封闭的区域几乎不可能。不知道你为什么这么执着要用coastline数据?我之前说过,MeteoInfo带的110m-land.shp很适合做海陆mask,你如果愿意的话可以试试。
Image00923.png
Image00922.png

具体代码:
  1. #--------------------------------------------------------        
  2. # Author: Yaqiang Wang                                          
  3. # Date: 2012-10-3                                                
  4. # Purpose: Read and plot coastline data  
  5. # Note: Sample                                                   
  6. #-----------------------------------------------------------  
  7. #---- Import clr and classes
  8. import clr
  9. clr.AddReferenceByPartialName("System")
  10. clr.AddReferenceByPartialName("System.Drawing")
  11. from System import *
  12. from System.Drawing import *
  13. from System.Collections.Generic import *
  14. clr.AddReference("MeteoInfoC.dll")
  15. from MeteoInfoC import *
  16. from MeteoInfoC.Data.MapData import *
  17. from MeteoInfoC.Geoprocess import *
  18. from MeteoInfoC.Layer import *
  19. from MeteoInfoC.Shape import *
  20. from MeteoInfoC.Legend import *
  21. from MeteoInfoC.Drawing import *
  22. import os.path

  23. #---- Create a line layer
  24. print 'Create polyline layer...'
  25. lLayer = VectorLayer(ShapeTypes.Polyline)
  26. lLayer.LayerName = "Coast_Line"
  27. lLayer.Visible = True
  28. lLayer.EditAddField("ID", String)

  29. #---- Read data file
  30. print 'Read data file...'
  31. fn = "D:\\Temp\\ascii\\data_1_bad.dat"
  32. tf = open(fn)
  33. plist = List[PointD]()
  34. tf.readline()
  35. i = 0
  36. for aline in tf:
  37.         if aline.strip()[0:3] == 'nan':
  38.                 aPolyline = PolylineShape()
  39.                 aPolyline.Points = plist
  40.                 shapeNum = lLayer.ShapeNum
  41.                 if lLayer.EditInsertShape(aPolyline, shapeNum):
  42.                         lLayer.EditCellValue("ID", shapeNum, shapeNum)               
  43.                 plist = List[PointD]()
  44.                 print "Line %i" % (shapeNum)
  45.         else:
  46.                 datalist = aline.split()
  47.                 lat = float(datalist[1])
  48.                 lon = float(datalist[0])
  49.                 aPoint = PointD(lon, lat)
  50.                 plist.Add(aPoint)
  51.        
  52. lLayer.UpdateLegendScheme(LegendType.SingleSymbol, "ID")

  53. mipy.MapDocument.ActiveMapFrame.AddLayer(lLayer)   
  54. print 'Finished!'
复制代码



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

新浪微博达人勋

发表于 2012-10-5 10:53:38 | 显示全部楼层
MeteoInfo 发表于 2012-10-3 14:15
写了一个脚本将你提供的coastline数据生成一个线图层,基本可以肯定coastline数据不适合做mask,线条很零 ...

十分感谢版主,之所以执着着用coastline 的数据,是因为我手上的数据只有它的精度是最高的,可以精确到 1''左右,我的数据也是比较精确,不知道你说的110m-land.shp的精度有多大?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-10-5 11:00:23 | 显示全部楼层
MeteoInfo 发表于 2012-10-3 14:15
写了一个脚本将你提供的coastline数据生成一个线图层,基本可以肯定coastline数据不适合做mask,线条很零 ...

Yaqiang Wang  大神,十分感谢你的算法,但是我的Meteoinfo四最新版的,但是为什么找不到你说的自带的110m-land 文件呢?是不是你已经下载好了的 ?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-10-5 14:55:28 | 显示全部楼层
haobang008 发表于 2012-10-5 11:00
Yaqiang Wang  大神,十分感谢你的算法,但是我的Meteoinfo四最新版的,但是为什么找不到你说的自带的110 ...

在MeteoInfo安装路径的Map目录下。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-10-5 15:03:29 | 显示全部楼层
MeteoInfo 发表于 2012-10-5 14:55
在MeteoInfo安装路径的Map目录下。

嗯,找到陆地说,我先尝试一下呢
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-10-5 15:27:40 | 显示全部楼层
按照你的编码已经画出来了,但是我想把陆地和海洋分别设置为 0 和1  矩阵,不知道如何去做啊?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-10-5 15:28:34 | 显示全部楼层
哦,哦对了,这是我做的图,想标记都不行呢
east china sea.jpg
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-10-5 16:37:35 | 显示全部楼层
haobang008 发表于 2012-10-5 15:28
哦,哦对了,这是我做的图,想标记都不行呢

可以参考此帖:MeteoInfo脚本示例:创建点图层并判断点是否在某区域内
http://bbs.06climate.com/forum.p ... 100&fromuid=106
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-10-5 19:26:56 | 显示全部楼层
MeteoInfo 发表于 2012-10-5 16:37
可以参考此帖:MeteoInfo脚本示例:创建点图层并判断点是否在某区域内
http://bbs.06climate.com/forum. ...

正如前辈所说,是否在闭合图形之内,这个算法是有的,但是之前绘制的图形你想必也看到了,狠毒都是不闭合的线段,那我应该如何处理? 还有就国界和 湖泊的问题,那该如何处理呢 ?请赐教
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-10-24 15:43:43 | 显示全部楼层
楼主,wCcontour,TrajStat,EMDIS 这些下载了放在哪里?就可以直接用?(希望这个问题不太白痴)
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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