收藏本站 劰载中...网站公告 | 吾爱海洋论坛交流QQ群:835383472

LLC4320模式按照范围提取数据

[复制链接]
本节继续上节留下的问题之一:
  • • 按照经纬度范围提取数据4 E/ u; M. V2 }  S( x
刚才查看ECCO门户,发现流量超载,停止数据下载服务了。LLC4320本质上不适合下载后计算,而适合云计算(PB级别的运算),后面我将尝试LLC4320的云计算。这里所谈的下载也仅限于非常小的范围,只有在小范围筛选的条件下,高分辨率模式数据的下载才有单机操作的实践意义。
准备
略(参考上一节,主要是加载Python库)。
/ ~2 k% T, e7 `. H. S
范围选取
& a5 Z+ ?0 j+ H$ l& ^+ o
这里还是仅保存少量有用的参数,删除大部分暂时用不上的无维度坐标。注意XC和YC代表了经纬度,在此保留。
temp=ds_sst.Theta.reset_coords()[["XC", "YC","Theta"]]
使用经纬度进行数据选取,选择区域是南非海域:
temp.where((temp.XC < 60) & (temp.XC >0) & (temp.YC >-50) & (temp.YC <-10)).Theta.plot()
582f68c2d5949934e91aa43e7ef83695.png
8 V# G; ]1 i0 n+ ?0 e# f% `
现在已经按照经纬度范围选好了数据。但是检查发现数据的尺寸没有减小,这里还缺少一步:
temp.where((temp.XC < 60) & (temp.XC >0) & (temp.YC >-60) & (temp.YC <-20),drop=True).Theta.plot(cmap="magma")
99e9b56e3c01d4f6a6b69e6d78e199e1.png

; S$ u1 B6 k, }, _
通过drop范围之外的数据,数据大小正常了,它的范围正是我们通过经纬度筛选的范围。
然后保存,文件大小约90M:
small_ex=temp.where((temp.XC < 60) & (temp.XC >0) & (temp.YC >-60) & (temp.YC <-20),drop=True)
; b; e+ G+ S+ i) e3 L/ Jsmall_ex.to_netcdf('myfile2.nc')
按照经纬度选取数据的速度较慢,原因是对XC和YC进行了对比计算。此外也可以使用维度坐标ij的切片进行选取,前提是大致知道ij和经纬的对应(可以从绘图中大致查看)。
small_ex2=temp.isel(k=0,i=slice(1824, 4703,1),j=slice(4040,6857,1))( W# V  {8 z& ]$ `* z
small_ex2.to_netcdf('myfile2.nc')
坐标切片的速度更快,无对比运算,结果完全一样,因此推荐使用它。

4 m+ W3 M$ W$ j. B+ Z& Y; n! ]
地理绘图
$ r: Y3 f5 c6 m4 E( t) U, L' D
上节,我们看到LLC4320的绘图坐标标注均为网格点数,而不是经纬度。那么怎么使用经纬度表达呢?这里我们初次使用Julia的GMT和RemoteS。
  • • Julia GMT是GMT的一个Julia语言包。
  • • RemoteS是针对复杂地理网格绘图的Julia包。
    9 w7 `  l! S. {* {5 E
代码仅需两行:
G = grid_at_sensor("./myfile4.nc", "Theta",region=(0,50,-50,-10),xarray="XC", yarray="YC", inc=0.03);5 r) R9 l( Z4 s8 G' ^
7 C9 b! o$ a6 A4 C) E
imshow(G, proj=:guess, coast=true, dpi=200)
1425e44bb6aac0fd6c692f3f92ac8761.png
& q% j8 I5 Q% x& B. v
下节预告
  • • 时间维度的连续导出
  • • 数据计算& U3 `1 _4 g6 `; b3 l

0 p2 Q) p% _& e  l3 ^/ y
回复

举报 使用道具

相关帖子

全部回帖
暂无回帖,快来参与回复吧
懒得打字?点击右侧快捷回复 【吾爱海洋论坛发文有奖】
您需要登录后才可以回帖 登录 | 立即注册
半座山
活跃在2026-4-4
快速回复 返回顶部 返回列表