简体   繁体   English

如何从栅格中提取xy坐标,其中最高值位于多边形内?

[英]How to extract xy-coordinates from raster where its highest value is located within a polygon?

given is a raster as well as a SpatialPolygonsDataframe. 给定的是栅格以及SpatialPolygonsDataframe。 In order to retrieve the highest value of the raster within the area of a polygon, raster::extract can be used. 为了在多边形区域内检索栅格的最高值,可以使用raster :: extract。 It works fine. 它工作正常。

How to get additionally the coordinates of the extracted highest value of the raster within the area of a polygon? 如何在多边形区域内另外获取所提取的栅格最高值的坐标?

# 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)

*example code is taken from R-documentation *示例代码取自R-documentation

You can use the cellnumbers=TRUE argument in extract , followed by a sapply to get the cell number: 您可以在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

To get the coordinates: 要获得坐标:

xyFromCell(r, v[,1])

#         x   y
# [1,] -135  35
# [2,] -105  35
# [3,]  -85  45
# [4,]  -25  25
# [5,]   -5  25

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM