我根据家庭范围创建了大量的质心(84)。所有这些质心都是单独的Formal Class SpatialPoints,保存为值;这里有四个例子:
> C004cen
SpatialPoints:
x y
homerange -122.7916 42.87038
Coordinate Reference System (CRS) arguments: +proj=longlat +datum=WGS84
+ellps=WGS84 +towgs84=0,0,0
> C006cen
SpatialPoints:
x y
homerange -122.5906 42.96253
Coordinate Reference System (CRS) arguments: +proj=longlat
+datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
> C008cen
SpatialPoints:
x y
homerange -122.5926 42.95456
Coordinate Reference System (CRS) arguments: +proj=longlat
+datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
> C012cen
SpatialPoints:
x y
homerange -122.567 42.68344
Coordinate Reference System (CRS) arguments: +proj=longlat
+datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
我想创建一个这84个质心的矩阵,基本上是84x84,每个质心之间的距离填充细胞;但是我不太确定如何从84个单独的Formal Class SpatialPoints转换为矩阵。看起来首先要做的是将所有这些质心组合成一个Formal Class SpatialPoints,但到目前为止我发现的所有内容都涉及SpatialPointsDataFrames。是否可以将84个单独的SpatialPoints合并为一个?
感谢RobertH提供生成距离的命令。
答案 0 :(得分:1)
# Please provide example data!
library(raster)
n <- 10
set.seed(123)
x <- runif(n) * 360 - 180
y <- runif(n) * 180 - 90
xy <- SpatialPoints(cbind(x, y), proj4string=CRS('+proj=longlat +datum=WGS84'))
xy
#class : SpatialPoints
#features : 10
#extent : -163.5997, 158.5682, -82.42928, 82.23 (xmin, xmax, ymin, ymax)
#coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
给定SpatialPoints *对象xy,我们可以做
d <- pointDistance(xy)
round(d/1000)
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
# [1,] 0 NA NA NA NA NA NA NA NA NA
# [2,] 11799 0 NA NA NA NA NA NA NA NA
# [3,] 5857 14840 0 NA NA NA NA NA NA NA
# [4,] 9276 4456 14923 0 NA NA NA NA NA NA
# [5,] 18285 7930 15556 9508 0 NA NA NA NA NA
# [6,] 2146 10976 7871 7574 16150 0 NA NA NA NA
# [7,] 14955 9631 9627 13941 6769 17060 0 NA NA NA
# [8,] 19451 8406 14380 10604 1285 17416 5524 0 NA NA
# [9,] 13471 9090 8817 13543 8223 15442 1790 7053 0 NA
#[10,] 901 11372 5594 9377 18842 2829 14231 19647 12662 0
如果你想要一个距离矩阵,你可以这样做:
dd <- as.dist(d)
如果你不想要NA,你可以这样做:
d <- as.matrix(as.dist(d))
round(d/1000)
# 1 2 3 4 5 6 7 8 9 10
#1 0 11799 5857 9276 18285 2146 14955 19451 13471 901
#2 11799 0 14840 4456 7930 10976 9631 8406 9090 11372
#3 5857 14840 0 14923 15556 7871 9627 14380 8817 5594
#4 9276 4456 14923 0 9508 7574 13941 10604 13543 9377
#5 18285 7930 15556 9508 0 16150 6769 1285 8223 18842
#6 2146 10976 7871 7574 16150 0 17060 17416 15442 2829
#7 14955 9631 9627 13941 6769 17060 0 5524 1790 14231
#8 19451 8406 14380 10604 1285 17416 5524 0 7053 19647
#9 13471 9090 8817 13543 8223 15442 1790 7053 0 12662
#10 901 11372 5594 9377 18842 2829 14231 19647 12662 0