ncl 添加点shp文件_气象编程 | NCL高效快速精准提取不规则区域内的格点数据

fa258d61d124b3a51e308f0ae6d57912.png

添加新云天气象主编微信或QQ:130188121,及时获取或发布气象升学、就业、会议、征稿及学术动态信息!

       通常情况下,要获取某个区域内的格点数据,如果要求不是很高,直接采取矩形框挑选方法——即锁定所需范围内的经纬度,就能挑选出需要的数据。而对于不规则的范围,数据的匹配精度有一定要求,譬如,需要严格按照某个特定区域的shapefile文件来截取数据。虽然,NCL官网提供了可行的解决方案,但是 shapefile_mask_data(包含在shapefile_utils.ncl中,官网有提供)也仅仅是较好地适用于2维的Lat-Lon数据,对于3维或者更高维度的数据,其处理效率非常低下。所以,针对于这个问题,在实际的操作中我给出了一个快速处理的方案,仅供参考:

 1   load "../shapefile_utils.ncl"
2
3   yearn =  14 ; 1996-2009   
4   leadn =  30 ; days  
5   pentadn = 6
6   itemn = 3
7   year  = ispan(1996,2009,1)
8   lead  = ispan(1,30,1)  
9   pentad= ispan(1,6,1)
10   item  = ispan(1,3,1)
11
12; Longitude co-ordinate
13; ................
14   nlon=247
15   lon=fspan(73.5,135.0,247)
16   lon!0="lon"
17   lon&lon=lon
18   lon@units="degrees_east"
19   lon@long_name="Longitude"
20   ; printVarSummary(lon)   
21
22; Latitude co-ordinate
23; ................
24   nlat=169
25   lat=fspan(16.5,58.5,169)
26   lat!0="lat"
27   lat&lat=lat
28   lat@units="degrees_north"
29   lat@long_name="Latitude"
30   ; printVarSummary(lat)
31
32   filp1   = "/Users/zhpfu/Dropbox/S2S_material/code/S2S_South_China_Tibet_NEW/0.TP/"
33   f_cma   = addfile(filp1+"CMA_TP_hr.nc","r")
34   f_eccc  = addfile(filp1+"ECCC_TP_hr.nc","r")
35   f_ecmwf = addfile(filp1+"ECMWF_TP_hr.nc","r")
36   f_hmcr  = addfile(filp1+"HMCR_TP_hr.nc","r")
37   f_ukmo  = addfile(filp1+"UKMO_TP_hr.nc","r")
38
39   f_obs   = addfile(filp1+"Obs_TP_hr.nc","r")
40   f_era5  = addfile(filp1+"ERA5_TP_hr.nc","r")
41   f_erai  = addfile(filp1+"ERAI_TP_hr.nc","r")
42
43   tp_cma  = f_cma->tp
44   tp_eccc = f_eccc->tp
45   tp_ecmwf= f_ecmwf->tp
46   tp_hmcr = f_hmcr->tp
47   tp_ukmo = f_ukmo->tp
48
49   tp_obs  = f_obs->tp
50   tp_era5 = f_era5->tp
51   tp_erai = f_erai->tp
52
53   ; printVarSummary(tp_cma)
54
55;---Open shapefile and read lat/lon values.
56   dir      = "/Users/zhpfu/Dropbox/S2S_material/code/South_China_Tibet/xinan/"  
57   shp_filename = dir + "southwest.shp"
58   ; dim_cma  = dimsizes(tp_cma)
59   ; print(dim_cma)
60   ; Variable: dim_cma
61   ; Type: integer
62   ; Total Size: 20 bytes
63   ;             5 values
64   ; Number of Dimensions: 1
65   ; Dimensions and sizes:   [5]
66   ; Coordinates:
67   ; (0)   27
68   ; (1)   14
69   ; (2)   30
70   ; (3)   169
71   ; (4)   247
72
73   mask_in = shapefile_mask_data(tp_erai(0,0,:,:),shp_filename,True)
74   mask_io = where(ismissing(mask_in), 0, 1)
75
76   erai_mask  = tp_erai                     
77   erai_mask  = mask (erai_mask, conform(erai_mask, mask_io, (/2,3/)), 1)
78   copy_VarCoords(tp_erai,erai_mask)
79;===================================================================  
80   diro = "/Users/zhpfu/Dropbox/S2S_material/code/S2S_South_China_Tibet_NEW/0.TP/"           ; Output directory
81   filo = "ERAI_TP_hr_mask.nc"             ; Output file
82   system("/bin/rm -f " + diro + filo)    ; remove if exists
83   fout  = addfile (diro + filo, "c")  ; open output file
84   fout->tp = erai_mask

