如何通过R语言获取WorldClim数据,并保存为nc文件
Tạo vào: 19 tháng 3, 2025
Trả lời bằng O3 Mini High bởi Chat01
Tạo vào: 19 tháng 3, 2025
Trả lời bằng O3 Mini High bởi Chat01
如何通过R语言获取WorldClim数据,并保存为nc文件
下面给出一个示例代码,演示如何使用 R 语言下载 WorldClim 数据(例如生物气候变量)并保存为 netCDF(.nc)文件。步骤如下:
安装并加载所需的包
需要用到的包有 [raster] 和 [ncdf4],可用以下代码安装并加载:
rinstall.packages("raster") install.packages("ncdf4") library(raster)
下载 WorldClim 数据
使用 raster 包中的 getData
函数下载数据。例如,下面代码下载的是分辨率为 10 分钟的 19 个生物气候变量(var = "bio"):
r# 下载生物气候变量数据 bio <- getData("worldclim", var = "bio", res = 10)
数据处理
下载的数据通常以列表的形式返回,可以利用 stack
函数将各个 RasterLayer 对象合并为一个 RasterStack 对象,便于后续保存:
rbio_stack <- stack(bio)
保存为 nc 文件
使用 writeRaster
函数并指定参数 format = "CDF"
将数据保存为 netCDF 文件:
rwriteRaster(bio_stack, filename = "worldclim_data.nc", format = "CDF", overwrite = TRUE)
运行后,将在当前工作目录下生成一个名为 worldclim_data.nc
的文件。
这样,就实现了从 WorldClim 获取数据并保存为 nc 文件的过程。你可以根据需要调整参数(例如数据变量或分辨率),以适应不同的应用场景。
我要生成9°S45°S,111°E155°E范围的数据的nc文件,如何操作,给出完整代码
下面是一份完整的 R 代码示例,用于下载 WorldClim 数据(以 10 分钟分辨率的生物气候变量为例)、提取指定区域(9°S45°S,111°E155°E)并保存为 netCDF 文件(nc 文件)。
r# 1. 安装并加载所需的包(如果已安装可省略安装步骤) install.packages("raster") install.packages("ncdf4") library(raster) library(ncdf4) # 2. 下载 WorldClim 生物气候变量数据(分辨率 10 分钟) bio <- getData("worldclim", var = "bio", res = 10) # 3. 将数据合并为一个 RasterStack bio_stack <- stack(bio) # 4. 定义提取区域的范围 # 注意:9°S对应 -9,45°S对应 -45;crop函数要求格式为 extent(xmin, xmax, ymin, ymax) region_extent <- extent(111, 155, -45, -9) # 5. 对数据进行裁剪,提取指定范围的数据 bio_crop <- crop(bio_stack, region_extent) # 6. 保存裁剪后的数据为 netCDF 文件 writeRaster(bio_crop, filename = "worldclim_crop.nc", format = "CDF", overwrite = TRUE)
代码说明:
getData
函数下载 WorldClim 数据,这里示例下载的是 19 个生物气候变量数据。stack
函数将列表形式的各个变量合并为一个 RasterStack。extent
定义感兴趣区域,其中经度范围为 111°E 到 155°E,纬度范围为 -45° 到 -9°(对应 45°S~9°S)。crop
函数对数据进行裁剪。writeRaster
函数将裁剪后的数据保存为 netCDF 文件。运行这段代码后,你将在当前工作目录下得到一个名为 worldclim_crop.nc
的文件。
我只需要年平均气温、年总降水的数据
下面是一份完整的 R 代码示例,用于下载 WorldClim 数据中的生物气候变量,然后只提取年平均气温(bio1)和年总降水(bio12),再裁剪至 9°S45°S(纬度 -45 到 -9)与 111°E155°E 范围,最后保存为 netCDF 文件:
r# 1. 安装并加载所需的包(若已安装可省略安装步骤) install.packages("raster") install.packages("ncdf4") library(raster) library(ncdf4) # 2. 下载 WorldClim 的生物气候变量数据(分辨率 10 分钟) bio <- getData("worldclim", var = "bio", res = 10) # 3. 将下载的数据合并为一个 RasterStack bio_stack <- stack(bio) # 4. 提取所需的变量:bio1(年平均气温)和 bio12(年总降水) selected <- subset(bio_stack, c(1, 12)) # 5. 定义提取区域的范围 # 注意:9°S对应 -9,45°S对应 -45,经度保持正值 region_extent <- extent(111, 155, -45, -9) # 6. 裁剪数据,提取指定区域内的数据 selected_crop <- crop(selected, region_extent) # 7. 将裁剪后的数据保存为 netCDF 文件 writeRaster(selected_crop, filename = "worldclim_temp_precip.nc", format = "CDF", overwrite = TRUE)
代码说明:
getData
函数下载 WorldClim 的 19 个生物气候变量数据。stack
函数将数据合并为 RasterStack 对象。subset
函数只选择第1层(年平均气温)和第12层(年总降水)。crop
函数裁剪数据。writeRaster
函数将处理后的数据保存为 netCDF 格式。运行这段代码后,你将在当前工作目录下得到一个名为 worldclim_temp_precip.nc
的 netCDF 文件,其中包含所选区域的年平均气温和年总降水数据。
错误于getData("worldclim", var = "bio", res = 10):
getData has been removed. Please use the geodata package instead.
下面是一份完整的 R 代码示例,使用 geodata 包下载 WorldClim 数据,并只提取年平均气温(bio1)和年总降水(bio12)数据,裁剪至 9°S45°S、111°E155°E 范围后保存为 netCDF 文件:
r# 1. 安装并加载所需的包(如已安装可跳过安装步骤) if (!require(geodata)) install.packages("geodata") if (!require(terra)) install.packages("terra") if (!require(ncdf4)) install.packages("ncdf4") library(geodata) library(terra) library(ncdf4) # 2. 下载 WorldClim 的生物气候变量数据(分辨率 10 分钟) # 注意:geodata包的 worldclim 函数返回的是一个 SpatRaster 对象(来自 terra 包) bio <- worldclim(var = "bio", res = 10) # 3. 提取所需变量:bio1(年平均气温)和 bio12(年总降水) # 直接根据变量名称选择对应的图层 selected <- bio[[c("bio1", "bio12")]] # 4. 定义目标区域的范围 # 注意:经度范围 111 至 155;纬度范围:45°S 对应 -45,9°S 对应 -9 region_extent <- ext(111, 155, -45, -9) # 5. 裁剪数据,只保留指定区域内的数据 selected_crop <- crop(selected, region_extent) # 6. 保存裁剪后的数据为 netCDF 文件 writeRaster(selected_crop, filename = "worldclim_temp_precip.nc", filetype = "netCDF", overwrite = TRUE)
代码说明:
worldclim
函数下载 10 分钟分辨率的生物气候变量数据,返回的对象为 SpatRaster。ext
定义裁剪区域,经度从 111 到 155,纬度从 -45 到 -9。crop
函数提取该区域内的数据。writeRaster
将裁剪后的数据保存为 netCDF 文件(文件类型指定为 "netCDF")。运行这段代码后,你将在当前工作目录下得到一个名为 worldclim_temp_precip.nc 的 netCDF 文件,其中仅包含所选区域内的年平均气温和年总降水数据。
错误于worldclim(var = "bio", res = 10): 没有"worldclim"这个函数
下面是一份完整的 R 代码示例,使用 geodata 包中最新的函数 worldclim_global(替代旧版的 worldclim 函数)下载 WorldClim 生物气候变量数据,并只提取年平均气温(bio1)和年总降水(bio12)数据,裁剪至 9°S~45°S(即纬度 -45 到 -9)和 111°E~155°E 范围,最后保存为 netCDF 文件:
r# 1. 安装并加载所需的包(如已安装可跳过安装步骤) if (!require(geodata)) install.packages("geodata") if (!require(terra)) install.packages("terra") if (!require(ncdf4)) install.packages("ncdf4") library(geodata) library(terra) library(ncdf4) # 2. 下载 WorldClim 的生物气候变量数据(分辨率 10 分钟) # 注意:当前 geodata 包中下载 WorldClim 数据的函数为 worldclim_global bio <- worldclim_global(var = "bio", res = 10) # 3. 提取所需变量:bio1(年平均气温)和 bio12(年总降水) # 检查图层名称(通常为 "bio1", "bio2", ... "bio19") selected <- bio[[c("bio1", "bio12")]] # 4. 定义目标区域范围 # 经度范围:111 至 155;纬度范围:45°S 对应 -45 至 9°S 对应 -9 region_extent <- ext(111, 155, -45, -9) # 5. 裁剪数据,只保留指定区域内的数据 selected_crop <- crop(selected, region_extent) # 6. 保存裁剪后的数据为 netCDF 文件 writeRaster(selected_crop, filename = "worldclim_temp_precip.nc", filetype = "netCDF", overwrite = TRUE)
代码说明:
worldclim_global
函数下载分辨率为 10 分钟的 19 个生物气候变量数据,返回一个 SpatRaster 对象。ext
定义感兴趣区域,注意南纬用负值表示。crop
函数裁剪数据,提取出指定区域内的数据。writeRaster
函数将裁剪后的数据保存为 netCDF 文件,参数 filetype = "netCDF"
指定保存格式。运行以上代码后,你将在当前工作目录下得到一个名为 worldclim_temp_precip.nc 的 netCDF 文件,其中包含选定区域内的年平均气温和年总降水数据。