小编Adr*_*ins的帖子

如何更改 NetCDF 中的经度范围

我的 NetCDF 文件有 4 个维度(经度、纬度、时间、水平压力)和几个变量。

我想用 [-20 -18 -16 ... -2 0 2 4 ... 18 20] 替换 [340 342 344 ... 360 0 2 4 ... 18 20] 的经度数据。事实上,经度是从 0° 到 360° 计算的,但我需要从 -180° 到 180°。

我在互联网上找到了一些想法,但我不知道如何应用它们。

这里有一个解释:

“一些 netcdf 文件包含严格的正值 [0,360],这与 gdal/QGis 处理经度值的方式不兼容 - 它们不会环绕日期变更线。这也会导致 gdalwarp 以及与其他数据集([-180,180 ] 值),由于 180 度经度偏移,它们没有正确对齐。

简单的解决方法是测试经度变量并将 [180,360] 间隔中的任何值通过减去 180 转换为 [-180,180] - 在 IReadBlock 和 SRS 检测中。”

我也读过“gdal-translate”,但我不知道如何使用它。

编辑:我的纬度也有问题,它是 N -> S(我想要它 S -> N),由于“cdo invertlat”,我将其反转

replace r projection netcdf cdo-climate

3
推荐指数
2
解决办法
3922
查看次数

如何从脚本内部获取BASH脚本的完整调用命令(而不仅仅是参数)

我有一个BASH脚本,它有一组很长的参数和两种调用它的方法:

my_script --option1 value --option2 value  ... etc
Run Code Online (Sandbox Code Playgroud)

要么

my_script val1 val2 val3 .....  valn 
Run Code Online (Sandbox Code Playgroud)

该脚本反过来编译并运行一个大型FORTRAN代码套件,最终生成一个netcdf文件作为输出.我已经拥有了netcdf输出全局属性中的所有元数据,但是包含用于创建该实验的完整运行命令也是非常好的.因此,接收netcdf文件的另一个用户可以简单地重新输入运行命令以重新运行实验,而无需将所有选项拼凑在一起.

所以这是一个很长的路要走,在我的BASH脚本中,如何从父shell输入最后一个命令并将其放入变量?即脚本问"我怎么叫?"

我可以尝试从选项列表中将它拼凑在一起,但是很长的选项列表和两个接口方法会使这个冗长而艰巨,我相信有一个简单的方法.

我发现这个有用的页面:

BASH:回显最后一个命令运行

但这似乎只能在脚本本身内执行最后一个命令.提问者也提到了历史的使用,但答案似乎暗示历史只会在程序完成后包含命令.

非常感谢你们中的任何人有任何想法.

linux bash shell

3
推荐指数
2
解决办法
2452
查看次数

将低于阈值的值设置为 netcdf 文件中的阈值

我想在 netcdf 文件中将常量c以下的所有值设置为c本身:file.nc

使用气候数据运营商 (CDO) 的解决方案是

cdo mul -gec,$c file.nc file.nc t1.nc
cdo add -mulc,$c -ltc,$c file.nc t1.nc output.nc
rm -f t1.nc
Run Code Online (Sandbox Code Playgroud)

但是有没有更简洁/更短的方法来做到这一点?

bash netcdf nco cdo-climate

3
推荐指数
3
解决办法
2933
查看次数

NCO 使用维度值而不是索引裁剪 netcdf 文件

只要以标准方式定义,CDO 就可以根据纬度和经度裁剪 netcdf 文件,而且我知道,如果您知道所需的索引范围,NCO 可以沿任何维度裁剪 netcdf 文件的子集,如此相关问题的答案所述:

有没有办法裁剪 NETCDF 文件?

但是,我想知道 ncks hyperslabber 是否可以直接处理维度的值,而不是索引值?

netcdf nco netcdf4 cdo-climate

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

NCO:使用NCO ncks从NetCDF文件中提取变量

我试图通过输入以下命令从多变量netcdf文件中提取变量:

ncks -v ta temp1.nc out.nc
Run Code Online (Sandbox Code Playgroud)

但是,然后我查看out.nc标头,所有变量仍然存在。

temp1.nc和out.nc的标头如下:

--- temp1.nc header ---
dimensions:
        time = UNLIMITED ; // (124 currently)
        lon = 256 ;
        bnds = 2 ;
        lat = 128 ;
        lev = 40 ;