其中核心代码就是

1   mask_in = shapefile_mask_data(tp_erai(0,0,:,:),shp_filename,True) ; 构建母版——最基础的2D mask范围
2   mask_io = where(ismissing(mask_in), 0, 1)     ;将所需范围内外数据的分离开
3
4   erai_mask  = tp_erai                                          ;简化的数组创建方案                 
5   erai_mask  = mask (erai_mask, conform(erai_mask, mask_io, (/2,3/)), 1)  ;处理高维数组进行mask6   copy_VarCoords(tp_erai,erai_mask)                 ;复制坐标信息

总结一下:由于使用了自带的mask、conform和where函数,相比于shapefile_mask_data基础上多层循环嵌套具有速度快、效率较高。如果你有什么更好更快的办法也欢迎留言!

任何问题都欢迎交流探讨,共同学习进步!

c43e81405bb3c72eccd387d835b04748.png

往期回顾:

气象招聘 | 中国海洋大学2020年科研博士后招聘启事(含大气/海洋)

气象招聘 | 2020年中国气象局上海台风研究所岗位招聘公告

2020上海国际气象人才招聘会&大气与环境科学青年人才论坛延期通知

新云天气象公众号联系人微信/QQ:130188121

2020大气与海洋春季招聘会QQ群:346577427

2021届气象本科考研与就业QQ群:639522239

2020上海气象招聘会(21届秋招)群:696948743

30910906f8db2122a6449f8ec4adb0f2.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/305447.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2021技术领域趋势报告:Rust继续增长、低代码是重要趋势

喜欢就关注我们吧!OReilly 发布了一份《2021 年编程、运维、AI 和云计算的发展方向》报告,该报告基于 OReilly 在线学习平台产生的数据,就技术行业的趋势进行了一番分析。编程语言方面,报告从使用情况、使用量的同比增长以及搜索查…

python中list的意思_list在python中是什么意思

序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。 Python有6个序列的内置类型,但最常见的是列表和元组。 序列都可以进行的操作包括索引&a…

cad必练10张图_CAD比例问题大详解!赶紧收藏!

下面我们来按照从小白的起点学习比例问题:对于比例问题,最关键的一点,就是要弄明白「现实世界」「CAD 的虚拟模型空间」「打印出来的图纸」这三个世界之间的关系。弄明白了这个,一切就迎刃而解了。「现实世界」和「打印出来的纸质…

腾讯招.NET5,居然要求精通MySQL,而不是SQLServer!

春节将至,短暂的2020年正式要宣告结束,展望2021,可谓风起云涌,可以预见.NET5和云原生将是大热话题,NET开发者该如何把握机遇?逛逛招聘网站,看看大厂招聘,这是市场风向标。该学习的东…

32位mysql安装包_MySQL安装指南(CPT103)

随着CPT课程逐步开课,小猿发现了Online 大概等于 Self Learning 的状况,IT相关课程的学生们只能野蛮生长了(悲)。MySql作为一款应用级的软件,在Windows系统上安装过程比较繁琐,写篇文章帮大家避些小猿踩过的坑。MySQL收费&#xf…

Apache ECharts顺利毕业,成为ASF顶级项目

喜欢就关注我们吧!1 月 26 日晚,Apache 基金会官方宣布 ECharts 项目正式毕业,成为 Apache 顶级项目。ECharts 是一款基于 JavaScript 的数据可视化图表库,提供直观,生动,可交互,可个性化定制的…

契税申报期限_税局正式公告!财产和行为税合并纳税申报!附税种申报要点

税局正式公告!财产和行为税合并纳税申报!安徽省、重庆市等地,11月23日都发布了《关于实行财产和行为税合并纳税申报的公告》一、申报方式:财产和行为税合并申报 二、申报税种:申报缴纳城镇土地使用税、房产税、车船税、…

c++ 多重背包状态转移方程_【考前再叮嘱】陌生方程式书写

点击上方蓝字 关注“爱学化学”今日分享陌生方程式书写作者|何佳欢 它来了,它真的来了,万众瞩目的期中考试正在缓缓向我们走来,纵观往年试题,陌生方程式书写绝对是众多考点中的C位,尤其是陌生的氧化还原反应方程式书…

