将空间多边形数据框转换为OWIN

时间:2014-01-19 03:09:29

标签: r shapefile spatstat

我是R的新手,也是编程新手。我有一个shapefile,我已导入R并发现它是一个空间多边形数据框。我想在spatstat中使用crossdist函数但在此之前我试图将其转换为owin然后类psp,因为这是我阅读以解决此问题的方法。我的问题是我不知道如何将我的数据转换为owin。任何有关如何解决这个问题的帮助将不胜感激。感谢。

2 个答案:

答案 0 :(得分: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 here

答案 1 :(得分:1)

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中的一个多边形区域。

有关详细信息,请参阅shapefile上的spatstat小插图:启动R,加载spatstat包,键入vignette('shapefiles')并查看有关SpatialPolygonsDataFrame对象的部分。

有关详细信息,请参阅the book on spatstat.