标签: netcdf

如何使用 python netCDF4 创建 netCDF 文件?

我正在学习如何使用 Anaconda 中的 Python 模块来使用 netCDF4。我正在尝试将值附加到我创建的两个变量timefield

from netCDF4 import Dataset
import numpy as np

root_grp = Dataset('py_netcdf4.nc', 'w', format='NETCDF4')
root_grp.description = 'Example simulation data'

ndim = 128 # Size of the matrix ndim*ndim
xdimension = 0.75
ydimension = 0.75
# dimensions
root_grp.createDimension('time', None)
root_grp.createDimension('x', ndim)
root_grp.createDimension('y', ndim)

# variables
time = root_grp.createVariable('time', 'f8', ('time',))
x = root_grp.createVariable('x', 'f4', ('x',))
y = root_grp.createVariable('y', 'f4', ('y',))
field = root_grp.createVariable('field', 'f8', ('time', 'x', 'y',))

# data
x_range =  np.linspace(0, …
Run Code Online (Sandbox Code Playgroud)

python numpy netcdf

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

在底图中使用 maskoceans 时,世界的一半被遮蔽

我想在绘制 netCDF 数据集中的数据时掩盖海洋。我遵循了这个问题的答案中给出的重要指示。它对半个世界都有效,但不知何故,格林威治以西的一切也都被遮盖了,无论是海洋还是陆地。这是我的代码:

import netCDF4
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import mpl_toolkits
from mpl_toolkits import basemap
from mpl_toolkits.basemap import Basemap, maskoceans

filename = 'myfile.nc'
vmin = 0.
vmax = 1

nc = netCDF4.Dataset(filename, 'r')
data = nc.variables['sum'][:]  
lats_1d = nc.variables['lat'][:]
lons_1d = nc.variables['lon'][:]
lons, lats = np.meshgrid(lons_1d, lats_1d)

labels = ['DJF', 'MAM', 'JJA', 'SON']
cmap = cm.RdYlBu
cmap.set_over('#00FF00')

my_dpi = 96

fig = plt.figure(figsize=(1200/my_dpi, 800./my_dpi))
for season …
Run Code Online (Sandbox Code Playgroud)

python plot netcdf matplotlib-basemap

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

如何使用 C# 和 Microsoft Scientific Data Set 从 NetCDF 文件中提取数据?

我正在尝试使用Microsoft 的科学数据集库 (SDS)从 NetCDF 文件中提取数据。我仅限于使用 MS SDS 和 C#。我不是一名程序员,所以我正在努力让基础知识发挥作用。首先,我想编写一个简单的脚本来提取数据并将其写入 .csv 文件。使用介绍文档和 Codeplex 教程。我尝试编写一个简单的 C# 控制台应用程序,它只读取文件并将其写入控制台,或者理想情况下写入 .csv 文件。

使用 SDS 1.3 命令行我可以查看测试文件的内容:

D:\NetCDF>sds list test.nc
[2] ACPR of type Single (Time:85) (south_north:213) (west_east:165)
[1] Times of type SByte (Time:85) (DateStrLen:19)
D:\NetCDF>
Run Code Online (Sandbox Code Playgroud)

我的脚本如下所示:

using System;
using System.IO;
using sds = Microsoft.Research.Science.Data;
using Microsoft.Research.Science.Data.Imperative;


namespace NetCDFConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            /// Gets the path to the NetCDF file to be used as a data source. …
Run Code Online (Sandbox Code Playgroud)

c# csv netcdf

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

使用 xarray 在 netCDF 中输出 int32 时间维度

假设我的时间数据在 xarray 数据集中如下所示:

ds = xr.Dataset({'time': pd.date_range('2000-01-01', periods=10)})
ds.to_netcdf('asdf.nc')
Run Code Online (Sandbox Code Playgroud)

xarray 的to_netcdf()方法将时间维度输出为 int64:

$ ncdump -v time asdf.nc
netcdf asdf {
dimensions:
    time = 10 ;
variables:
    int64 time(time) ;
        time:units = "days since 2000-01-01 00:00:00" ;
        time:calendar = "proleptic_gregorian" ;
data:

 time = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ;
}
Run Code Online (Sandbox Code Playgroud)

因为我正在使用不支持 int64 的 THREDDS 服务器,所以我希望这些时间数据为 int32。使用 xarray 可以做到这一点吗?

netcdf python-xarray

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

Python xarray 删除所有缺失变量的坐标

我使用 xarray 导入不同的 netCDF 文件,最终需要将它们全部转换为一个 panda 数据帧。这是一个包含天气数据的文件,随着时间的推移,某些纬度和经度的观测值丢失了许多(因为它们位于海洋中部)。坐标:纬度、经度、时间;变量:温度、预温度。在转换为数据框之前,我想摆脱这些缺失的观察/整个坐标。有没有一种简单有效的方法来使用 xarray 来做到这一点?我在文档中没有找到任何内容。

import pandas as pd 
import xarray as xr

path = 'Z:/Research/Climate_change/Climate_extreme_index/CRU data/'
temp_data = path+'cru_ts4.01.1901.2016.tmp.dat.nc'
pre_data = path+'cru_ts4.01.1901.2016.pre.dat.nc'

# Open netcdf 
def open_netcdf(datapath):
    print("Loading data...")
    data = xr.open_dataset(datapath, autoclose=True, drop_variables='stn', cache=True)
    return data
# Merge dataframes
data_temp = open_netcdf(temp_data)
data_pre = open_netcdf(pre_data)
all_data = xr.merge([data_temp, data_pre])

#################################################################
<xarray.Dataset>
Dimensions:  (lat: 360, lon: 720, time: 1392)
Coordinates:
  * lon      (lon) float32 -179.75 -179.25 -178.75 -178.25 -177.75 -177.25 ...
  * lat      (lat) float32 …
Run Code Online (Sandbox Code Playgroud)

python netcdf python-xarray

5
推荐指数
2
解决办法
1万
查看次数

使用xarray改变坐标系以进行切片操作

我刚来这地方。首先,我非常感谢您的时间和考虑。我有两个关于在 python 中管理 2 个不同的 netcdf 文件的问题。我进行了很多搜索,但不幸的是我找不到解决方案。

1-我有一个 netcdf 文件,其坐标如下:

time     datetime64[ns] 2016-08-16T22:00:00
* y        (y) int32 220000  ...  620000
* x        (x) int32 20000  ...  720000
 lat      (y, x) float64 dask.array<shape=(401, 701), 
 lon      (y, x) float64 dask.array<shape=(401, 701),
Run Code Online (Sandbox Code Playgroud)

我需要将坐标更改为经度/纬度,以便我可以根据特定的经度/纬度坐标(通过使用 xarray)对区域进行切片。但我不知道如何将 x 和 y 更改为 lon lat。这是我的代码:

import xarray as xr
import matplotlib.pyplot as plt
p = "R_201608.nc"
ds = xr.open_mfdataset(p)
q=ds.RR.sel(time='2016-08-16T21:00:00')
Run Code Online (Sandbox Code Playgroud)

2-与 1 类似,我有另一个 netcdf 文件,其坐标如下:

   * X           (X) float32 557600.0 .. 579400.0
   * Y           (Y) float32 5190600 ... …
Run Code Online (Sandbox Code Playgroud)

netcdf coordinate-transformation python-3.x python-xarray netcdf4

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

使用 xarray 获取 netcdf 文件的平均值

我使用 xarray 在 python 中打开了一个 netcdf 文件,数据集摘要如下所示。

Dimensions:    (latitude: 721, longitude: 1440, time: 41)
Coordinates:
  * longitude  (longitude) float32 0.0 0.25 0.5 0.75 ... 359.25 359.5 359.75
  * latitude   (latitude) float32 90.0 89.75 89.5 89.25 ... -89.5 -89.75 -90.0
    expver     int32 1
  * time       (time) datetime64[ns] 1979-01-01 1980-01-01 ... 2019-01-01
Data variables:
    z          (time, latitude, longitude) float32 50517.914 ... 49769.473
Attributes:
    Conventions:  CF-1.6
    history:      2020-03-02 12:47:40 GMT by grib_to_netcdf-2.16.0: /opt/ecmw...
Run Code Online (Sandbox Code Playgroud)

我想得到沿纬度和经度维度的 z 值的平均值。

我尝试使用此代码:

df.mean(axis = 0)

但它正在删除时间坐标,并返回给我这样的东西。

Dimensions:  (latitude: …
Run Code Online (Sandbox Code Playgroud)

python netcdf geopandas python-xarray

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

Xarray combine_by_coords 返回单调全局索引错误

我正在尝试使用 combine_by_coords 组合两个空间 xarray 数据集。这两个数据集是彼此相邻的两个图块。所以有重叠的坐标。在重叠区域中,其中一个数据集的变量值为 nan。

我使用了带有 compat='no_conflicts' 选项的“combine_by_coords”。但是,它返回沿维度 y错误的单调全局索引。看起来它以前是一个问题,但已修复(此处)。所以我真的不知道为什么我会收到这个错误。这是一个示例(netcdf 磁贴在这里):

import xarray as xr

print(xr.__version__)
>>>0.15.1

ds1=xr.open_dataset('Tile1.nc')
ds2=xr.open_dataset('Tile2.nc')
ds = xr.combine_by_coords([ds1,ds2], compat='no_conflicts')
>>>...
 ValueError: Resulting object does not have monotonic global indexes along dimension y
Run Code Online (Sandbox Code Playgroud)

谢谢

python gis netcdf python-xarray

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

netcdf 文件的 xarray 中出现 IO 后端错误

我正在尝试使用 xarray 打开 .netcdf 文件,但它显示此错误。我无法解决此错误,并且没有找到解决此错误的解决方案。我尝试过不同版本的 Anaconda 和 Ubuntu,但问题仍然存在。

ValueError:在 xarray 当前安装的 IO 后端 ['scipy'] 中找不到匹配项。engine考虑通过xarray.open_dataset() 的参数 明确选择已安装的后端之一,或安装其他 IO 依赖项: http: //xarray.pydata.org/en/stable/getting-started-guide/installing.html http://xarray.pydata.org/en/stable/getting-started-guide/installing.html http://xarray.pydata.org/en/stable/getting-started-guide/installing.html /xarray.pydata.org/en/stable/user-guide/io.html

python io netcdf python-xarray

5
推荐指数
2
解决办法
2万
查看次数

Python Xarray ValueError:无法识别的块管理器 dask - 必须是以下之一:[]

我正在使用xarray. 组合多个 netcdf 文件xarray.open_mfdataset。但是我在运行命令时收到错误,下面是命令和错误。

nc_all = xarray.open_mfdataset(files,combine = 'nested', concat_dim="time")
files = glob.glob("/filepath/*")
Run Code Online (Sandbox Code Playgroud)

我收到以下错误 -

Traceback (most recent call last):
  File "/home/lsrathore/GLEAM/GLEAM_HPC.py", line 85, in <module>
    nc_1980_90 = xarray.open_mfdataset(files[1:11],combine = 'nested', concat_dim="time")
  File "/home/lsrathore/.local/lib/python3.9/site-packages/xarray/backends/api.py", line 1038, in open_mfdataset
    datasets = [open_(p, **open_kwargs) for p in paths]
  File "/home/lsrathore/.local/lib/python3.9/site-packages/xarray/backends/api.py", line 1038, in <listcomp>
    datasets = [open_(p, **open_kwargs) for p in paths]
  File "/home/lsrathore/.local/lib/python3.9/site-packages/xarray/backends/api.py", line 572, in open_dataset
    ds = _dataset_from_backend_dataset(
  File "/home/lsrathore/.local/lib/python3.9/site-packages/xarray/backends/api.py", line 367, in _dataset_from_backend_dataset
    ds …
Run Code Online (Sandbox Code Playgroud)

python netcdf python-xarray netcdf4

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