planisferio para niños medir mapa longitud latitud google geograficas ejemplos definicion coordenadas como r maps geocode rworldmap

para - latitud y longitud google maps



Convertir las coordenadas de latitud y longitud al nombre del país en R (2)

Gracias por la pregunta cuidadosamente construida. Se requiere solo un par de cambios de línea para poder usar rworldmap (que contiene países actualizados), ver más abajo. No soy un experto en CRS, pero no creo que el cambio que tuve que hacer en el proyecto haga ninguna diferencia. A otros les gustaría comentar sobre eso.

Esto funcionó para mí y dio:

> coords2country(points) [1] United Kingdom Belgium Germany Austria [5] Republic of Serbia

Todo lo mejor, Andy

library(sp) library(rworldmap) # The single argument to this function, points, is a data.frame in which: # - column 1 contains the longitude in degrees # - column 2 contains the latitude in degrees coords2country = function(points) { countriesSP <- getMap(resolution=''low'') #countriesSP <- getMap(resolution=''high'') #you could use high res map from rworldxtra if you were concerned about detail # convert our list of points to a SpatialPoints object # pointsSP = SpatialPoints(points, proj4string=CRS(" +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs +towgs84=0,0,0")) #setting CRS directly to that from rworldmap pointsSP = SpatialPoints(points, proj4string=CRS(proj4string(countriesSP))) # use ''over'' to get indices of the Polygons object containing each point indices = over(pointsSP, countriesSP) # return the ADMIN names of each country indices$ADMIN #indices$ISO3 # returns the ISO3 code #indices$continent # returns the continent (6 continent model) #indices$REGION # returns the continent (7 continent model) }

Tengo una lista de coordenadas de latitud y longitud, y deseo saber en qué país residen.

Modifiqué una respuesta de esta pregunta sobre los estados de EE. UU . Y tengo una función de trabajo, pero me encuentro con el problema de que el mapa worldHires (del paquete mapdata ) está terriblemente desactualizado y contiene muchos países obsoletos como como Yugoslavia y la URSS.

¿Cómo modificaría esta función para usar un paquete más moderno, como rworldmap ? Sólo he logrado frustrarme hasta ahora ...

library(sp) library(maps) library(rgeos) library(maptools) # The single argument to this function, points, is a data.frame in which: # - column 1 contains the longitude in degrees # - column 2 contains the latitude in degrees coords2country = function(points) { # prepare a SpatialPolygons object with one poly per country countries = map(''worldHires'', fill=TRUE, col="transparent", plot=FALSE) names = sapply(strsplit(countries$names, ":"), function(x) x[1]) # clean up polygons that are out of bounds filter = countries$x < -180 & !is.na(countries$x) countries$x[filter] = -180 filter = countries$x > 180 & !is.na(countries$x) countries$x[filter] = 180 countriesSP = map2SpatialPolygons(countries, IDs=ids, proj4string=CRS("+proj=longlat +datum=wgs84")) # convert our list of points to a SpatialPoints object pointsSP = SpatialPoints(points, proj4string=CRS("+proj=longlat +datum=wgs84")) # use ''over'' to get indices of the Polygons object containing each point indices = over(pointsSP, countriesSP) # Return the state names of the Polygons object containing each point myNames = sapply(countriesSP@polygons, function(x) x@ID) myNames[indices] } ## ## this works... but it has obsolete countries in it ## # set up some points to test points = data.frame(lon=c(0, 5, 10, 15, 20), lat=c(51.5, 50, 48.5, 47, 44.5)) # plot them on a map map("worldHires", xlim=c(-10, 30), ylim=c(30, 60)) points(points$lon, points$lat, col="red") # get a list of country names coords2country(points) # returns [1] "UK" "Belgium" "Germany" "Austria" "Yugoslavia" # number 5 should probably be in Serbia...


Puede usar mi paquete de geonames para buscar desde el servicio http://geonames.org/ :

> GNcountryCode(51.5,0) $languages [1] "en-GB,cy-GB,gd" $distance [1] "0" $countryName [1] "United Kingdom of Great Britain and Northern Ireland" $countryCode [1] "GB" > GNcountryCode(44.5,20) $languages [1] "sr,hu,bs,rom" $distance [1] "0" $countryName [1] "Serbia" $countryCode [1] "RS"

Obténgalo de r-forge porque no estoy seguro de que me haya molestado en lanzarlo a CRAN:

https://r-forge.r-project.org/projects/geonames/

Sí, depende de un servicio externo, pero al menos sabe lo que pasó con el comunismo ... :)