Search code examples
rgoogle-mapsggplot2latitude-longitudeggmap

Applying coordinates points on google map using R


first thank you all for your time.... i want to let you know Im new to using R I am trying to plot my coordinates using R. I have tried already to follow different post an functions one of them i will add it bellow, i have file with coordinates points covers the world i want to plot them in google satellite map? also i have API key but i dont know how to add it in the code?

require(ggplot2)
require(ggmap)
require(maps)
require(mapproj)
require(mapdata)
require(rgeos)
require(maptools)
require(sp)
require(raster)
require(rgdal)
require(dismo)
require(tmp)
####
swf1 <- read.csv("D:/jamal project/swf1.csv",header=TRUE)
head(swf1)
 Lon      Lat
1 46.60638 24.88843
2 39.57275 21.39170
3 39.63389 24.43904
4 46.73168 24.64144
5 46.77773 24.73872
6 43.98056 26.33847
#i try using ggmap’s make_bbox function
swfp <- make_bbox(lon = swf$lon, lat = swf$lat, f = .1)
swfp
        ###i got this messg
        Warning messages:
       1: In min(x, na.rm = na.rm) :
        no non-missing arguments to min; returning Inf
       2: In max(x, na.rm = na.rm) :
        no non-missing arguments to max; returning -Inf
       3: In min(x, na.rm = na.rm) :
        no non-missing arguments to min; returning Inf
       4: In max(x, na.rm = na.rm) :
        no non-missing arguments to max; returning -Inf
       > swfp
      left bottom  right    top 
      -Inf   -Inf    Inf    Inf 

problem that now I don't know how to add my points and I will like one color for each region.

Could anyone help me going forward with it?

the other option I have tried is :

# loading the required packages
library(ggplot2)
library(ggmap)

# creating a sample data.frame with your lat/lon points
lon <- c(-38.31,-35.5)
lat <- c(40.96, 37.5)
df <- as.data.frame(cbind(lon,lat))

# getting the map
mapgilbert <- get_map(location = c(lon = mean(df$lon), lat = mean(df$lat)), 
zoom = 4,
                  maptype = "satellite", scale = 2)

# plotting the map with some points on it
ggmap(mapgilbert) +
geom_point(data = df, aes(x = lon, y = lat, fill = "red", alpha = 0.8), size = 
5, shape = 21) +
guides(fill=FALSE, alpha=FALSE, size=FALSE)

when i run it i got this Error in download.file(url, destfile = tmp, quiet = !messaging, mode = "wb") : cannot open URL 'http://maps.googleapis.com/maps/api/staticmap?center=39.23,-36.905&zoom=4&size=640x640&scale=2&maptype=satellite&language=en-EN&sensor=false' In addition: Warning message: In download.file(url, destfile = tmp, quiet = !messaging, mode = "wb") : cannot open URL 'http://maps.googleapis.com/maps/api/staticmap?center=39.23,-36.905&zoom=4&size=640x640&scale=2&maptype=satellite&language=en-EN&sensor=false': HTTP status was '403 Forbidden'

help please the coordinates file HERE try it ... thank you


Solution

  • Here's a solution using library(googleway)

    library(googleway)
    
    set_key( "API_KEY" )
    
    swf1 <- read.table(text='
    Lon      Lat
    1 46.60638 24.88843
    2 39.57275 21.39170
    3 39.63389 24.43904
    4 46.73168 24.64144
    5 46.77773 24.73872
    6 43.98056 26.33847')
    
    ## you've asked for colours and sizes, so I'm making some random values which you can use in the plot
    swf1$region <- sample(c("a","b"), size = nrow(swf1), replace = T)
    swf1$size <- sample(50000:100000, size = nrow(swf1))
    
    google_map() %>%
      add_circles(
        data = swf1, lon = "Lon", lat = "Lat", fill_colour = "region", radius = "size"
      )
    

    enter image description here

    And to get a satellite view, press the 'satellite' button on the map

    enter image description here