nc文件获取指定经纬度的值

代码展示

以CHM_PRE_0.1dg_19612022.nc文件为例。
首先是查看nc文件的基本信息

import netCDF4 as nc  # 读取nc文件需要下载netCDF4库
import matplotlib.pyplot as plt
import numpy as np

# 打开下载的.nc文件
nc_file = nc.Dataset('CHM_PRE_0.1dg_19612022.nc', 'r')  # 'r'表示只读模式

# 查看文件的维度
# print(nc_file.dimensions)
# 查看文件的变量,文件包括经纬度、年份、时间、降雨、站点信息5个变量
# print(nc_file.variables.keys())
# dict_keys(['longitude', 'latitude', 'years', 'time', 'pre', 'station_number'])

查看各个变量的信息

latitude = nc_file.variables['latitude'][:]  # ''中是你想要读取的变量名称
longitude = nc_file.variables['longitude'][:]
station_number = nc_file.variables['station_number']  # 三维数组 float32 station_number(years, latitude, longitude)
pre = nc_file.variables['pre']  # 三维数组 float32 pre(time, latitude, longitude)
time = nc_file.variables['time'][:]  # 一维数组24h
years = nc_file.variables['years'][:]
# print(station_number)
# print(pre) # (22645, 360, 640)
# print(time) # 24h
# print(latitude) # (360,)
# print(longitude) # (640,)
# print(years) # 1961-2022

获取指定经纬度的降雨数据
上面的数据中可看出从1961-2022每24h一个降雨数据一共有22645个数据。我们还可以发现纬度信息和降雨信息的第二列对应,都是360,经度也一样都是640。在打印经纬度时发现有纬度为38.15°,经度为114.55°的点,我以此点为例获取该点22645个降雨数据。其实原理很简单,只要找出经纬度所在的索引就可以获取降雨数据,而降雨变量中经纬度索引和经纬度变量索引相同。

# 伪代码,获取降雨数据的基本原理。
pre[:,index(latitude),index(longitude)]
index(latitude) = index(38.15)
index(longitude) = index(114.55°)
# 真实代码
arr1 = []
for i in range(len(latitude)):
    arr1.append(latitude[i])
 print(arr1.index(38.15)) # 索引为201

arr2 = []
for j in range(len(longitude)):
	arr2.append(longitude[j])
print(arr2.index(114.55)) # 索引为425

arr3 = pre[:, 201, 425]
# 将该点降雨数据写入文件
with open('output1.txt', 'a') as file:
    for k in range(len(arr3)):
        print(arr3[k])
        file.write(f'{arr3[k]}\n')

部分结果:
在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彭博锐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值