网络被屏蔽了怎么办_预埋的网线不够长,怎么办?

前几天直播的时候,有很多朋友发弹幕问小泽,家里预埋的网线发现不够长怎么办?还有些朋友问家里的线不小心被弄断了怎么办?对于这些网线不够长或者网线断了的问题,其实很简单,小泽总结出三种简单的方法。不同…

推荐:Redis桌面管理工具RedisDesktopManager

背景大家平常在开发的时候,Redis 肯定是必不可少的,那么平常使用的时候,我们就需要一款合适的IDE来操作,以提高效率。下面推荐下RedisDesktopManager 。简介Redis Desktop Manager官方版是一款简单快速、跨平台的Redis桌面管理工具…

python getattr_详解 Python 的二元算术运算,为什么说减法只是语法糖?

原题 | Unravelling binary arithmetic operations in Python作者 | Brett Cannon译者 | 豌豆花下猫(“Python猫”公众号作者)声明 | 本翻译是出于交流学习的目的,基于 CC BY-NC-SA 4.0 授权协议。为便于阅读,内容略有改动。大家对我解读属性访问的博客文…

echarts 地图自定义图标_DMKB08:Echarts 分段设色

为了丰富DataMap的可视化效果,集成了百度的Echarts本文讲解Echarts分段设色。关于Echarts可以浏览官网:Apache ECharts (incubating)​echarts.apache.org【A】操作步骤1、主控切换到eCharts2、数据模板,NF009开始有数个模板,可以…

.net:设计一个web应用

web应用相对desktop应用就要复杂一些,桌面应在一个时间点是为单访问服务,web应用,在一个时间点,设计的是为多人服务;桌面应用UI和后面代码是一体的,在一台设备上动行表示,但web服务,…

case when影响性能吗_字段为NULL会影响查询性能吗?

导读假设这个用户中心系统是一个交友平台的一个子系统,现在产品想要提供一个按生日区间筛选用户的功能。那么,要实现这个功能,我们需要写这么一条SQL:SELECT 为了保证这条SQL的查询性能,我们会给用户表中的birthday字段…

c++ 模板类实现堆栈实验报告_编译原理——小型类C编译器的设计和实现(生成8086汇编代码)之1:问题定义以及总体功能...

前面花了两篇文章来介绍词法分析和语法分析,接下来才是比较有意思的部分——一个小型类C编译器的设计和实现(其实是编译原理的课程设计啦!~)我用的是python2.7.13PyQt来做的。。。事实上,正是从编译原理课程设计开始&a…

ansys fluent udf manual 下载_FLUENT流固耦合柱体结构涡激振动仿真案例解析

作者 | 陈东阳博士 仿真秀科普作者一、柱体结构涡激振动定义对于海洋工程、风工程上普遍采用的圆柱形断面结构物,流体绕过柱体时会产生交替发放的泻涡,这种交替发放的泻涡又会在柱体上生成顺流向及横流向周期性变化的脉动压力。如果此时柱体是弹性支撑的…

SQL Server的数据导入MySQL数据库方法简介

第一种是安装mysql ODBC,利用sql server的导出功能,选择mysql数据源,进行数据的直接导出,这种方法很简便,但是针对实际应用有很多弊端,最主要体现就是数据类型问题,首先,sql server数…

添加图标_win10系统轻松添加显示桌面图标的操作方法

win10系统想必大家都非常熟悉吧,然而有时候可能会碰到win10系统对win10系统添加显示桌面图标进行设置,比如近日有用户到本站反映说对win10系统添加显示桌面图标设置的情况,到底该怎么设置win10系统添加显示桌面图标呢?我们只用按照…

分享干货:靠刷算法题,真的可以刷进大厂吗?

在国外 Facebook,Google 等互联网巨头中,算法无疑是面试中的重头戏,不过,在最近几年国内互联网大厂面试中,算法的比重也越来越高,算法不扎实,笔试可能就直接被刷了。那你知道大厂的技术面为什么…

SwitchBox系列 - 介绍

很多客户问到了如何让iAMT能够穿过防火墙或网关被管理,他们中的部分也了解到了Intel工程师开发的SwitchBox方案,但都不是很了解。基于此,我正好有机会来共享一些在SwitchBox方面的经验和理解。虽然Intel AMT技术是基于TCP/IP协议上的&#xf…