商业 来源:哔哩哔哩 时间:2023-08-23 22:18:18
经过个人多天的探索,没有搞清楚Kalpana命令行的具体使用方法,但是可以直接调用库来使用,具体的使用方法在Kalpana的GitHub文档里面有说明,地址如下:
/ccht-ncsu/Kalpana
(资料图)
我根据代码库里面的示例文件,写了一个适用于自己的代码,目标是可视化最大水深。原因是自己的系统不能直接用示例文件里面的代码,例如代码导入的文件,示例文件只导入了两个文件就可以用了,但是我在试验的时候就不行,所以我把代码中用到的模块都导入一个一遍,不完全的说,代码中可能遇到的小问题,我可能都遇到了,总之最后展现形式和示例文件中差不多
#导入所需要的库
import numpy as np
import shapely
import export
import kalpana
import visualizations as vs
import netCDF4
import as plt
import as ccrs
#netcdf文件的路径
nc = r'/home/lock/runtest/run4/'
#定义水位等级列表,我这里定义最小水位是0,最大水位是3,间隔,可以提前看看中zeta_max的范围来确定水位等级
levels = [0,3,]
#创建两个子图,一个是用来看全部区域的,一个是用来具体边界上的数据
fig, ax = (figsize = (8,4), nrows = 1, ncols = 2, subplot_kw={'projection': ()}, constrained_layout=True)
"""
fig: 创建的Figure对象
ax: 每个子图的Axes对象,以数组的形式返回
figsize: 设置Figure的宽高为(8,4)
nrows=1, ncols=2: 设置1行2列子图布局
subplot_kw: 设置每个子图的坐标投影为PlateCarree(),适用于地图投影
constrained_layout=True: 自动设置子图间距
"""
#可视化netCDF文件中的所有区域,需要注意的是这个点需要确定坐标,也是提前查看
_netcdf(nc, 'zeta_max', levels, ax = ax[0], cbar = False, point_circle = (,).buffer(distance=,quad_segs=5))
ax[0].set_title('Full Domain')
#设置可视化区域的经度范围,这个需要提前查看
xlims = [110,111]
#设置可视化区域的纬度范围
ylims = [,]
#可视化文件
_netcdf(nc,'zeta_max',levels,xlims = xlims,ylims = ylims,ax = ax[1],fig = fig,cbar = True,cbar_label = 'Max water level')
ax[1].set_title('Wanning Domain')
#设置图像标题
('max water level',fontsize = 16)
#('')
()
下一个需要解决的问题是如何可视化带有时间序列的和文件,实际上示例文件里面有关于示例文件的处理,但是目前我看到的是,在进行可视化的时候也就是挑选一个时间步的数据,我期望的是可以看到变化的过程,我考虑的是有两个解决方法:
直接用netCDF4库处理提取每一个时间步下的数据到一个文件中,然后对这个文件进行可视化,这样可以看到变化的过程,但是缺点在于一般提取的是一个点的数据,可能无法反映区域的模拟效果
用其他开源框架中对nc文件的可视化部分,可以把结果做成一个动画,这样确实可以看到区域中变量随时间变化的过程
标签:
上一篇:小小社保卡 服务大民生
下一篇:最后一页