簡體   English   中英

使用緩沖功能從柵格中提取xy坐標

[英]Extract xy coordinates from raster using buffer function

我有一些xy坐標作為SpatialPoints(點)對象,並使用它們來從RasterLayer(柵格)中提取這些位置的溫度值:

extract = extract(raster, points)

但是,有些點落在柵格圖層的外面(即未在陸地上繪圖),我想使用buffer參數將每個點周圍的半徑擴展10000m-

extract2 = extract(raster, points, method="simple",buffer=10000, cellnumbers=TRUE)

This produces a "list" object i.e.- 

head(extract2)

[[1]]
  cell  value 
591332    165 

[[2]]
  cell  value 
475809     NA 

[[3]]
  cell  value 
534127     NA 

[[4]]
  cell  value 
534127     NA 

[[5]]
  cell  value 
534127     NA 

[[6]]
  cell  value 
534127     NA 

但是我想創建一個數據幀,在該數據幀中,我在點位置具有柵格值(NA或溫度值)和像元編號,以便可以訪問柵格圖層中感興趣像元的原始xy坐標。 我怎樣才能做到這一點?

提出問題時,請提供可復制的示例。 這很容易做到,因為您可以在?extract或其他幫助頁面中構建示例。

# example data
r <- raster(ncol=36, nrow=18, crs='+proj=utm +zone=14 +datum=WGS84')
r[] <- 1:ncell(r)
xy <- cbind(x=-50, y=seq(-80, 80, by=20))

# extract
e <- extract(r, xy, buffer=10)
ee <- t(data.frame(e))
rownames(ee) <- NULL

data.frame(xy, ee)

上面的方法在許多情況下都有效,但是在邊緣或緯度/經度數據附近無效,因為可能會有不同數量的像元。 在這種情況下,您可以:

 e <- extract(r, xy, buffer=10)
 m <- max(sapply(e, length))
 x <- rep(NA, m)
 ee <- t(sapply(e, function(y) {x[1:length(y)] <- y; x}))
 data.frame(xy, ee)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM