标签: netcdf

使用所有可用库编译 Fortran netCDF 程序

首先,我已经阅读了这个主题,但我无法编译我的代码。 在 Ubuntu 上编译 Fortran netCDF 程序

我在 UBUNTU 14.04 上编译一个使用 NetCDF 的 fortran 程序。我有这样的编译错误:

terrain.f:(.text+0x17efd): undefined reference to 'ncopn_'
terrain.f:(.text+0x18111): undefined reference to 'ncopn_'
terrain.f:(.text+0x187cc): undefined reference to 'ncclos_'
terrain.f:(.text+0x187ea): undefined reference to 'ncclos_'
Run Code Online (Sandbox Code Playgroud)

它肯定说我没有 netcdf fortran 库。但我根据这些网页安装了 zlib、HDF5、netcdf C 和 netcdf Fortran,并禁用共享和禁用 dap 选项。

http://www.unidata.ucar.edu/software/netcdf/docs/build_default.html http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-fortran-install.html

这是 nc-config --libs 命令的结果:

-L/usr/local/lib -L/usr/local -lnetcdf -lhdf5_hl -lhdf5 -ldl -lm -lz
Run Code Online (Sandbox Code Playgroud)

这是 nf-config --flibs 命令的结果:

-L/usr/local/lib -lnetcdff -L/usr/local/lib -lnetcdf -lnetcdf -lhdf5_hl -lhdf5 -lz
Run Code Online (Sandbox Code Playgroud)

我用这个命令构建我的项目:

gfortran terrain.f -I/usr/local/include -L/usr/local/lib -lnetcdff -lnetcdf -lhdf5_hl …
Run Code Online (Sandbox Code Playgroud)

fortran compilation netcdf

1
推荐指数
1
解决办法
1606
查看次数

python,netcdf4:需要介绍为netcdf创建无限的时间维度

有人可以介绍一下如何为 NetCDF 文件创建无限时间维度吗?我尝试使用 data.createDimension('t', None),但是当我查看t它时它是一个 Numpy 数组。如果可以的话,也请介绍一下如何给它赋值。我正在使用Python 2.7。

编辑过的问题

我有多个 NetCDF 文件(3 维),对于每个文件,我必须计算一个数组(3 维)。文件之间的时间步长为 3 小时。现在我必须使用每个时间步长的计算数组创建一个新的 NetCDF。我的问题是,我不知道如何访问时间轴,以便我可以将计算出的数组分配给不同的时间步。

编辑过的问题

我想为时间轴分配一个日期。为了创建日期,我datetime像这样使用:

t_start = dt.datetime(1900,1,1)
t_delta = dt.timedelta(hours=3)
Run Code Online (Sandbox Code Playgroud)

两个时间步之间的时间为 3 小时。在循环文件时,时间步的日期计算如下:

t_mom = t_start + i*t_delta
t_mom_str = t_mom.strftime("%d %B %Y %H  %M  %S")
t_mom_var = netCDF4.stringtochar(np.array([t_mom_str]))
Run Code Online (Sandbox Code Playgroud)

我创建了一个像这样的变量:

time = data.createVariable('time', np.float32, ('time'))
Run Code Online (Sandbox Code Playgroud)

现在我想将日期分配给时间变量:

time[i] = t_mom_var[:]
Run Code Online (Sandbox Code Playgroud)

但事实并非如此。谢谢你的帮助。

python dimension netcdf python-2.7 netcdf4

1
推荐指数
1
解决办法
4803
查看次数

使用 Python 3 的 NetCDF 时间序列切片

我正在尝试从NetCDF文件绘制一周的时间序列数据,但遇到了一些问题。

我正在使用以下软件包:

import netCDF4
from matplotlib import pyplot as plt
import numpy as np
import xarray as xr
import dask
Run Code Online (Sandbox Code Playgroud)

首先我导入两个 .nc 文件:

ds1 = xr.open_dataset('ERA5_forecast_100V_247_2008.nc')
ds2 = xr.open_dataset('ERA5_analysis_100V_247_2008.nc')
Run Code Online (Sandbox Code Playgroud)

