ncl 添加点shp文件_气象编程 | NCL高效快速精准提取不规则区域内的格点数据
添加新云天氣象主編微信或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基礎上多層循環嵌套具有速度快、效率較高。如果你有什么更好更快的辦法也歡迎留言!
有任何問題都歡迎交流探討,共同學習進步!
往期回顧:
氣象招聘 |?中國海洋大學2020年科研博士后招聘啟事(含大氣/海洋)
氣象招聘?| 2020年中國氣象局上海臺風研究所崗位招聘公告
2020上海國際氣象人才招聘會&大氣與環境科學青年人才論壇延期通知
新云天氣象公眾號聯系人微信/QQ:130188121
2020大氣與海洋春季招聘會QQ群:346577427
2021屆氣象本科考研與就業QQ群:639522239
2020上海氣象招聘會(21屆秋招)群:696948743
總結
以上是生活随笔為你收集整理的ncl 添加点shp文件_气象编程 | NCL高效快速精准提取不规则区域内的格点数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大气校正后的ndvi_大气校正常见错误处
- 下一篇: 真正够智能的真无线耳机真正够智能的真无线