nc文件转tif及多个tif文件合并

nc文件转tif——以CRU TS数据为例

CRU TS是英国东安格利亚大学的气象数据集CRU,我这里下载的文件是cru_ts4.07.2021.2022.pre.dat.nc,是全球2021-2022按月划分的降雨量数据。

  1. python处理nc文件并绘制
import netCDF4 as nc
import matplotlib.pyplot as plt
import numpy as np

nc_file = nc.Dataset('cru_ts4.07.2021.2022.pre.dat.nc', 'r')
# print(nc_file.variables.keys()) # dict_keys(['lon', 'lat', 'time', 'pre', 'stn'])
latitude = nc_file.variables['lat'][:]  # 一维数组,0.5°为间隔
longitude = nc_file.variables['lon'][:]  # 一维数组,0.5°为间隔
[X, Y] = np.meshgrid(longitude, latitude)
time = nc_file.variables['time'][:]  # 一维数组,24个月,2021-2022年
precipitation = nc_file.variables['pre']  # 三维数组,(24, 360, 720)
station = nc_file.variables['stn']  # 对每个基准做出贡献的台站数目,三维数组,(24, 360, 720)
plt.contourf(X, Y, precipitation[0, :, :]) # 0代表2021.1月
plt.colorbar(label='pre', orientation='horizontal')
plt.show()
nc_file.close()

结果展示:
在这里插入图片描述
2、nc文件转tif
由于nc文件是按月划分的,所以我想将nc文件拆分为按月划分的tif文件。
下面是用R语言进行拆分转化的,四行代码。

library(raster)
library(ncdf4)
pre<-brick("cru_ts4.07.2021.2022.pre.dat.nc",varname="pre")
writeRaster(pre,filename = pre@data@names,bylayer=T,format="GTiff")

就可得到下面的tif文件:
在这里插入图片描述QGIS展示,以2021.1月为例,对图层样式调节就会得到下图的效果,赤道部分、非洲南部、南美洲降雨较多;我国西北、非洲北部、澳洲西部降雨偏少:
在这里插入图片描述
降雨量值位于0-1128之间
在这里插入图片描述

多个tif文件合并为一个tif

现在想将2021年每月的tif合并为全年的tif文件,利用R实现,代码如下:

library(raster)
library(sp)

# 定义合并函数
merge_images <- function(monthly_images, output_filename) {
  # 读取第一张图像,作为基准图像
  base_image <- raster(monthly_images[1])
  
  # 创建一个空的图像对象,与基准图像相同
  result_image <- base_image
  
  # 合并图像
  for (img_path in monthly_images[-1]) {
    img <- raster(img_path)
    result_image <- overlay(result_image, img, fun=sum)
  }
  
  # 保存合并后的图像
  writeRaster(result_image, output_filename, format="GTiff")
}

monthly_images <- c('X2021.01.tif', 'X2021.02.tif', 'X2021.03.tif','X2021.04.tif','X2021.05.tif','X2021.06.tif','X2021.07.tif','X2021.08.tif','X2021.09.tif','X2021.10.tif','X2021.11.tif','X2021.12.tif')  # 每个月tif文件
output_filename <- '2021.tif'  # 输出的tif

merge_images(monthly_images, output_filename)

然后用QGIS将2021.tif文件打开,如下:
全年降雨量值位于0-9251之间,我国东南部、赤道部分降雨多,我国西北部、非洲北部、澳洲西部等地区降雨量少。
在这里插入图片描述

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

彭博锐

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

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

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

打赏作者

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

抵扣说明:

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

余额充值