使用预定义的像元大小将 sf 转换为栅格并绘制它

converting sf to raster using predefined cell size and plot it

nz_heightnz 存在于 spData 包中。

  1. nz_height - sf class 数据集 - 新西兰前 101 个最高点。
  2. nz - sf class 数据 - 代表新西兰 16 个地区的多边形。

下面是使用tmap()

进行可视化的图表

你能帮我创建吗

  1. nz_raster(栅格 class),像元大小 = 100km x 100km,每个像元包含峰数
  2. 剧情nz_raster.
# load packages
library(tidyverse)
library(sf)
library(raster)
library(spData)
library(tmap)


# vector plot of peaks
tm_shape(nz) + 
  tm_polygons(col = "white") + 
  tm_shape(nz_height) + 
  tm_symbols(col = "red") + 
  tm_scale_bar()

您可以使用 raster 包或其继任者 terra:

对点进行栅格化
# Load packages
packs <- list("tidyverse", "raster", "sf", "terra")
lapply(packs, require, character.only = T)

# raster version
nz_height <- st_transform(nz_height, crs = "+proj=moll +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +units=m +no_defs") %>% 
  as("Spatial")
nz_raster <- raster(resolution = 100000, crs = "+proj=moll +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +units=m +no_defs", 
  xmn = 13600000, xmx = 15100000, ymn = -5300000, ymx = -4700000) %>% 
  rasterize(nz_height, ., field = "elevation", fun = "count", background = 0)

# terra version
nz_height <- st_transform(nz_height, crs = "+proj=moll +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +units=m +no_defs") %>% 
  vect()
nz_raster <- rast(resolution = 100000, crs = "+proj=moll +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +units=m +no_defs", 
  xmin = 13600000, xmax = 15100000, ymin = -5300000, ymax = -4700000) %>% 
  rasterize(nz_height, ., fun = length, background = 0)

该代码使用 Mollweide 等面积投影,即网格单元等大。

您可以通过这些包中的 plot() 函数绘制光栅对象。其他选项例如rasterVis::gplot()ggplot2::geom_raster()tmap::tm_raster()