2014-01-19 44 views
0

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

+0

PSP是一组线段,我很困惑,你是否想点,线,多边形或混合? – mdsumner

回答

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

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晕影上shape文件:启动R,加载spatstat包,类型vignette('shapefiles')和查看关于SpatialPolygonsDataFrame对象部分。

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

相关问题