【发布时间】:2020-01-22 15:06:29
【问题描述】:
我有一个多边形 (zones) 和一组坐标 (points)。我想为整个多边形创建一个空间核密度栅格,并按区域提取密度总和。多边形之外的点应该被丢弃。
library(raster)
library(tidyverse)
library(sf)
library(spatstat)
library(maptools)
load(url("https://www.dropbox.com/s/iv1s5butsx2v01r/example.RData?dl=1"))
# alternatively, links to gists for each object
# https://gist.github.com/ericpgreen/d80665d22dfa1c05607e75b8d2163b84
# https://gist.github.com/ericpgreen/7f4d3cee3eb5efed5486f7f713306e96
ggplot() +
geom_sf(data = zones) +
geom_sf(data = points) +
theme_minimal()
我尝试使用 {spatstat} 转换为 ppp,然后使用 density(),但我对结果中的单位感到困惑。我认为问题与地图的单位有关,但我不确定如何进行。
更新
这是重现我创建的密度图的代码:
zones_owin <- as.owin(as_Spatial(zones))
pts <- st_coordinates(points)
p <- ppp(pts[,1], pts[,2], window=zones_owin, unitname=c("metre","metres"))
ds <- density(p)
r <- raster(ds)
plot(r)
【问题讨论】:
-
能否包含所有相关代码?您是如何转换为栅格的?如果您将数据样本添加到帖子中而不是通过第三方,那就更好了
-
如果人们喜欢以这种方式获取数据,我会添加指向每个对象的要点的链接。我的光栅代码遵循复杂的 shapefile 转换过程,因此我将示例简化为
sf对象以在本文中重新开始。但我之前的尝试基本上是raster(density(ppp()))。 -
@camille 我玩了一下,得到了重现我创建的密度图的代码。我不知道这些单位是什么。也许我需要完全采取不同的方法。