您现在的位置 :

首页  >  展会报道 >  > 正文

kalpana使用

时间 :2023-08-24 09:49:55   来源 : 哔哩哔哩

经过个人多天的探索,没有搞清楚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文件的可视化部分,可以把结果做成一个动画,这样确实可以看到区域中变量随时间变化的过程

标签:

推荐文章

X 关闭

X 关闭