[R-sig-Geo] Country names from coordinates

Roger Bivand Roger.Bivand at nhh.no
Mon Jul 25 20:38:00 CEST 2016


On Mon, 25 Jul 2016, Bacou, Melanie wrote:

> Here is an approach using raster::extract(). I assume your point locations 
> are unprojected.

Offline, OK, but online you may use the geonames package, which requires a 
valid geonames user name:

library(geonames)
options(geonamesUsername="<me>")
res <- vector(mode="list", length=nrow(ptsDF))
for (i in 1:nrow(ptsDF)) res[[i]] <- try(GNcountryCode(ptsDF$latitude[i],
  ptsDF$longitude[i], radius=50))
res

using radius= to catch a slightly offshore point in Chile in the example.

Roger

>
> library(raster)
> library(tmap)
>
> data(World)
> proj4string(World)
> # [1] "+proj=eck4 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m 
> +no_defs +towgs84=0,0,0"
>
> pts <- SpatialPointsDataFrame(temp [, c(1,2)], temp, 
> proj4string=CRS("+init=epsg:4326"))
> # Reproject World
> World <- spTransform(World, CRS("+init=epsg:4326"))
> # Extract and append World attributes at pts point locations
> pts <- extract(World, pts, sp=TRUE)
>
> --Mel.
>
>
> On 7/25/2016 9:01 AM, Miluji Sb wrote:
>>  I have the following data at 0.5 degree by 0.5 degree.
>>
>>  temp <- dput(head(ptsDF,10))
>>  structure(list(longitude = c(-68.25, -67.75, -67.25, -68.25,
>>  -67.75, -67.25, -71.25, -70.75, -69.25, -68.75), latitude = c(-54.75,
>>  -54.75, -54.75, -54.25, -54.25, -54.25, -53.75, -53.75, -53.75,
>>  -53.75), GDP = c(1.683046, 0.3212307, 0.0486207, 0.1223268, 0.0171909,
>>  0.0062104, 0.22379, 0.1406729, 0.0030038, 0.0057422)), .Names =
>>  c("longitude",
>>  "latitude", "GDP"), row.names = c(4L, 17L, 30L, 43L, 56L, 69L,
>>  82L, 95L, 108L, 121L), class = "data.frame")
>>
>>  I would like add the corresponding country names to each of the
>>  coordinates. This is what I have done:
>>
>>  library(data.table)
>>  library(rgdal)
>>  library(reshape2)
>>  library(dplyr)
>>  library(tidyr)
>>  library(lubridate)
>>  library(maps)
>>  library(countrycode)
>>  library(ggplot2)
>>  library(raster)
>>
>>  coord_cells <-temp [,c(1,2)]
>>  pts_cells <-
>>  SpatialPoints(coord_cells,proj4string=CRS(proj4string(worldmap)))
>>  indices_cells <- over(pts_cells, worldmap,na.rm=TRUE)
>>  foo_cells<-indices_cells[,c(3,5)] # Keep ISO3 and country names only
>>  new_data <- cbind(foo_cells, temp)
>>
>>  However, I get a large number of NAs for coordinates which should have
>>  corresponding countries. What am I doing wrong? Any suggestions? Thank
>>  you.
>>
>>  Sincerely,
>>
>>  Milu
>>
>>   [[alternative HTML version deleted]]
>>
>>  _______________________________________________
>>  R-sig-Geo mailing list
>>  R-sig-Geo at r-project.org
>>  https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo at r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>

-- 
Roger Bivand
Department of Economics, Norwegian School of Economics,
Helleveien 30, N-5045 Bergen, Norway.
voice: +47 55 95 93 55; fax +47 55 95 91 00
e-mail: Roger.Bivand at nhh.no
http://orcid.org/0000-0003-2392-6140
https://scholar.google.no/citations?user=AWeghB0AAAAJ&hl=en
http://depsy.org/person/434412



More information about the R-sig-Geo mailing list