我正在寻找世界各国首都城市的距离矩阵。我创建了像这样的国家质心的距离矩阵。 Shapefile派生自http://www.gadm.org/version2:
library(rgeos)
library(rgdal)
shapefile <- readOGR("./Map/World Map", layer = "TM_WORLD_BORDERS-0.3")
centroids <- gCentroid(shapefile, byid = TRUE, as.character(shapefile@data$UN)
dist_matrix <- as.data.frame(geosphere::distm(centroids)
colnames(dist_matrix) <- shapefile@data$NAME
rownames(dist_matrix) <- shapefile@data$NAME
现在我想做同样的事情,但是用国家首都而不是国家中心。理想情况下,即使我有其他不是大写的地理点,我也想要一种有效的方法。到目前为止,我已经将它绘制在给定shapefile上的大写字母,但是我找不到用它们创建距离矩阵的方法。
library(rgeos)
library(rgdal)
library(maps)
library(tidyverse)
shapefile <- readOGR("./Map/World Map", layer = "TM_WORLD_BORDERS-0.3")
data("world.cities)
world..cities <- world.cities %>%
filter(world.cities$capital == 1)
plot(shapefile)
points(world.cities$long, world.cities$lat, col ="red", cex = .6, pch = 22, add = TRUE)
理想的输出格式看起来像这样
Algeria Albania Azerbaijan
Algeria 0 x x
Albania x 0 x
Azerbaijan x x 0
其中x表示各国首都之间的距离,以米或公里为单位。
答案 0 :(得分:1)
我认为你需要的只是一个函数来计算lat / lon中给出的点之间的距离。这可以在geosphere包中找到。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h3>A demonstration of how to access a SELECT element</h3>
<select id="mySelect" >
<option>Apple</option>
<option>Pear</option>
<option>Banana</option>
<option>Orange</option>
<option>Apple</option>
<option>Pear</option>
<option>Banana</option>
<option>Orange</option>
</select>
<table style="width:700px;height:700px;margin:0 auto;border:1px solid black;" >
<tr>
<td style="border:1px solid black;border-collapse:collapse;" > <div>Try it</div></td>
<td style="border:1px solid black;border-collapse:collapse;" > <div>Try it</div></td>
<td style="border:1px solid black;border-collapse:collapse;" > <div>Try it</div></td>
<td style="border:1px solid black;border-collapse:collapse;" > <div>Try it</div></td>
<td style="border:1px solid black;border-collapse:collapse;" > <div>Try it</div></td>
<td style="border:1px solid black;border-collapse:collapse;" > <div>Try it</div></td>
</tr>
<tr>
<td style="border:1px solid black;border-collapse:collapse;" > <div>Try it</div></td>
<td style="border:1px solid black;border-collapse:collapse;" > <div>Try it</div></td>
<td style="border:1px solid black;border-collapse:collapse;" > <div>Try it</div></td>
<td style="border:1px solid black;border-collapse:collapse;" > <div>Try it</div></td>
<td style="border:1px solid black;border-collapse:collapse;" > <div>Try it</div></td>
<td style="border:1px solid black;border-collapse:collapse;" > <div>Try it</div></td>
</tr>
<tr>
<td style="border:1px solid black;border-collapse:collapse;" > <div>Try it</div></td>
<td style="border:1px solid black;border-collapse:collapse;" > <div>Try it</div></td>
<td style="border:1px solid black;border-collapse:collapse;" > <div>Try it</div></td>
<td style="border:1px solid black;border-collapse:collapse;" > <div>Try it</div></td>
<td style="border:1px solid black;border-collapse:collapse;" > <div>Try it</div></td>
<td style="border:1px solid black;border-collapse:collapse;" > <div>Try it</div></td>
</tr>
<tr>
<td style="border:1px solid black;border-collapse:collapse;" > <div>Try it</div></td>
<td style="border:1px solid black;border-collapse:collapse;" > <div>Try it</div></td>
<td style="border:1px solid black;border-collapse:collapse;" > <div>Try it</div></td>
<td style="border:1px solid black;border-collapse:collapse;" > <div>Try it</div></td>
<td style="border:1px solid black;border-collapse:collapse;" > <div>Try it</div></td>
<td style="border:1px solid black;border-collapse:collapse;" > <div>Try it</div></td>
</tr>
</table>