【问题标题】:How to extract xy-coordinates from raster where its highest value is located within a polygon?如何从其最大值位于多边形内的栅格中提取 xy 坐标?
【发布时间】:2023-04-01 18:26:02
【问题描述】:

given 是一个栅格以及一个 SpatialPolygonsDataframe。 为了检索多边形区域内栅格的最高值,可以使用 raster::extract。它工作正常。

如何获取多边形区域内提取的栅格最高值的坐标?

# create raster
r <- raster(ncol=36, nrow=18)
r[] <- runif(ncell(r))
# create SpatialPolygons from GridTopology
grd <- GridTopology(c(-150, -50), c(40, 40), c(8, 3))
Spol <- as(grd, "SpatialPolygons")
# create SpatialPolygonsDataFrame
centroids <- coordinates(Spol)
x <- centroids[,1]
y <- centroids[,2]
SPDF <- SpatialPolygonsDataFrame(Spol, data=data.frame(x=x, y=y, row.names=row.names(Spol)))
# extract max value of raster for each SpatialPolygon
ext <- raster::extract(r, SPDF, fun=max)

*示例代码取自 R 文档

【问题讨论】:

    标签: r geospatial r-raster


    【解决方案1】:

    您可以在extract 中使用cellnumbers=TRUE 参数,后跟sapply 来获取单元格编号:

    ext <- raster::extract(r, SPDF, cellnumbers=TRUE)
    v <- t(sapply(ext, function(i) i[which.max(i[,2]), ] ))
    
    #      cell     value
    # [1,]  185 0.9303460
    # [2,]  188 0.9821190
    # [3,]  154 0.9926290
    # [4,]  232 0.8907819
    # [5,]  234 0.9998510
    

    获取坐标:

    xyFromCell(r, v[,1])
    
    #         x   y
    # [1,] -135  35
    # [2,] -105  35
    # [3,]  -85  45
    # [4,]  -25  25
    # [5,]   -5  25
    

    【讨论】:

    • 太棒了!这正是我想要的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-19
    • 2015-07-14
    • 2019-09-06
    相关资源
    最近更新 更多