然后我使用 xarray 选择时间和网格位置:

dsloc1 = ds1.sel(time='2008-02-10',longitude=2.2,latitude=48.7,method='nearest')
dsloc2 = ds2.sel(time='2008-02-10',longitude=2.2,latitude=48.7,method='nearest')
Run Code Online (Sandbox Code Playgroud)

然后我绘制两个时间序列:

dsloc1['v100'].plot.line('b-',figsize=(15,10))
dsloc2['v100'].plot.line('y-')
Run Code Online (Sandbox Code Playgroud)

这产生了我所期望的:

2008 年 2 月 10 日

但是,当我尝试选择日期范围时,出现一些错误......

dsloc1 = ds1.sel(time=slice('2008-03-01','2008-03-07'),longitude=2.2,latitude=48.7,method='nearest')
dsloc2 = ds2.sel(time=slice('2008-03-01','2008-03-07'),longitude=2.2,latitude=48.7,method='nearest')
Run Code Online (Sandbox Code Playgroud)

我确信这可能是一个语法问题,但我花了比我想要的时间更长的时间来尝试解决它。​​非常感谢收到任何建议!

[编辑] 这是回溯:

---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
<ipython-input-308-c3385fa732ab> in <module>()
      1 # select time and grid location (Feb 10th, 2008, near Paris)
----> 2 dsloc1 = ds1.sel(time=slice('2008-03-01','2008-03-07'),longitude=2.2,latitude=48.7,method='nearest') …
Run Code Online (Sandbox Code Playgroud)

python netcdf python-3.x python-xarray

1
推荐指数
1
解决办法
3106
查看次数

如何重新排序/重新组织 netcdf 文件中的变量属性?

我需要将“standard_name”移动为 netcdf 文件中所有变量中存在的第一个属性。

我还没有找到正确的命令,但我希望使用 NCO 可以相当简单。

如果我 ncdump,这是当前输出:

short heading(time) ;
        heading:data_max = 359.88f ;
        heading:long_name = "Ship heading" ;
        heading:data_min = 0.f ;
        heading:units = "degrees" ;
        heading:missing_value = 1.e+38f ;
        heading:add_offset = 179.94f ;
        heading:standard_name = "ship_heading" ;
        heading:scale_factor = -0.005491668f ;
    short depth(time, depth) ;
        depth:positive = "down" ;
        depth:long_name = "Depth" ;
        depth:data_min = 20.48f ;
        depth:units = "meter" ;
        depth:missing_value = 1.e+38f ;
        depth:data_max = 572.5f ;
        depth:standard_name = "depth" ;
        depth:add_offset = 296.49f ; …
Run Code Online (Sandbox Code Playgroud)

shell netcdf nco

1
推荐指数
1
解决办法
877
查看次数

Conan 创建带有依赖项的包

我正在尝试为 netcdf-c 构建 conan 包。NetCDF 需要 zlib 和 hdf5 作为依赖项,它们都可以通过 conan 中心获得。

我将它们作为要求添加到我的 conanfile.py 中。当运行conan create . testing/build从我的 conanfile.py 创建 conan 包时,CMake 无法构建 netcdf-c。的输出conan create显示 zlib 和 hdf5 已安装,但找不到。当使用 cmake 编译 netcdf-c 时,我必须像这样设置配置:CPPFLAGS="-I${H5DIR}/include -I${ZDIR}/include" LDFLAGS="-L${H5DIR}/lib -L${ZDIR}/lib" --prefix=${NCDIR} --disable-dap。我如何在我的内部设置这些标志conanfile.py

柯南文件.py:

from conans import ConanFile, CMake, tools


class NetcdfcConan(ConanFile):
    name = "netcdf_c"
    version = "4.7.3"
    license = "BSD 3-Clause 'New' or 'Revised' License"
    author = "Arne Osterthun arne.osterthun@dlr.de"

    description = "The Unidata network Common …
Run Code Online (Sandbox Code Playgroud)

cmake netcdf conan

