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_transform
或 spTransform
转换到与警察点相同的坐标系(UTM 区域 19)。
我们如何在 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_transform
或 spTransform
转换到与警察点相同的坐标系(UTM 区域 19)。