测量质心R之间的距离

时间:2016-12-06 16:24:52

标签: r distance

我想创建一个世界上每个国家的质心之间的距离矩阵(以米为单位)。国家/地区名称或国家/地区ID应包含在矩阵中。

矩阵基于此处下载的世界的shapefile:http://gadm.org/version2

以下是我正在使用的shapefile的一些粗略信息(我使用shapefile @ data $ UN作为我的ID):

> str(shapefile@data)
'data.frame':   174 obs. of  11 variables:
$ FIPS     : Factor w/ 243 levels "AA","AC","AE",..: 5 6 7 8 10 12 13 
$ ISO2     : Factor w/ 246 levels "AD","AE","AF",..: 61 17 6 7 9 11 14   
$ ISO3     : Factor w/ 246 levels "ABW","AFG","AGO",..: 64 18 6 11 3 10 
$ UN       : int  12 31 8 51 24 32 36 48 50 84 ...
$ NAME     : Factor w/ 246 levels "Afghanistan",..: 3 15 2 11 6 10 13 
$ AREA     : int  238174 8260 2740 2820 124670 273669 768230 71 13017 
$ POP2005  : int  32854159 8352021 3153731 3017661 16095214 38747148 
$ REGION   : int  2 142 150 142 2 19 9 142 142 19 ...
$ SUBREGION: int  15 145 39 145 17 5 53 145 34 13 ...
$ LON      : num  2.63 47.4 20.07 44.56 17.54 ...
$ LAT      : num  28.2 40.4 41.1 40.5 -12.3 ...

我试过了:

library(rgeos)
shapefile <- readOGR("./Map/Shapefiles/World/World Map", layer = "TM_WORLD_BORDERS-0.3") # Read in world shapefile

row.names(shapefile) <- as.character(shapefile@data$UN)
centroids <- gCentroid(shapefile, byid = TRUE, id = as.character(shapefile@data$UN)) # create centroids

dist_matrix <- as.data.frame(geosphere::distm(centroids))

结果如下所示:

    V1         V2         V3         V4
1   0.0        4296620.6  2145659.7  4077948.2
2   4296620.6  0.0        2309537.4  219442.4
3   2145659.7  2309537.4  0.0        2094277.3
4   4077948.2  219442.4   2094277.3  0.0

1)我希望有国家ID(shapefile @ data $ UN)或名称(shapefile @ data),而不是第一列(1,2,3,4)和行(V1,V2,V3,V4) @名称)。这有什么作用?

2)我不确定返回的值。是米,公里等?

3)geosphere :: distm是否优于geosphere:在这种情况下是distGeo?

1 个答案:

答案 0 :(得分:1)

1

这应该可以将列名和行名添加到矩阵中。就像在将行名称添加到shapefile

时所做的那样
crnames<-as.character(shapefile@data$UN)
colnames(dist_matrix)<- crnames
rownames(dist_matrix)<- crnames

2

distm中的默认距离函数为distHaversine,它以m为半径(地球)变量。所以我假设输出是m。

3

查看distGeodistHaversine的文档,并确定结果中所需的准确度。要查看R中的文档,只需输入?distGeo

编辑:对q1的回答可能是错误的,因为可以聚合矩阵数据,查看备选方案