1
推荐指数
1
解决办法
2418
查看次数

在单个命令中将两个 NetCDF 文件中的变量相乘

我有两个 netcdf 文件:带有变量 qty_1 和 qty_2 的 file_1.nc 以及带有变量 qty_3、qty_4 和 qty_5 的 file_2.nc。我想要一个包含 3 个变量的文件 qty_3=qty_3*qty_2; qty_4=qty_4+qty_2 和 qty_5。

现在我首先使用将变量复制到 file_2

ncks  -A -v qty_1,qty_2 file_1.nc file_2.nc
Run Code Online (Sandbox Code Playgroud)

然后我正在进行数学运算,

ncap2 -A -s 'qty_3=qty_3*qty_2' -s 'qty_4=qty_4+qty_2' file_2.nc
Run Code Online (Sandbox Code Playgroud)

然而,这需要一些时间。

有没有办法可以用一个命令来完成这个计算?

netcdf nco ncks cdo-climate

1
推荐指数
1
解决办法
1161
查看次数

从多年 netcdf 文件中仅提取 1 个月的内容

我对编程很陌生,我想知道你是否可以帮助我。我有一个包含 2000 年到 2020 年每日降水量数据的文件。我想pandas我可以创建一个数据框,其中仅包含一月份的值 \xe2\x80\x8b\xe2\x80\x8b 但我不明白如何。或者也许CDO创建一个仅包含这些值的新文件。有人可以帮助我吗?我会很感激

\n

netcdf dataframe pandas cdo-climate

1
推荐指数
1
解决办法
905
查看次数

python中使用MFDataset合并netcdf文件

我想的NetCDF文件合并,但它contifuously显示“文件”CBL_plot.py“,第11行,在F = MFDataset(菲力)文件”utils.pyx“,线路274,在netCDF4.MFDataset。INIT(netCDF4.c :3822) IOError:主数据集 THref_11:00.nc 没有聚合维度。”

所以,我只检查了一个netcdf文件,一个netcdf文件的信息如下:

float64 th_ref(u't',) 无限维度 = () 当前大小 = (30,)

看起来没有聚合维度。但是,我想合并那些 netcdf 文件,而不是一一使用。有没有办法创建聚合维度来使这个 MFData 集工作?

下面是我使用的python代码:

    import numpy as np
    from netCDF4 import MFDataset
    varn = 'th_ref'
    fili = THref_*nc'
    f    = MFDataset(fili)
    Th  = f.variables[varn]
    Th_ref=np.array(Th[:])
    print Th.shape
Run Code Online (Sandbox Code Playgroud)

我将非常感谢任何帮助、想法和提示。

谢谢你,艾萨克

python netcdf

0
推荐指数
1
解决办法
4553
查看次数

如何在使用 xarray 加载 NETCDF 文件时解码时间变量

我有一个 netcdf 文件,给出了从 1948 年到 2008 年的月降水值。时间变量的格式如下:

float time(time) ;
        time:units = "months since 1948-01-01 00:00:00" ;
        time:time_origin = "01-JAN-1948:00:00:00" ;
Run Code Online (Sandbox Code Playgroud)

当我尝试使用 Xarray 使用以下命令打开数据集时

ds=xr.open_dataset("C:/Users/vsri/Downloads/prcp_monthly_1948-2008.nc")
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

ValueError: unable to decode time units 'months since 1948-01-01 00:00:00' with the default calendar. Try opening your dataset with decode_times=False.
Run Code Online (Sandbox Code Playgroud)

如果我使用 decode_Times=False 参数,则时间变量会分配一个浮点值(如下所示)

 Coordinates:
      * longitude  (longitude) float32 0.25 0.75 1.25 1.75 ... 358.75 359.25 359.75
      * latitude   (latitude) float32 -89.75 -89.25 -88.75 ... 88.75 89.25 89.75
      * z       (z) float32 0.0
      * time …
Run Code Online (Sandbox Code Playgroud)

datetime netcdf python-xarray

0
推荐指数
1
解决办法
1911
查看次数