将 SpatialpolygonDataframe 中的列值转换为光栅图像

时间:2021-06-04 11:47:26

标签: r

我需要帮助将空间多边形中的变量或列值转换为光栅图像。我有行政单位的空间数据,每个单位的收入(平均)信息。我想将此信息转换为栅格以供进一步分析。

我尝试了下面的代码,但没有用。

r <- raster(ncol=5,nrow=15) 
r.inc <- rasterize(DK,r,field=DK@data[,2],fun=mean)

其中 SP 是空间多边形和存储在 SpatialPolygonDataframe 的第 2 列中的每个空间单元的平均收入。任何人都可以提供有关如何栅格化感兴趣列中的值的函数或代码的帮助吗?下面是一个空间多边形数据框(已创建)的示例以及我对数据进行栅格化的尝试

suppressPackageStartupMessages(library(tidyverse))
url = "https://api.dataforsyningen.dk/landsdele?format=geojson"
geofile = tempfile()
download.file(url, geofile)
DK <- rgdal::readOGR(geofile)
DK@data = subset(DK@data, select = c(navn))
DK@data$inc = runif(11, min=5000, max=80000)
require(raster)
r <- raster(ncol=5,nrow=15) 
r.inc <- rasterize(DK,r,field=DK@data[,2],fun=mean)
plot(r.inc)

谢谢。

致谢:创建示例 SPDF 的代码来自 Mikkel Freltoft Krogsholm(链接如下)。

https://www.linkedin.com/pulse/easy-maps-denmark-r-mikkel-freltoft-krogsholm/?trk=read_related_article-card_title

1 个答案:

答案 0 :(得分:1)

这是制作光栅的东西。

library(tidyverse)
library(rgdal)
library(raster)
url <- "https://api.dataforsyningen.dk/landsdele?format=geojson"
geofile <- tempfile()
download.file(url, geofile)
DK <- rgdal::readOGR(geofile)
r_dk <- raster(DK, nrows = 100, ncols = 100)      # Make a raster of the same size as the spatial polygon with many cells
DK$inc <- runif(nrow(DK), min=5000, max=80000)    # Add some fake income data
rr <- rasterize(DK, r_dk, field='inc')            # Rasterize the polygon into the raster - fun = 'mean' won't make any difference
                                                                                             
plot(rr)

enter image description here

原始栅格是整个地球的大小,所以我认为丹麦平均为零。我通过根据具有 100x100 单元格的 DK 空间多边形的范围制作一个空栅格来解决此问题。我也简化了代码。通常,如果您发现自己将 @ 用于空间数据操作,则表明可能有更简单的方法。因为栅格的分辨率远大于每个DK区域的大小,取平均值没有太大区别。