Te sugerimos que pruebes esta solución en un ambiente controlado antes de enviarlo a producción, saludos.
Solución:
Frank Donnelly proporciona un archivo CSV de centroides de países que se basa en datos tomados de GeoNames Server, pero cuidadosamente seleccionados por Frank. Los datos se actualizaron por última vez en febrero de 2012.
mayo 2018
La fuente anterior ya no está disponible, aquí hay una más nueva, con mucha información sobre los países (incluidos los centroides) y la posibilidad de descargar los datos en varios formatos. https://worldmap.harvard.edu/data/geonode:country_centroids_az8
También hay una pregunta similar en Stackoverflow: necesita una lista de todos los países del mundo, con una coordenada de longitud y latitud, que incluye un par de enfoques para generar dicha lista a partir de otras fuentes de datos.
Puede recuperar esta información usando R
como esto:
library(rgeos)
library(rworldmap)
# get world map
wmap <- getMap(resolution="high")
# get centroids
centroids <- gCentroid(wmap, byid=TRUE)
# get a data.frame with centroids
df <- as.data.frame(centroids)
head(df)
#> x y
#> Aruba -69.97345 12.51678
#> Afghanistan 66.00845 33.83627
#> Angola 17.53646 -12.29118
#> Anguilla -63.06082 18.22560
#> Albania 20.05399 41.14258
#> Aland 20.03715 60.20733
# plot
plot(centroids)
Puede obtener centroides de países usando Python y GeoPandas.
import geopandas as gpd
import pandas as pd
# Access built-in Natural Earth data via GeoPandas
world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
# Get a list (dataframe) of country centroids
centroids = world.centroid
centroid_list = pd.concat([world.name, centroids], axis=1)
# Plot the results
base = world.plot(column = 'name', cmap = 'Blues')
centroids.plot(ax = base, marker = 'o', color = 'red', markersize = 5)
In [1]: centroid_list
Out[1]:
name 0
0 Afghanistan POINT (66.08669022192834 33.85639928169076)
1 Angola POINT (17.47057255231345 -12.24586903613316)
2 Albania POINT (20.03242643144321 41.14135330604877)
3 United Arab Emirates POINT (54.20671476159633 23.86863365334761)
4 Argentina POINT (-65.17536077114174 -35.44682148949509)
5 Armenia POINT (45.00029001101479 40.21660761230144)
6 Antarctica POINT (20.57100056984261 -80.49198288284349)
... and so on ...
valoraciones y comentarios
Recuerda que puedes difundir esta reseña si te fue de ayuda.