对于做海洋数据处理的同学,会经常遇到nc格式的文件,nc文件的格式全称是NetCDF.
NetCDF文件可以存储多维数据,通过包含地理空间图像、栅格、地形数据、气候数据和文本的数组来存储不同类型的数据。这些数组支持元数据,使netCDF格式具有高度灵活性。NetCDF是由UCAR开发的,UCAR负责维护支持使用该格式的标准和软件。

气候数据通常有3个维度x和y分别代表地球表面和时间上某个点或网格单元的经纬度位置,第三个维度通常存储温度、湿度、降水量或风向等数据值。

我们可以使用netCDF4 读取NC格式文件

pip install netCDF4

读取nc文件

# -*- coding: utf-8 -*-

import netCDF4 as nc
import pandas as pd
import numpy as np

file = r'C:\Users\laidefa\Documents\WeChat Files\wxid_sw830nx7s59721\FileStorage\File\2022-01\GPM20180831.nc4'
dataset =nc.Dataset(file)
all_vars=dataset.variables.keys()
# print(len(all_vars))
#获取所有变量信息
all_vars_info = dataset.variables.items()
all_vars_info = list(all_vars_info)
# print(all_vars_info)
# 获取单独的一个变量的数据
precipitationCal=dataset.variables['precipitationCal'][:]
print(precipitationCal.shape)
# 转换成数组
var_data = np.array(precipitationCal)
print(var_data)

运行结果:

(1, 201, 151)
[[[3.65600729e+00 1.27241125e+01 3.98646307e+00 ... 8.68641585e-03
   1.46844620e-02 7.34620029e-03]
  [2.14123845e+00 7.57166147e-01 1.91910040e+00 ... 8.65888037e-03
   2.60566548e-03 2.98079150e-03]
  [4.48417330e+00 1.41921055e+00 6.20668602e+00 ... 9.70392860e-03
   4.53064591e-03 2.43900996e-03]
  ...
  [3.59529686e+01 3.85554466e+01 3.11111870e+01 ... 6.92076206e+00
   7.24171495e+00 5.06741095e+00]
  [4.42697144e+01 4.94302330e+01 2.95096188e+01 ... 2.96191859e+00
   3.27258682e+00 2.43876338e+00]
  [3.40604172e+01 3.71603012e+01 3.16420326e+01 ... 2.59504414e+00
   3.24035335e+00 4.25212908e+00]]]

Process finished with exit code 0

获取数据集:

# -*- coding: utf-8 -*-

import netCDF4 as nc
import pandas as pd
import numpy as np

file = r'C:\Users\laidefa\Documents\WeChat Files\wxid_sw830nx7s59721\FileStorage\File\2022-01\GPM20180831.nc4'
dataset =nc.Dataset(file)
all_vars=dataset.variables.keys()
# print(len(all_vars))
#获取所有变量信息
all_vars_info = dataset.variables.items()
all_vars_info = list(all_vars_info)
# print(all_vars_info)
precipitationCal=dataset.variables['precipitationCal'][:]
print(precipitationCal.shape)
q,w,k=precipitationCal.shape
var_data = np.array(precipitationCal)

res=[]
for i in range(0,w):
    for j in range(0,k):
        print(var_data[0][i][j])
        res.append(var_data[0][i][j])

print(len(res))






























Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