R语言:多值提取到点

ArcGIS中有相关工具实现多值提取到点的功能,在这里,我将使用R语言进行操作:

r 复制代码
library(dplyr)
library(readxl)
library(sf)
library(raster)

setwd("D:/Datasets")
Bio <- stack(paste0("D:/Datasets/Data/worldclim2_1km/",
                            c("wc2.1_30s_bio_1","wc2.1_30s_bio_2",
                              "wc2.1_30s_bio_3","wc2.1_30s_bio_4",
                              "wc2.1_30s_bio_5","wc2.1_30s_bio_6",
                              "wc2.1_30s_bio_7","wc2.1_30s_bio_8",
                              "wc2.1_30s_bio_9","wc2.1_30s_bio_10",
                              "wc2.1_30s_bio_11","wc2.1_30s_bio_12",
                              "wc2.1_30s_bio_13","wc2.1_30s_bio_14",
                              "wc2.1_30s_bio_15","wc2.1_30s_bio_16",
                              "wc2.1_30s_bio_17","wc2.1_30s_bio_18",
                              "wc2.1_30s_bio_19"
                            ),
                            ".tif")
)

dataset <- read_excel("datasets.xlsx")
head(dataset)

# 定义经纬度坐标
longlat<- as.data.frame(dataset[,c(2:3)])
# 将经纬度坐标转换为SpatialPoints对象
coordinates(longlat) <- c("Long", "Lat")
proj4string(longlat) <- CRS("+proj=longlat +datum=WGS84")
#定义转换的投影方式
UTM_Proj <- CRS(st_crs(Bio)$proj4string)
# 将经纬度坐标转换为xy坐标
xy <- spTransform(longlat, UTM_Proj)
# 检查投影坐标系是否一致
st_crs(Bio)$proj4string
st_crs(xy)$proj4string

data_clim<-raster::extract(Bio, xy)
head(data_clim)

这里Bio数据结果如下: 其中地理坐标系为WGS 1984,投影坐标系为WGS 1984 Albers(见crs)

r 复制代码
> Bio
class      : RasterStack 
dimensions : 1422, 1185, 1685070, 19  (nrow, ncol, ncell, nlayers)
resolution : 1000, 1000  (x, y)
extent     : 296958.9, 1481959, 2562602, 3984602  (xmin, xmax, ymin, ymax)
crs        : +proj=aea +lat_0=0 +lon_0=105 +lat_1=25 +lat_2=47 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs 
names      : wc2.1_30s_bio_1, wc2.1_30s_bio_2, wc2.1_30s_bio_3, wc2.1_30s_bio_4, wc2.1_30s_bio_5, wc2.1_30s_bio_6, wc2.1_30s_bio_7, wc2.1_30s_bio_8, wc2.1_30s_bio_9, wc2.1_30s_bio_10, wc2.1_30s_bio_11, wc2.1_30s_bio_12, wc2.1_30s_bio_13, wc2.1_30s_bio_14, wc2.1_30s_bio_15, ... 
min values :        3.520833,        5.666667,       19.015659,      585.165588,       17.000000,      -11.500000,       24.199999,       12.566667,       -5.850000,        12.566667,        -5.850000,       533.000000,       109.000000,         2.000000,        41.892853, ... 
max values :        20.31667,        11.91667,        33.88480,      1056.25293,        34.50000,         6.20000,        38.90000,        27.73333,        17.23333,         28.71667,         12.00000,       2296.00000,        368.00000,         62.00000,        111.78159, ... 

注意: dataset中使用的采样点为度分表的小数形式,然而所需要提取的Bio数据为投影坐标系,所以这里需要为dataset采样点定义一个相同的投影坐标系,才能实现采样。

相关推荐
dialect_3 小时前
KMP算法
开发语言·c++·算法
总要学点什么4 小时前
第89篇:三维特效-螺旋圆效果——让螺旋臂卷起一圈圈外扩的涟漪
开发语言·javascript·ecmascript·webgl·cesium·空间分析·1024程序员节
开开心心_Every5 小时前
快速隐藏程序工具自定义快捷键一键切换
java·开发语言·前端·spring·智能手机·word·intellij-idea
chenbingjie_c5 小时前
C++ 多态完全指南:从虚函数重写到虚函数表原理
开发语言·c++
吴卫斌5 小时前
定投ETF实战指南(四):行业/主题ETF——定投的“进攻端“
开发语言·python·股票·量化
超级架构师6 小时前
PRAXO-CORE 2.5.0:用 conformance 和显式边界构建 Go Agent 框架
开发语言·人工智能·后端·golang·ai编程·智能体框架·praxo-core
叼烟扛炮7 小时前
Linux 学习笔记(四十三):网络编程进阶——自定义协议解决 TCP 粘包与守护进程
linux·开发语言·网络·笔记·tcp/ip
LMT流氓兔8 小时前
第五单元——第十六课:给书店助手加上网页界面
java·开发语言·jvm·人工智能·oracle·langchain·1024程序员节
专注仿真8 小时前
梯度提升类(XFBoost)算法详解与代码实例
开发语言·人工智能·python·算法·大模型训练·控制算法
外收内放8 小时前
Python基础语法练习题(75)
开发语言·python·学习