爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
楼主: 风行浪尖

【班门弄斧】用MeteoInfo“制作”各省地图+各省地图下载

  [复制链接]

新浪微博达人勋

发表于 2016-2-15 09:56:25 | 显示全部楼层
学学分享5555555555555555555
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-2-15 10:11:28 | 显示全部楼层
3q,楼主分享的东西很有用
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-2-15 10:42:26 | 显示全部楼层
初学者飘过,木有金钱下不了各种资源。。。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-2-15 19:54:25 | 显示全部楼层
风行前辈新年好!
使用您提供的个别省份shape还有自己制作的shape,会报一些错误:
ERROR 10:Pointer 'hGeom' is NULL in 'OGR_G_GetGeometryCount'.
ERROR 10:Pointer 'hGeom' is NULL in 'OGR_G_GetPointCount'.
……
也不是所有的shape都不行,有的就没问题
很纠结
求您指点!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-2-15 19:54:49 | 显示全部楼层
风行前辈新年好!
使用您提供的个别省份shape还有自己制作的shape,会报一些错误:
ERROR 10:Pointer 'hGeom' is NULL in 'OGR_G_GetGeometryCount'.
ERROR 10:Pointer 'hGeom' is NULL in 'OGR_G_GetPointCount'.
……
也不是所有的shape都不行,有的就没问题
很纠结
求您指点!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-2-16 10:58:48 | 显示全部楼层
确切地说,好像是在进行某几个省份组合的时候就会出现这样的问题。。。。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-2-16 11:08:13 | 显示全部楼层
liujichen 发表于 2016-2-16 10:58
确切地说,好像是在进行某几个省份组合的时候就会出现这样的问题。。。。

说具体些,最好提供出错的文件用于测试
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-2-17 08:59:45 | 显示全部楼层
MeteoInfo 发表于 2016-2-16 11:08
说具体些,最好提供出错的文件用于测试

最终目的是使用站点数据画南部几个省的年降水分布
使用meteoinfo制作了广东省的shape文件,没有问题,可以画出广东省的年降水分布
  1. load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
  2. load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
  3. load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
  4. ;load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/shea_util.ncl"
  5. load "./shapefile_mask_data.ncl"

  6. begin

  7. fili = "./nan.txt"
  8. arg = asciiread(fili,-1,"string")
  9. count = str_fields_count(arg," ")
  10. line = dimsizes(arg)

  11. data = new( (/line,count(0)-1/), string)
  12. do j = 0, line-1
  13. do i = 0, count(0)-2
  14.      data(j,i) = str_get_field(arg(j),i+1," ")
  15. end do
  16. end do
  17. ;print(data)
  18. station = stringtofloat(data(:,0))
  19. lat = stringtofloat(data(:,1))
  20. lon = stringtofloat(data(:,2))
  21. tem = stringtofloat(data(:,3))
  22. tem_h = stringtofloat(data(:,4))
  23. tem_l = stringtofloat(data(:,5))   ;count of rainfall in dali
  24. pa = stringtofloat(data(:,6))
  25. rain20 = stringtofloat(data(:,7))
  26. rn = stringtofloat(data(:,8))*365
  27. ;wind = stringtofloat(data(:,9))

  28. ;range of lat(24.6,26.8) and lon(98.8,101.1)
  29. minlat      =   18.0
  30. maxlat      =   31.0
  31. minlon      =   97.0
  32. maxlon      =  118.0
  33. olon = new(211,"float")
  34. olat = new(131,"float")
  35. data1 = new((/131,211/),"float")
  36. do i=0,210
  37. olon(i) = minlon+i*0.1
  38. end do
  39. do l=0,130
  40. olat(l) = minlat+l*0.1
  41. end do

  42. olon!0          = "lon"
  43. olon@long_name  = "lon"
  44. olon@units      = "degrees-east"
  45. olon&lon        = olon
  46. olat!0          = "lat"
  47. olat@long_name  = "lat"
  48. olat@units      = "degrees_north"
  49. olat&lat        = olat

  50. lon@units       = olon@units
  51. lat@units       = olat@units

  52. rn@_FillValue = -9999.0
  53. ;obj_anal_ic_deprecated--Iterative correction objective analysis (Cressman, Barnes)
  54. rscan = (/1,.9,.8,.7,.6,.4,.1/)
  55. data1 = obj_anal_ic_deprecated(lon,lat,rn,olon,olat,rscan, False)

  56. shp_filename = "./nanbu/test-nan.shp"

  57. ;county = new(line,"string")
  58. ;county = (/"Yunlong","Yangbi","Yongping","Dali","Binchuan","Midu",\
  59. ;          "Xiangyun","Weishan","Jianchuan","Eryuan","Heqing","Nanjian"/)

  60. data_mask    = shapefile_mask_data(data1,shp_filename,True)

  61. wks = gsn_open_wks("X11","rain_count_nb")
  62. gsn_define_colormap(wks,"BlAqGrYeOrRe")

  63. res                     = True
  64. res@gsnDraw             = False
  65. res@gsnFrame            = False

  66. res@gsnAddCyclic        = False
  67. ;res@mpDataSetName       = "Earth..4"                                 
  68. ;res@mpDataBaseVersion   = "MediumRes"
  69. ;res@mpOutlineOn         = True

  70. res@mpMinLatF           = minlat
  71. res@mpMaxLatF           = maxlat
  72. res@mpMinLonF           = minlon
  73. res@mpMaxLonF           = maxlon

  74. res@mpGeophysicalLineThicknessF= 2.
  75. res@mpNationalLineThicknessF= 2.

  76. ;res@mpLimitMode = "LatLon"
  77. ;res@mpLambertParallel1F = .001
  78. ;res@mpLambertParallel2F = 89.999

  79. res@cnFillOn      = True
  80. res@cnLinesOn     = False
  81. res@cnLineLabelsOn = False

  82. res@pmTickMarkDisplayMode = "Always"

  83. map_mask  = gsn_csm_contour_map(wks,data_mask,res)
  84. lnres                  = True
  85. lnres@gsLineColor      = "black"
  86. lnres@gsLineThicknessF = 2.0
  87. line_mask = gsn_add_shapefile_polylines(wks, map_mask, shp_filename, lnres)

  88. draw(map_mask)

  89. ;tres                    =True
  90. ;tres@txFontHeightF      = 0.01
  91. ;do i = 0, line-1
  92. ;    gsn_text(wks,map_mask,county(i),lon(i),lat(i),tres)
  93. ;end do

  94. frame(wks)

  95. end
复制代码

可是如果使用meteoinfo制作了广东+广西+云南+海南几个省的shape文件,同样的NCL脚背就会报错:
ERROR 10:Pointer 'hGeom' is NULL in 'OGR_G_GetGeometryCount'.
ERROR 10:Pointer 'hGeom' is NULL in 'OGR_G_GetPointCount'.
……
附上脚本
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-2-17 09:26:35 | 显示全部楼层
liujichen 发表于 2016-2-17 08:59
最终目的是使用站点数据画南部几个省的年降水分布
使用meteoinfo制作了广东省的shape文件,没有问题,可 ...

你是要用shape文件在ncl中做mask功能吗?有可能是ncl的bug(只能用一个polygon图元做mask?),我不是ncl用户也不是很清楚。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-2-17 15:07:50 | 显示全部楼层
好东西,即便是现在都好需要的!!
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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