爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 6651|回复: 5

[作图] 使用shapefile_mask_data出现的问题

[复制链接]

新浪微博达人勋

发表于 2022-3-8 10:48:34 | 显示全部楼层 |阅读模式
5金钱
我想从86年的全球数据选取出中国数据,采用了循环,其中pr是三维数据(time,lat,lon)
mask_in=new((/86,180,360/),float)
do i=0,85
  mask_in(i,:,:) = shapefile_mask_data(pr(i,:,:),shp_filename,True)
  mask_io = where(ismissing(mask_in), 0, 1)
  erai_mask(i,:,:)  = pr(i,:,:)
end do
erai_mask  = mask (erai_mask, conform(erai_mask, mask_io, (/0,1,2/)), 1)
copy_VarCoords(p,erai_mask)

采用循环时mask_in(i,:,:) = shapefile_mask_data(pr(i,:,:),shp_filename,True)这一行报错,报错原因是:

fatal:Dimension size mismatch on subscript #1, left-hand and right-hand side dimensions do not match
fatal:["Execute.c":8637]:Execute: Error occurred at or near line 37 in file china.ncl


之前只选取一年的代码如下,可以成功选取
mask_in = shapefile_mask_data(pr(0,:,:),shp_filename,True)
mask_io = where(ismissing(mask_in), 0, 1)
erai_mask  = pr(0,:,:)                    
erai_mask  = mask (erai_mask, conform(erai_mask, mask_io, (/0,1/)), 1)
copy_VarCoords(pr(0,:,:),erai_mask)


大家遇到过类似问题吗,我该怎么改循环
求助

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

新浪微博达人勋

发表于 2022-3-15 14:49:43 | 显示全部楼层
看看变量pr的时间维是不是86
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-3-15 19:56:43 | 显示全部楼层
massage 发表于 2022-3-15 14:49
看看变量pr的时间维是不是86

time确实是86个
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2022-3-17 11:28:35 | 显示全部楼层

经纬度的维呢
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2022-3-17 12:09:50 | 显示全部楼层
问题出在,你的pr没有经纬度属性
应该加上:
pr!1 = "lon"
pr!2 = "lat"
pr&lon = 实际lon
pr&lat = 实际lat
就可以了
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2022-3-23 16:27:55 | 显示全部楼层
不知道楼主现在是怎么解决的,在CSDN看到了同样的问题,已经结题。
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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