【发布时间】:2016-10-11 23:42:07
【问题描述】:
我有一个包含 100 多个文件的光栅堆栈。我想从每个文件中提取特定经纬度位置的值。这给了我一个 Lat-Long 组合的值列表。
plist <- list.files(pattern = "\\.tif$", include.dirs = TRUE)
pstack <- stack(plist)
#levelplot(pstack)
for (i in 1:length(plist))
t[i]=extract(pstack[[i]], 35,-90)
当我在单独的文件/数据框中有经纬度位置时,如何为数千个位置执行此操作。我也想在最终列表中保留一个位置 ID:
Lat Long LocID
35 -90 001
35 -95 221
30 -95.4 226
31.5 - 90 776
我的最终目标是拥有这种类型的数据框:
Lat Long LocID value
35 -90 001 0.5
35 -95 221 1.4
30 -95.4 226 2.5
31.5 - 90 776 4.5
虽然如果无法保留 LocID,那也没关系。
其中一个文件:https://www.dropbox.com/s/ank4uxjbjk3chaz/new_conus.tif?dl=0
从 cmets 测试解决方案:
latlong<-structure(list(lon = c(-71.506667, -71.506667, -71.506667, -71.215278,
-71.215278, -71.215278, -71.215278, -71.215278, -71.215278, -71.215278
), lat = c(42.8575, 42.8575, 42.8575, 42.568056, 42.568056, 42.568056,
42.568056, 42.568056, 42.568056, 42.568056)), .Names = c("lon",
"lat"), row.names = c(NA, 10L), class = "data.frame")
ext<-extract(pstack,latlong)
给予
UseMethod("extract_") 中的错误: 没有适用于“c('RasterStack', 'Raster', 'RasterStackBrick', 'BasicRaster')”类对象的“extract_”方法
更新 #2:
错误是因为它与另一个包冲突。这有效:
raster::extract(pstack,latlong)
【问题讨论】:
-
你能提供一个输入数据的例子吗?