R spatstat - ppp 和 owin (window) 对象之间的不同 window 单位

R spatstat - Different window unit between ppp and owin (window) object

我们如何在 ppp 对象和 owin 对象之间转换 "unit" of window?

我正在尝试分析从开放街道地图收集的空间数据。

首先,我获取新加坡周围的 POI 数据,然后将它们转换为 ppp 个对象

if(!require("osmdata")) install.packages("osmdata")
library(osmdata)
q <- getbb("Singapore") %>%
opq() %>%
add_osm_feature("amenity")

places <- osmdata_sf(q)
police <- places$osm_points %>% 
   filter(amenity == "police") %>%
   st_transform(., "+proj=utm +zone=19 +ellps=GRS80 +datum=NAD83")

police.sp  <- as(police, "Spatial")  # Create Spatial* object
police.ppp <- as(police.sp, "ppp")      # Create ppp object
class(police.ppp)

稍后,我尝试插入一个从 gov website 中找到的 .shp 对象,以创建一个新加坡形状以作为 Window() 输入到 police.ppp 对象。

s    <- readOGR(".", "Region_Census2010")
sg    <- as(s, "owin")

然而,在调用两者中的 summary 时,我看到两者的范围非常不同

summary(sg)
enclosing rectangle: [2637.87, 56396.44] x [15748.72, 50256.33] units
                     (53760 x 34510 units)

summary(police.ppp)
Window: rectangle = [1280705.4, 1323492.3] x [19833441, 19854045] units
                    (42790 x 20600 units)

因此,当我尝试绘制文件时,所有警察点都在地图之外。

有什么方法可以调整单位吗?我是不是哪里做错了什么?

请帮忙!

谢谢!

确保对两个数据集使用相同的 CRS。在读入 s 后,您应该使用 st_transformspTransform 转换到与警察点相同的坐标系(UTM 区域 19)。