1
votes

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

1
@RomanLuštrik yes i have i got some Error like Error in GetMap(center = center, zoom = zoom, type = "satellite", destfile = "satellite.png") : unused argument (type = "satellite") - Maram Mubarak
In the second case, you probably need to provide a API key .See stackoverflow.com/questions/51481913/… . - lbusett
In the first case, you have a case mismatch in column names. This should be : swfp <- make_bbox(lon = swf$Lon, lat = swf$Lat, f = .1) - lbusett
@Ibusett thank you for your answer, even when i provide the API key still no map and points. may i ask you to try in my data to see what i have got wrong? swf1 <- read.csv("D:/jamal project/swf1.csv",header=TRUE) head(swf1) swfp <- make_bbox(lon = swf$Lon, lat = swf$Lat, f = .1) swfp swfp <- get_map(location = swfp, maptype = "satellite", source = "google") ggmap(swfp) + geom_point(data = sisquoc, mapping = aes(x = lon, y = lat), color = "red") - Maram Mubarak

1 Answers

2
votes

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