问题标签 [netcdf4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1538 浏览

python - 在 Python 中创建 NetCDF 文件时如何指定维度值?

我正在创建一个当前有四个变量的 NetCDF4 文件:

1)地表温度(3D数组-时间、纬度、经度)

2)经度(1D - 每个像素中心的坐标)

3)纬度(1D - 每个像素中心的坐标)

4) 时间(从 1900-01-01 00:00:00 开始的图像采集时间,以小时为单位)

我目前正在使用以下代码来执行此操作:

此代码生成一个 netCDF 文件,其中地表温度变量具有 24 个波段(一天中的每个小时一个波段)。这段代码可以按照我的意愿工作,尽管我希望解决一个小问题。当我为 LST 变量运行 gdalinfo 时,我得到(这是一个简化版本):

我希望将这个值 1 设置为与我在上面的代码中包含的“时间”变量(自 1900-01-01 00:00:00 以来的 1081451 小时)相同。因此,我想了解如何为文件中的每个波段进行更改?

更新问题:当我对文件执行 gdalinfo 时(再次,一个子集):

但是有一个选项缺少“NETCDF_DIM_time_VALUES”,我需要将其设置为时间变量,它应该可以工作。我该怎么做呢?

目前它只是被设置为频段编号,但我希望它包含有关其获取时间的信息。

更新 1:

我试图指定

在 netCDF 文件形成期间,这已将所有时间值分配给 gdal 中的 NETCDF_DIM_TIME,因此每个波段都有 24 个时间值,而不仅仅是一个。

更新 2:

通过进一步挖掘,我认为需要将 NETCDF_DIM_time_VALUES 元数据设置为“时间”变量。我已经更新了我的问题,询问如何做到这一点。

0 投票
2 回答
2164 浏览

netcdf - 如何将新数据附加到现有的 netcdf 文件中

我有一个我创建的多变量 ncdf,并想为每个变量添加额外的数据。纬度和经度维度将保持不变,但我想通过将新数据附加到每个变量来扩展时间维度。新数据集具有相同数量的变量,dim1 和 dim2,但其 dim3 开始于第一个数据集的 dim3 时间结束的位置。现有的 ncdf(有 42 个变量):这是启动代码:

0 投票
1 回答
5019 浏览

python - Python 'ndarray' 无法转换为 MySQL 类型

我正在尝试使用 python 脚本将一些数据存储在 MYSQL 数据库中,但出现以下错误。

实际上,我正在从 netCDF 文件中提取变量并尝试将它们存储在 MYSQL 数据库中。我的代码是

这些是我在 mMYSQL 数据库中的字段/列名称。我正在尝试将 netCDF4 数据插入 MYSQL

或者如果我尝试像这样组合所有变量

当我打印 netCDF 变量数据时,例如时间变量,它看起来像这样

我懂了

微秒看起来像

data_array 看起来像

但如果我打印

然后我只在列表中获得了第一个列表,而不是我认为是我的主要问题的其他列表。

如果我尝试执行 cursor.executemany(smeData, (v,)) 命令,它会给我这个错误

我的 MYSQL 插入语法是我的 MYSQL 语法是

就我而言,它是 numpy.float32。我在 MYSQL 中创建了 5 列,我必须将 netCDF 中的数据存储到 db 中。
我是编程新手,我正在学习。如果有人帮助我或给出一些提示,我该如何处理这样的错误。我将非常感谢。非常感谢。

0 投票
1 回答
1856 浏览

python - mysql.connector.errors.ProgrammingError: 处理格式参数失败;Python 'list' 无法转换为 MySQL 类型

我正在尝试使用 python 脚本将一些数据存储在 MYSQL 数据库中,但出现以下错误。

实际上,我正在从 netCDF 文件中提取变量并尝试将它们存储在 MYSQL 数据库中。我的代码是

这些是我在 mMYSQL 数据库中的字段/列名称。我正在尝试将 netCDF4 数据插入 MYSQL

当我打印 netCDF 变量数据时,例如时间变量,它看起来像这样

所以data1看起来像这样

和 data2 的微秒看起来像

data_array 看起来像这样,因为它由五个不同的列表组成。

如果我尝试执行 cursor.executemany(smeData, (v,)) 命令,它会给我这个错误

我的 MYSQL 插入语法是

我在 MYSQL 中创建了 5 列,我必须将 netCDF 中的数据存储到 db 中。
如果有人帮助我或给出一些提示,我该如何处理这样的错误。那会很好。谢谢

0 投票
1 回答
626 浏览

python - python中的xarray是否有文件大小限制?

我想使用 xarray 打开一个 netCDF4 数据集。

我有两个例子。时间序列中超过 300 万个点的大文件 (3.2GB)。时间序列中有 9999 个点的小文件 (9.8 MB)。此代码将打开小文件。

如果我使用大文件,我会收到未知错误。该行为在安装了 miniconda 的两台不同的 Windows 机器上是一致的。

这里发生了什么?我还应该检查什么?

提前致谢。

0 投票
2 回答
1748 浏览

python-3.x - 在 python 中使用模块 netcdf4 写入 NetCDF3 文件

我在使用 netcdf4 函数写入 netcdf3 文件时遇到问题。我尝试使用创建变量函数,但它给了我这个错误:NetCDF: Attempting netcdf-4 operation on netcdf-3 file

数控=

我可以使用哪些 netcdf 3 操作将数据添加到文件中?我发现我可以通过简单地nc.variables["Hycom_U"]=U2直接添加数据来手动添加数据,但仅此而已。有一个更好的方法吗?

0 投票
1 回答
161 浏览

python-2.7 - 需要使用一组坐标快速子集一个非常大的 ncdf

我有一个 netcdf 文件,其中包含一个浮点数组(21600、43200)。我不想将整个数组读入 RAM,因为它太大了,所以我使用netCDF4库中的Dataset对象来读取数组。

我想使用 300-400 坐标的两个 1D numpy 数组(x_coords,y_coords)来计算这个数组的子集的平均值。

我认为我不能使用基本索引,因为我拥有的坐标不是连续的。我目前正在做的只是将数组直接输入到对象中,如下所示:

上面的代码对我来说太长了(大约 3-4 秒,具体取决于我使用的坐标),我想以某种方式加快速度。有没有一种pythonic方法可以用来直接从这样的子集中计算平均值而不触发花哨的索引?

0 投票
1 回答
4426 浏览

python - 关于多个坐标的子集 xarray.Dataset

假设我xarray.Dataset在使用中加载了一个对象xarray.open_dataset(..., decode_times=False),打印时看起来像这样:

给定、 和的多个范围lat,将其子集化的最佳方法是什么?我尝试链接一系列条件并使用,但我收到一条错误消息:lontimexarray.Dataset.where

我无法将整个数据集加载到内存中,那么典型的方法是什么?

0 投票
1 回答
140 浏览

python-2.7 - 复制三维数组的所有其他元素

我有一个来自 netCDF 文件的对象,它具有以下属性:

我需要通过在 Python 中读取所有其他元素来减少这个元素。我试过了

但它不起作用,因为 print zeta_pck.shape 的输出(100,52,52) 仅采用第一个维度

0 投票
0 回答
608 浏览

python - ImportError:DLL 加载失败:找不到指定的模块。视窗 10

我最近在我的新笔记本电脑中安装了最新版本的 Python (3.6),当我尝试导入 netCDF4 时出现此错误ImportError: DLL load failed: The specified module could not be found。我正在使用 Windows 10。关于解决方案的任何想法?