你好,所有潜在的帮助者,
我有一个从tigris
包中获得的SpatialPolygonDataFrame
对象,我想在创建ppp
对象时将其用作多边形窗口。下面是我的尝试:
# Needed packages
library(spatstat)
library(sf)
# Download geospatial data for Lee county in Alabama (home of the great Auburn University by the way!)
county <- tigris::county_subdivisions(state = "Alabama", county = "Lee")
# The polygon of Lee county is subdivided, so I convert it to a single polygon after converting it to an sf object
county_sf <- st_as_sf(county)
county_one <- st_union(county_sf)
# A quick plot of the object outputs what I am expecting
plot(county_one)
字符串
# Now I create a planar point pattern and I use county_one as the window
p <- ppp(x = -85.4, y = 32.5, window = as.owin((county_one)))
# But the plot here shows that the window is just a rectangle and not the polygon :(
plot(p)
感谢你的帮助.
2条答案
按热度按时间wtlkbnrh1#
**注意:我已经编辑了这个答案,以包含完整的细节。
正如@TimSalabim提到的,这是在
sf
中进行的,但在此之前,你必须遍历旧的sp
类,如SpatialPolygons
。在sf
中使用类似as_Spatial
的东西,然后加载maptools
,并在Spatial
对象上使用as.owin
或as(x, "owin")
。此外,
spatstat
只能使用平面(投影)空间中的坐标,而不能使用地球曲面上的坐标。您必须投影到相关的平面坐标系。epsg.io/6345在这种情况下,< www.example.com >可能可用。要投影到该坐标系,请使用sf::st_transform(county_one, crs = 6345)
。然后转换为Spatial
,然后转换为owin
。* 注意:选择相关的投影是一门科学,我对它了解不多,所以如果你想确保你不会得到太扭曲的结果,就做一些研究。具体来说,在原始示例中,您可以执行以下操作:
字符串
全县100个随机点:
oxcyiej72#
这里只想指出sf类的强制方法现在由sf包注册(如果这个词正确的话)。我不完全理解R查找方法的魔力,但它确实有效。
字符串
所以,假设你已经正确地投影了你的数据(正如@Ege Rubak所指出的),直接调用
as.owin
应该可以工作: