添加新云天气象主编微信或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)1112; Longitude co-ordinate13; ................14   nlon=24715   lon=fspan(73.5,135.0,247)16   lon!0="lon"17   lon&lon=lon18   lon@units="degrees_east"19   lon@long_name="Longitude"20   ; printVarSummary(lon)   2122; Latitude co-ordinate23; ................24   nlat=16925   lat=fspan(16.5,58.5,169)26   lat!0="lat"27   lat&lat=lat28   lat@units="degrees_north"29   lat@long_name="Latitude"30   ; printVarSummary(lat)3132   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")3839   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")4243   tp_cma  = f_cma->tp44   tp_eccc = f_eccc->tp45   tp_ecmwf= f_ecmwf->tp46   tp_hmcr = f_hmcr->tp47   tp_ukmo = f_ukmo->tp4849   tp_obs  = f_obs->tp50   tp_era5 = f_era5->tp51   tp_erai = f_erai->tp5253   ; printVarSummary(tp_cma)5455;---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_cma61   ; Type: integer62   ; Total Size: 20 bytes63   ;             5 values64   ; Number of Dimensions: 165   ; Dimensions and sizes:   [5]66   ; Coordinates:67   ; (0)   2768   ; (1)   1469   ; (2)   3070   ; (3)   16971   ; (4)   2477273   mask_in = shapefile_mask_data(tp_erai(0,0,:,:),shp_filename,True)74   mask_io = where(ismissing(mask_in), 0, 1)7576   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 directory81   filo = "ERAI_TP_hr_mask.nc"             ; Output file82   system("/bin/rm -f " + diro + filo)    ; remove if exists83   fout  = addfile (diro + filo, "c")  ; open output file84   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)     ;将所需范围内外数据的分离开34   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基础上多层循环嵌套具有速度快、效率较高。如果你有什么更好更快的办法也欢迎留言!

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

往期回顾:

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

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

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

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

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

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

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

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

  1. ncl 添加点shp文件_一:python读取shapefile文件

    使用geopandas读取shapefile格式的矢量文件 包括shapefile文件的读取.修改.保存 import geopandas as gpd # 导入包 segpath = r" ...

  2. ncl 添加点shp文件_基于Arcgis绘制采样点地图

    很多网友问我关于采样点地图制作的问题,这里介绍一下最简单地图制作的流程. 采样点经纬度信息(本例中以中国部分省会城市为例) 经纬度的格式 加载shp文件 (step by step) 点击图中箭头可以 ...

  3. element ui 批量删除之后动态更新列表_气象编程 | Python高效批量绘图方法

    添加新云天气象主编微信或QQ:130188121,及时获取或发布气象升学.就业.会议.征稿及学术动态等信息!在数值预报后处理中经常需要批量出图,而基于matplotlib的图形渲染速度较慢,而提高出图 ...

  4. ncl如何添加线shp文件_教程合集 | 地图数据找不到?家园都有解决方案!

    原标题:教程合集 | 地图数据找不到?家园都有解决方案! 本栏目为气象家园各类优质教程的合集,每期一个主题. 各位小伙伴在画图的时候是否曾经因为地图问题而头秃呢?第一期将从地图数据部分开始,打好小旗子 ...

  5. ncl如何添加线shp文件_教程合集 | NCL与GrADS地图绘制合集

    小编在整理过程中,发现有很多小伙伴在画图过程中,由于不注意设置投影方式,常常会出现地图和数据偏离的情况,用GrADS作图的小伙伴千万要记得检查投影方式哦!还有什么问题想讨论?欢迎移步气象家园~ 家园的 ...

  6. MATLAB 长度和像素_气象编程 | Matlab教程:nc文件的打开和使用m_map绘制海温图

    添加新云天气象主编微信或QQ:130188121,及时获取或发布气象升学.就业.会议.征稿及学术动态等信息! 近期招聘.培训安排(点击图片了解详情): 在大气科学中,matlab可以用于小规模的科学计 ...

  7. arcgis导出shp文件_地理工具学习--arcgis篇(15):CAD和SHP的简单转换

    最近一直在忙着项目,对这方面的教程写的比较少.趁着今天有时间讲一下cad和shp文件之间的相互转换.利用arcgis完成这个过程. 需要注意的是这个是简单的转换,就仅是单图层之间的转换,对于一般情况下 ...

  8. arcgis批量处理nc文件_气象数据处理——nc文件

    数据说明 NetCDF(network Common Data Form)网络通用数据格式是一种面向数组型并适于网络共享的数据的描述和编码标准.目前,NetCDF广泛应用于大气科学.水文.海洋学.环境 ...

  9. python shp文件_对python 读取线的shp文件实例详解

    如下所示: import shapefile sf = shapefile.reader("e:\\1.2\\cs\\dx_csl.shp") shapes = sf.shapes ...

最新文章

  1. 数组-丢失的数字(哈希表法)
  2. python 的回调函数
  3. 96. 奇怪的汉诺塔【递推】
  4. GIS-004-Cesium版权信息隐藏
  5. 数据结构--二叉树 Binary Tree
  6. 双向链表list.h升序排序
  7. 黑客利用 Gatekeeper 0day 攻击 MacOS 计算机
  8. 全自动备份vss和sql数据库(含源码下载)
  9. Java I/O 进化之路、传统 BIO 编程
  10. day14ARP协议、路由原理、ARP实验、ARP防御、2003虚拟机如何关闭定时锁屏
  11. 汇编语言--常用DOS功能
  12. mysql基础命令集合
  13. BC1.2 PD协议
  14. 100句激励自己的英文名言
  15. ViewPager标签栏滑条
  16. 转《MCU低功耗设计》
  17. 如何阅读一本专业书?
  18. 数学运算符号的英文表达
  19. 5.下载器-Download
  20. 【元宇宙系列】游戏与元宇宙(下)——拉动上游产业发展并引领传统产业数字化转型

热门文章

  1. Debugging into .NET Core源代码的两种方式
  2. ASP.NET跨平台实践:无需安装Mono的Jexus“独立版”
  3. 查看安装软件/Select-object/Where-Object xxx -like
  4. c语言中有12个球,数学老师做不出来的一道逻辑推理题
  5. 【ArcGIS微课1000例】0018:ArcGIS设置相对路径和数据源
  6. 【数据库原理及应用】经典题库附答案(14章全)——第六章:关系数据库设计过程
  7. 【ArcGIS遇上Python】使用add-in向导开发ArcGIS插件(1):add-in工具介绍及安装
  8. 剑指offer之左旋转字符串
  9. linux c之perror和exit使用总结
  10. Android之CSDN 牛人博客索引