我有一个netCDF文件,我想从纬度/经度边界定义一个子集(即一个纬度/经度定义的框),使用R中的'ncdf'包.
我的netCDF文件摘要如下.它有两个维度(纬度和经度)和1个变量(10U_GDS4_SFC).它本质上是一个包含风值的纬度/长度网格:
[1] "file example.nc has 2 dimensions:"
[1] "lat_0 Size: 1280"
[1] "lon_1 Size: 2560"
[1] "------------------------"
[1] "file example.nc has 1 variables:"
[1] "float 10U_GDS4_SFC[lon_1,lat_0] Longname:10 metre U wind component Missval:1e+30"
Run Code Online (Sandbox Code Playgroud)
纬度变量从+90到-90运行,经度变量从0到360运行.
我希望使用以下地理边界边界提取整个网格的子集:
左下角:Lat:34.5˚,长:355˚,左上角:Lat:44.5˚,长:355˚,右上角:Lat:44.5˚,长:12˚,右下角:Lat:34.5˚ ,长:12˚
我知道可以使用get.var.ncdf()命令提取变量的一部分(下面的例子):
z1 = get.var.ncdf(example.nc, "10U_GDS4_SFC", start=c(11,26), count=c(5,5))
Run Code Online (Sandbox Code Playgroud)
但是,我无法弄清楚如何合并纬度/经度,以便最终得到包含变量值的子集空间网格.我不熟悉使用R中的netCDF值,我们将非常感谢您的建议.非常感谢!
这似乎是这个问题的重复:
基本上我想设置颜色条范围来设置限制,例如 0 到 2。当我使用 vmin 和 vmax 时,contourf 中的颜色范围设置正确,但颜色条只显示裁剪范围,即链接中的解决方案没有使用contourf 时似乎有效。我错过了一些明显的东西吗?
import numpy as np
import matplotlib.pyplot as plt
fld=np.random.rand(10,10)
img=plt.contourf(fld,20,cmap='coolwarm',vmin=0,vmax=2)
plt.colorbar(img)
Run Code Online (Sandbox Code Playgroud)
导致
如何使用轮廓将颜色条范围强制为 0 到 2?
我用Python训练了一个单层神经网络模型(一个没有keras和tensorflow的简单模型)。在Python中训练后如何将其与权重一起保存,以及稍后如何加载?
我已经安装了 ecCodes 库
pip install eccodes
Run Code Online (Sandbox Code Playgroud)
当我用“pip list”检查它时,它似乎安装为 0.9.7 版本,但命令:
python -m eccodes selfcheck
Run Code Online (Sandbox Code Playgroud)
返回错误
RuntimeError: Could not load the ecCodes library!
Run Code Online (Sandbox Code Playgroud)
当我尝试导入 eccodes 时,会发生同样的错误。我使用的是 Windows 10 和 Python 3.7.6 有什么问题吗?
完整错误:
import eccodes
Traceback (most recent call last):
File "<ipython-input-1-cfa7540a6bb2>", line 1, in <module>
import eccodes
File "C:\Users\admin1\anaconda3\lib\site-packages\eccodes\__init__.py", line 15, in <module>
from .eccodes import *
File "C:\Users\admin1\anaconda3\lib\site-packages\eccodes\eccodes.py", line 12, in <module>
from gribapi import __version__
File "C:\Users\admin1\anaconda3\lib\site-packages\gribapi\__init__.py", line 13, in <module>
from .gribapi import * # noqa
File …Run Code Online (Sandbox Code Playgroud) 我目前正在尝试使用一个 NetCDF 文件(可以从https://doi.pangaea.de/10.1594/PANGAEA.828650下载的开源数据)从该数据集中提取特定纬度(https://www.nodc .noaa.gov/archive/arc0105/0160558/3.3/data/0-data/spco2_1982-2015_MPI_SOM-FFN_v2016.nc,再次开源)。
第一个数据集是全球海洋中被称为生物群落的定义区域,我已成功从该区域中提取了覆盖标记为 16 和 17 的生物群落的区域。
该数据集具有以下网格类型:
gridtype = generic
gridsize = 64800
xsize = 180
ysize = 360
xname = lat
xunits = "degrees latitude"
yname = lon
yunits = "degrees longitude"
xfirst = -89.5
xinc = 1
yfirst = -179.5
yinc = 1
Run Code Online (Sandbox Code Playgroud)
第二种网格类型是海洋碳通量的全球数据集(参数:fgco2_raw),我希望从 Time_Varying_Biomes.nc 中生物群落 16 和 17 定义的区域中提取值。
此数据集 spco2_1982-2015_MPI_SOM-FFN_v2016.nc 具有以下网格类型:
gridtype = lonlat
gridsize = 64800
datatype = float
xsize = 360
ysize = 180
xname = lon
xlongname …Run Code Online (Sandbox Code Playgroud) 有没有办法在 Windows 上将 grib 文件转换为 NetCDF 格式?
我使用了一个名为的软件,tkdegrib但它通过一个参数捕获一个参数,而我希望所有 grib 的参数都在同一个文件中。不幸的是,我不能使用 Linux。
想象一下,您有一个文件example.nc,其风力数据定义在90N,90S,180E,180W区域.无论如何我可以在linux中使用简单的nc类型命令(不用在matlab/python中提取数据来重写),裁剪此文件以包含一个较小的区域,上面的子集.
例如,30N,10S,60E和30W.
我有一个 netcdf 文件,其中的数据是 lon、lat 和 time 的函数。我想计算在时间维度上求和的每个网格单元中缺失条目的总数,最好使用 CDO 或 NCO,因此我不需要调用 R、python 等。
我知道如何获得缺失值的总数
ncap2 -s "nmiss=var.number_miss()" in.nc out.nc
Run Code Online (Sandbox Code Playgroud)
正如我对这个相关问题的回答: count number of missing values in netcdf file - R
并且 CDO 可以告诉我空间总和
cdo info in.nc
Run Code Online (Sandbox Code Playgroud)
但我不知道如何随着时间的推移求和。例如,有没有一种方法可以指定要在 ncap2 中使用 number_miss 求和的维度?
给出(虚拟)向量
index=log(seq(10,20,by=0.5))
Run Code Online (Sandbox Code Playgroud)
我想计算具有居中窗口的运行平均值和每端的锥形窗口,即第一个条目保持不变,第二个是窗口大小的平均值3,依此类推,直到达到指定的窗口大小.
这里给出的答案:计算移动平均线,似乎都会产生一个较短的向量,切断窗口太大的起点和终点,例如:
ma <- function(x,n=5){filter(x,rep(1/n,n), sides=2)}
ma(index)
Time Series:
Start = 1
End = 21
Frequency = 1
[1] NA NA 2.395822 2.440451 2.483165 2.524124 2.563466 2.601315
[9] 2.637779 2.672957 2.706937 2.739798 2.771611 2.802441 2.832347 2.861383
[17] 2.889599 2.917039 2.943746 NA NA
Run Code Online (Sandbox Code Playgroud)
同样的
rollmean(index,5)
Run Code Online (Sandbox Code Playgroud)
来自动物园的包裹
有没有一种快速的方法来实现锥形窗口而不需要编写循环编码?
我有一个包含大量缺失数据点的月度数据的时间序列,设置为NA.我想简单地从数据中减去年度周期,忽略丢失的条目.似乎分解函数无法处理丢失的数据点,但我在其他地方看到过建议使用季节性包.但是我也遇到了NA的问题.
以下是使用内置数据集的问题的最小可重现示例...
library(seasonal)
# set range to missing NA in Co2 dataset
c2<-co2
c2[c2>330 & c2<350]=NA
seas(c2,na.action=na.omit)
Error in na.omit.ts(x) : time series contains internal NAs
Run Code Online (Sandbox Code Playgroud)
是的我知道!这就是为什么我要你省略它们!我们试试这个:
seas(c2,na.action=na.x13)
Error: X-13 run failed
Errors:
- Adding MV1981.Apr exceeds the number of regression effects
allowed in the model (80).
Run Code Online (Sandbox Code Playgroud)
嗯,有趣,不知道这意味着什么,好吧,请排除NA:
seas(c2,na.action=na.exclude)
Error in na.omit.ts(x) : time series contains internal NAs
Run Code Online (Sandbox Code Playgroud)
这没多大帮助!并且好的措施
decompose(c2)
Error in na.omit.ts(x) : time series contains internal NAs
Run Code Online (Sandbox Code Playgroud)
我在以下内容:
R version 3.4.4 (2018-03-15) -- "Someone to Lean On"
Copyright …Run Code Online (Sandbox Code Playgroud) cdo-climate ×5
netcdf ×4
python ×3
r ×3
nco ×2
bash ×1
eccodes ×1
grib ×1
linux ×1
matplotlib ×1
mean ×1
missing-data ×1
netcdf4 ×1
pickle ×1
scikit-learn ×1
subset ×1
time-series ×1
xts ×1
zoo ×1