我是 R 新手,也是编程新手。我有一个已导入 R 的 shapefile,发现它是一个空间多边形数据框。我想在 spatstat 中使用 crossdist 函数,但在此之前我试图将其转换为 owin ,然后转换为 psp 类,因为这就是我为解决此问题而阅读的方法。我的问题是我不确定如何将我的数据转换为 owin。任何有关如何解决此问题的帮助将不胜感激。谢谢。
问问题
2212 次
2 回答
3
SpatialPolygons 或 SpatialPolygonsDataFrame 对象表示几个不同空间区域的列表,例如美国的州,而 owin 对象表示单个空间区域(可能由几个不相交的部分组成),例如夏威夷。
要将 SpatialPolygonsDataFrame(例如x
)转换为 owin 对象列表:
y <- as(x, "SpatialPolygons")
p <- slot(y, "polygons")
v <- lapply(p, function(z) { SpatialPolygons(list(z)) }
winlist <- lapply(v, as.owin)
结果winlist
是一个列表,其中的每个条目都是一个 'owin' 对象,表示 x 中的一个多边形区域。
有关更多信息,请参阅spatstat
shapefile 的小插图:启动 R,加载spatstat
包,键入vignette('shapefiles')
并查看有关 SpatialPolygonsDataFrame 对象的部分。
有关更多详细信息,请参阅有关 spatstat 的书。
于 2015-12-27T10:45:45.220 回答
1
不太确定您在寻找什么,但这有帮助吗?
setwd("<directory with shapefile>")
library(rgdal)
library(spatstat)
# polygon TIGER/Line shapefile of US States (Census Bureau)
US.States <- readOGR(dsn=".",layer="tl_2013_us_state")
# centroids of each state
centroids <- data.frame(coordinates(US.States))
# distance from every state to every other state
dist.matrix <- crossdist(centroids$X1,centroids$X2, centroids$X1,centroids$X2)
dist <- data.frame(State=US.States$NAME,dist.matrix)
colnames(dist)[-1] <- as.character(dist$State)
# dist[1:5,1:5]
# State West Virginia Florida Illinois Minnesota
# 1 West Virginia 0.000000 10.32684 8.662579 15.618328
# 2 Florida 10.326844 0.00000 13.422915 21.373925
# 3 Illinois 8.662579 13.42292 0.000000 8.015524
# 4 Minnesota 15.618328 21.37393 8.015524 0.000000
# 5 Maryland 3.938274 11.95297 12.516987 19.011532
此示例中的 shapefile 可在此处找到。
于 2014-01-19T06:46:41.713 回答