【python海洋专题一】查看数据nc文件的属性并输出属性到txt文件

海洋与大气科学

存nc文件python python生成nc文件_开发语言


软件

选择此软件是因为习惯了,matlab能看得到的界面。

新建文本

存nc文件python python生成nc文件_数据_02

导入相关库

import netCDF4,numpy

netCDF4:该包作用:读、写netCDF files.

numpy:该包作用:NumPy 提供全面的数学函数、随机数生成器、线性代数例程、傅立叶变换等。

导入相关库

from netCDF4 import Dataset

Dataset的功能:读取数据。

读取数据

a = Dataset(‘D:\pycharm_work\data\scs_etopo.nc’)

a存放着scs_etopo.nc数据的全部信息。

查看变量

print(a.variables.keys())

输出:

dict_keys([‘lat’, ‘lon’, ‘elevation’])

存nc文件python python生成nc文件_开发语言_03

从而知道scs_etopo.nc数据中有经纬度和高度信息。

print功能输出内容到当前屏幕或者工作空间。

查看文件详细信息

print(a);因为文件信息都存放在a中,因此输出a即可。

存nc文件python python生成nc文件_开发语言_04

title: The GEBCO_2020 Grid - a continuous terrain model for oceans and land at 15 arc-second intervals;
institution: On behalf of the General Bathymetric Chart of the Oceans (GEBCO);
source: The GEBCO_2020 Grid is the latest global bathymetric product released by the General Bathymetric Chart of the Oceans (GEBCO) ;
dimensions(sizes): lat(6000), lon(5040);
variables(dimensions): float64 lat(lat), float64 lon(lon), int16 elevation(lat, lon);

某个变量的详细信息

print(a.variables[‘elevation’])% 将具体的变量加入进去!

存nc文件python python生成nc文件_开发语言_05

可以看到:

elevation的:名称、单位、数组大小如下:

standard_name: height_above_reference_ellipsoid;

long_name: Elevation relative to sea level;

units: m;

current shape = (6000, 5040);

以上这么多相当于matlab的ncdisp 或者ncinfo

学习输出到txt文本

图片
图片

循环写入nc文件中的每一个变量。

for i in a.variables:
txt_file.write(i + “:” + str(a.variables[i][:]) +“\n”)

关闭文件

txt_file.close()

每个变量显示完全

存nc文件python python生成nc文件_python_06

全文代码:

# -*- coding: utf-8 -*-
# %%
# Importing related function packages
import netCDF4,numpy
from netCDF4 import Dataset
# data's route
# %%
a = Dataset('D:\pycharm_work\data\scs_etopo.nc')
# %%
# export the variables to current screen
print(a.variables.keys())
# 查看nc文件有些啥东东
print(a)
print('---------------------------------------')
# %%
# 查看nc文件中的变量
print(a.variables.keys())
for i in a.variables.keys():
    print(i)
print('---------------------------------------')
# %%
# 查看每个变量的信息
print(a.variables['lat'])
print(a.variables['lon'])
print(a.variables['elevation'])
# %% 将变量信息写入文本txt
# 以写入模式打开txt文本
txt_file = open("variable.txt","w")
# 循环写入nc文件中的每一个变量。
for i in a.variables:
    txt_file.write(i + ":" + str(a.variables[i][:]) +"\n")
# 关闭文件
txt_file.close()
# 以写入模式打开txt文本
txt_file = open("variable1.txt","w")
# 循环写入nc文件中的每一个变量。
for variable in a.variables:
    # 获取变量的数值
    var_value = a.variables[variable][:]
    # 将变量的名称和数值对应起来,并输入到txt;
    txt_file.write(f"{variable}: {var_value}\n")
# 关闭文件
txt_file.close()
# 03
# 以写入模式打开txt文本
variables = a.variables.keys()
txt_file = open("variable2.txt","w")
# 循环写入nc文件中的每一个变量。
for variable in a.variables:
    # 获取变量的数值
    var_value = a.variables[variable][:]
    # 将变量的名称和数值对应起来,并输入到txt;
    txt_file.write('变量名:' + variable + '\n')
    txt_file.write('数据:\n')
    # 遍历维度
    for j in range(var_value.shape[0]):
        txt_file.write(str(var_value[j]) + '\n')
    txt_file.write('\n')
# 关闭文件
txt_file.close()
a.close()