variables:
        double time(time) ;
                time:standard_name = "time" ;
                time:long_name = "time" ;
                time:units = "days since 1850-1-1" ;
                time:calendar = "365_day" ;
                time:axis = "T" ;
        double lon(lon) ;
                lon:standard_name = "longitude" ;
                lon:long_name = "longitude" ;
                lon:units = "degrees_east" ;
                lon:axis = "X" …
Run Code Online (Sandbox Code Playgroud)

netcdf nco ncks cdo-climate

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

如何在不使用scipy的情况下计算python中的累积分布函数

如何在不使用scipy的情况下计算python中正态分布的累积分布函数?

我特别指的是这个功能:

from scipy.stats import norm
norm.cdf(1.96)
Run Code Online (Sandbox Code Playgroud)

我有一个在Heroku上运行的Django应用程序,并且在Heroku上运行起来非常麻烦.因为我只需要这个来自scipy的函数,所以我希望我可以使用替代方法.我已经在使用numpy和pandas了,但我找不到那里的功能.我可以使用任何替代包,甚至自己实现它?

python scipy

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

我应该如何使用 CDO Selyear?我得到的输出文件大四倍

CDO 似乎对我来说工作得很好,直到我遇到了这个。我有一个从 2101 年到 2228 年的每日数据的 netcdf,并且我想获取一个仅包含从 2101 年到 2227 年的年份的文件,所以我运行:

cdo selyear,2101/2227 in.nc out.nc
Run Code Online (Sandbox Code Playgroud)

但输出文件的内存大小是输入文件的四倍多!它似乎具有正确的时间步数,并且初始日期和结束日期都是正确的。另外,纬度和经度似乎与输入相同,所以我想知道为什么文件大小如此。

netcdf netcdf4 cdo-climate

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

使用 CDO 计算 ERA5 每日总降水量

本质上,这是这个问题的转帖:https ://confluence.ecmwf.int/pages/viewpage.action?pageId =149341027

我已经从 CDS 下载了 ERA5。对于从每个考虑年份的 1 月 1 日到 12 月 31 日的每个日历日,输入文件具有 24 小时步长(0、1、2、3、4、...、23)。

ECMWF 在此声明https://confluence.ecmwf.int/display/CKB/ERA5%3A+How+to+calculate+daily+total+precipitation必须通过累加 1979 年 1 月 1 日的降水来计算每日总降水量1 月 1 日的第 1、2、...、23 步和 1 月 2 日的第 0 步。这意味着 1979 年 1 月 1 日的第 0 步不包括在当天的总降水量计算中。为了计算 1979 年 1 月 2 日的总降水量,我们还使用当天的步骤 1、2、3、...、23 加上 1 月 3 日的步骤 0,依此类推。

在 python 中似乎有一个选项可以这样做:

import xarray as xr                                                    # import xarray library
ds_nc = xr.open_dataset('name_of_your_file.nc')                        # read the file
daily_precipitation = …
Run Code Online (Sandbox Code Playgroud)

python weather netcdf cdo-climate era5

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

使用气候数据运营商 (CDO) 的每日数据的月雨天总和

我有每日时间分辨率的气候数据,并希望按月和按年计算有降水(例如,大于 1 毫米/天)的天数。

我试过eca_pd,1and eca_rr1,但这些命令返回所有年份的雨天总数。

例如, cdo eca_pd,1 infile outfile

是否有命令返回每个月和/或年的雨天?

weather netcdf nco netcdf4 cdo-climate

3
推荐指数
2
解决办法
716
查看次数

使用 pynco 包压缩 netCDF 文件

我有兴趣使用该pynco包在 python 中压缩 NetCDF 文件。在命令行中,我通常会使用:

nccopy -d 3 input_file.nc output_file.nc
Run Code Online (Sandbox Code Playgroud)

在 python 中,我尝试了以下操作:

from nco import Nco
Nco.nccopy(input='input_file.nc', output='output_file.nc', options=['-d 1'])

Run Code Online (Sandbox Code Playgroud)

这会产生属性错误'Nco' has no attribute 'nccopy'。是否nccopy支持pynco

python-3.x nco pynco

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

标签 统计

cdo-climate ×7

netcdf ×7

nco ×5

netcdf4 ×3

bash ×2

python ×2

weather ×2

era5 ×1

linux ×1

ncks ×1

projection ×1

pynco ×1

python-3.x ×1

r ×1

replace ×1

scipy ×1

shell ×1