2

私はRが初めてで、プログラミングも初めてです。R にインポートしたシェープファイルがあり、それが Spatial Polygons Data Frame であることがわかりました。私はspatstatでcrossdist関数を使用したいのですが、その前にこれをowinに変換してからpspをクラス化しようとしています。これは、この問題に対処するために読んだ方法です。私の問題は、データを owin に変換する方法がわからないことです。これに対処する方法についての助けをいただければ幸いです。ありがとう。

4

2 に答える 2

3

A SpatialPolygons or SpatialPolygonsDataFrame object represents a list of several distinct spatial regions, e.g. states of the USA, while an owin object represents a single spatial region (possibly consisting of several disjoint pieces), e.g. Hawaii.

To convert a SpatialPolygonsDataFrame (say x) to a list of owin objects:

y <- as(x, "SpatialPolygons")
p <- slot(y, "polygons")
v <- lapply(p, function(z) { SpatialPolygons(list(z)) }
winlist <- lapply(v, as.owin)

The result winlist is a list, each entry of which is an 'owin' object representing one of the polygonal regions in x.

For further information see the spatstat vignette on shapefiles: start R, load the spatstat package, type vignette('shapefiles') and view the section on SpatialPolygonsDataFrame objects.

For more detailed information, see the book on 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

この例のシェープファイルは、ここにあります。

于 2014-01-19T06:46:41.713 に答える