O tal dice lo que expongo a continuación.
Paquetes necesarios:
library(rvest)
library(caRtociudad)
library(reshape2)
library(ggmap)
library(plyr)
library(TSP)
Extracción de las provincias y sus capitales (de la Wikipedia):
capitales <- read_html("https://es.wikipedia.org/wiki/Anexo:Capitales_de_provincia_de_Espa%C3%B1a_por_poblaci%C3%B3n")
capitales <- html_nodes(capitales, "table")
capitales <- html_table(capitales[[1]])$Ciudad
capitales <- capitales[!capitales %in%
c("Las Palmas de Gran Canaria",
"Melilla", "Ceuta", "Mérida",
"Santa Cruz de Tenerife",
"Santiago de Compostela",
"Palma de Mallorca")]
Y sus coordenadas:
coordenadas <- ldply(capitales, function(x) {
tmp <- cartociudad_geocode(x)[1,]
res <- data.frame(ciudad = x, provincia = tmp$province, lat = tmp$latitude, lon = tmp$longitude)
if(is.na(res$lat)){
tmp <- geocode(paste(x, "España"))
res$lat <- tmp$lat
res$lon <- tmp$lon
}
res
})
# Pobre Logroño: ¡Cartociudad lo ubica en Asturias!
coords.logrono <- geocode("Logroño")
coordenadas$lat[coordenadas$ciudad == "Logroño"] <- coords.logrono$lat
coordenadas$lon[coordenadas$ciudad == "Logroño"] <- coords.logrono$lon
Construcción de la matriz simétrica de distancias (¡tarda un buen rato!):