当前位置: 首页 > news >正文

物种的栖息温度信息下载(GBIF—OBIS—WOA2018)

一、下载物种的经纬度、水深

# 1.从gbif下载
library(rgbif)
gbif_download <- occ_download(pred_default(),pred("taxonKey", 2333562),format = "SIMPLE_CSV")
occ_download_wait(gbif_download)
d <- occ_download_get(gbif_download) %>%occ_download_import()
library(dplyr)
# 筛选列:物种名,十进制经度decimalLongitude,十进制纬度decimalLatitude,水深
d1 <- select(d,species,decimalLongitude,decimalLatitude,depth)
# 2.从obis下载
install.packages("remotes")
remotes::install_github("iobis/robis")
library(robis)
records <- occurrence(scientificname = "Aeoliscus strigatus")
r1 <- select(records,species,decimalLongitude,decimalLatitude,depth)# 3.合并结果。去空值、去重复
library(tidyr)
allocc <-bind_rows(d1,r1) %>%drop_na() %>%distinct()

二、下载温度数据

下载WOA2018十年平均温度数据(论文使用版本)
论文说明:WOA2018,0.25×0.25弧分分辨率,1955-2017年平均,年平均温度场

image

三、栖息地温度提取

install.packages(c("ncdf4", "terra", "sf"))
library(ncdf4)   # 读取WOA的NetCDF格式数据
library(terra)   # 空间栅格处理
library(dplyr)
library(tidyr)# 4. 读取并预处理WOA温度数据
nc <- nc_open("woa18_decav_t00_04.nc")# 提取变量:温度、经度、纬度、深度
temp_array <- ncvar_get(nc, "t_an")  # 年平均温度数组 [lon, lat, depth]
lon <- ncvar_get(nc, "lon")          # 经度:-179.875 ~ 179.875
lat <- ncvar_get(nc, "lat")          # 纬度:-89.875 ~ 89.875
depth <- ncvar_get(nc, "depth")      # 标准深度层(共102层,单位:米)nc_close(nc)  # 关闭文件释放内存# 5. 为每个出现记录匹配对应温度
# 5.1 预处理出现记录:转换为空间点(经度、纬度列转换为经纬列)
allocc_sf <- st_as_sf(allocc, coords = c("decimalLongitude", "decimalLatitude"), crs = 4326)  # WGS84坐标系# 5.2 定义温度匹配函数(按经纬度+最近深度层)
match_woa_temp <- function(point_sf, depth_m, lon_grid, lat_grid, depth_grid, temp_array) {# 提取点的经纬度pt_lon <- st_coordinates(point_sf)[1]pt_lat <- st_coordinates(point_sf)[2]# 找到最近的经纬度网格索引lon_idx <- which.min(abs(lon_grid - pt_lon))    # 找lon_grid里离pt_lon最近的点lat_idx <- which.min(abs(lat_grid - pt_lat))# 找到最接近记录深度的WOA标准深度层depth_idx <- which.min(abs(depth_grid - depth_m))# 提取对应温度值(处理NA值)temp_val <- temp_array[lon_idx, lat_idx, depth_idx]return(ifelse(is.na(temp_val), NA, temp_val))
}# 5.3 批量匹配所有记录(耗时取决于记录数,单物种约几秒)
# mapply:逐行循环 + 并行传参
allocc$temperature <- mapply(match_woa_temp,point_sf = split(allocc_sf, 1:nrow(allocc_sf)), # 按行切分depth_m = allocc$depth,MoreArgs = list(lon_grid = lon,    # MoreArgs:所有行共用的大背景数据lat_grid = lat,depth_grid = depth,temp_array = temp_array))# 5.4 过滤匹配失败的记录(温度为NA)
allocc_clean <- allocc %>% drop_na(temperature)# 6. 计算物种栖息地温度统计量(完全匹配论文方法)
# 论文说明:
# - 平均栖息地温度:所有记录温度的平均值
# - 下热限(T₀₁):栖息地温度的第1百分位
# - 上热限(T₉₉):栖息地温度的第99百分位
species_temp_stats <- allocc_clean %>%group_by(species) %>%summarise(avg_habitat_temp = mean(temperature, na.rm = TRUE),T01_lower_thermal_limit = quantile(temperature, 0.01, na.rm = TRUE),T99_upper_thermal_limit = quantile(temperature, 0.99, na.rm = TRUE),n_records = n()  # 记录数,用于数据质量评估) %>%ungroup()# 6. 结果输出与保存
print(species_temp_stats)
write.csv(species_temp_stats, "species_thermal_stats.csv", row.names = FALSE)
write.csv(allocc_clean, "all_occurrences_with_temp.csv", row.names = FALSE)

 

http://www.jsqmd.com/news/735065/

相关文章:

  • 通过 Taotoken CLI 工具一键配置开发环境中的多模型密钥
  • 实战分享:用Java搞定北大青鸟JBF293K消防主机串口数据解析(附完整代码)
  • 别再手动装了!用Docker一键部署带中文字体的LibreOffice服务(CentOS/Ubuntu通用)
  • 云原生配置管理利器:gopaddle-io/configurator 深度解析与实践
  • stable编译指令使用
  • D2R Pixel Bot终极指南:暗黑破坏神2重制版自动化运行完整解决方案
  • 从GPT-3.5到Llama 2:开源大模型微调实战,用LoRA让你的模型“听懂”行话
  • SAP MM | S4510 第一章——SAP S/4HANA 库存管理与盘点基础
  • 高压均质机HPH构造全解析
  • 完全掌控你的数字记忆:WeChatMsg让微信聊天数据真正属于你
  • mysql开发环境权限如何与生产隔离_MySQL多环境权限配置策略
  • 嵌入式MCU性能监控实战:从硬件计数器到代码优化
  • VideoSrt深度解析:如何用开源工具实现视频语音自动字幕生成
  • iOS 15-16激活锁绕过终极指南:让闲置iPhone重获新生
  • 普华永道:2025年中国汽车行业并购活动回顾及未来展望
  • 数字孪生AI之语义建模:从原理到国产化实战
  • 长视频理解技术:分层时序建模与动态资源分配实践
  • 2026抛丸喷砂厂防腐涂料合规名录:高盐度防腐涂料/丙烯酸涂料/体育场馆防腐涂料/公路桥梁防腐涂料/厚涂油漆/地坪涂料/选择指南 - 优质品牌商家
  • PDF转Markdown:构建高质量RAG数据管道的技术实践
  • 中兴光猫工厂模式终极解锁指南:5分钟获取最高权限
  • Voxtral TTS:3秒语音克隆与多语言文本转语音技术解析
  • 工业控制安全再升级!MCP 2026新增“可信执行环境(TEE)强制隔离”条款,3类老旧PLC迁移路径与成本测算(附等保2.0三级映射表)
  • RAGFlow0.25版本更新与记忆工作流简介
  • 从“不亮”到“能显示”——点阵屏模块的拆解与排查
  • Femtofox Pro v1开发板:Linux与LoRa的嵌入式融合方案
  • 中国低空经济发展指数报告 2026
  • 别再死记硬背了!用Python和NumPy可视化理解多元函数可微性(附代码)
  • 用FPGA驱动PAJ7620U2手势传感器:从I2C状态机到LED灯效的完整Verilog实现
  • 令牌桶算法实战:轻量级限流器token-limit的原理与应用
  • 从 Playwright/Selenium 到指纹浏览器:浏览器自动化技术的进阶之路