" ID不匹配"在SpatialLines中提取栅格值时出错

时间:2016-07-14 13:40:38

标签: r raster r-raster

我想提取一个栅格值,其中一个spatialLines对象穿过它的单元格,并且遇到错误。这表明:

> require(maptools); require(raster)
> data(wrld_simpl)
> nepal = as(wrld_simpl[wrld_simpl$NAME == 'Nepal',], 'SpatialLines')
> r = raster(volcano)
> extent(r) = c(79,90,26,31)
> plot(r); plot(nepal, col='red', add=T)

enter image description here

提取:

> border_values = extract(r, nepal, sp=T, fun=median)
Error in SpatialLinesDataFrame(y, res[, -1, drop = FALSE]) : 
  row.names of data and Lines IDs do not match

知道造成这种情况的原因是什么?我的光栅包是v2.5-8。

1 个答案:

答案 0 :(得分:1)

这是一个需要在光栅包中修复的错误,但这是一个解决方法:

row.names(nepal) <- '1'
border_values <- extract(r, nepal, sp=TRUE, fun=median, match.ID=FALSE)

或更一般地说,(如果您有多个功能)

row.names(nepal) <- as.character(1:length(nepal))