Plot coordinates on map

前端 未结 4 1459
被撕碎了的回忆
被撕碎了的回忆 2020-12-07 12:17

I am trying to plot my coordinates using R. I have tried already to follow different post (R: Plot grouped coordinates on world map ; Plotting coordinates of multiple points

相关标签:
4条回答
  • 2020-12-07 12:45

    Another option is using the leaflet package (as suggested here). Unlike Google Maps it does not require any API key.

    install.packages(c("leaflet", "sp"))
    library(sp)
    library(leaflet)
    df <- data.frame(longitude = runif(10, -97.365268, -97.356546), 
                     latitude = runif(10, 32.706071, 32.712210))
    
    coordinates(df) <- ~longitude+latitude
    leaflet(df) %>% addMarkers() %>% addTiles()
    

    0 讨论(0)
  • 2020-12-07 12:58

    As an alternative to RgoogleMaps, you can also use the combination ggplot2 with ggmap.

    With this code:

    # 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)
    

    you get this result: enter image description here

    0 讨论(0)
  • 2020-12-07 13:00

    Here is a solution using only Rgooglemaps, as requested by the user.

    # get map (from askers OP, except changed map type = "Satallite" to type = "Satellite")
    library(RgoogleMaps)
    lat <- c(-38.31, -35.50) #define our map's ylim
    lon <- c(40.96,37.50) #define our map's xlim
    center = c(mean(lat), mean(lon))  #tell what point to center on
    zoom <- 2 #zoom: 1 = furthest out (entire globe), larger numbers = closer in
    terrmap <- GetMap(center=center, zoom=zoom, type= "satellite", destfile = "satellite.png")
    
    # plot points and save image
    lat <- c(-38.31, -57.59, -39.47)
    lon <- c(40.96, 76.51, 108.93)
    png('map.png')
    PlotOnStaticMap(terrmap, lat = lat, lon = lon, pch = 20, col = c('red', 'blue', 'green'))
    dev.off()
    

    0 讨论(0)
  • 2020-12-07 13:10

    An other alternative, is the plotGoogleMaps package which allows to plot in a navigator, allowing to zoom in and out etc. You can then make a screenshot of your picture to save it (though remember google maps are legally supposed to be used for the internet).

     library("plotGoogleMaps")
     lat <- c(-38.31, -35.50) #define our map's ylim
     lon <- c(40.96,37.50) #define our map's xlim
    
     # make your coordinates a data frame 
     coords <- as.data.frame(cbind(lon=lon,lat=lat))
    
     # make it a spatial object by defining its coordinates in a reference system
     coordinates(coords) <- ~lat+lon 
    
     # you also need a reference system, the following should be a fine default
     proj4string(coords) <- CRS("+init=epsg:4326")
     # Note: it is a short for: 
     CRS("+init=epsg:4326")
     > CRS arguments:
     >  +init=epsg:4326 +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 
    
     # then just plot
     a <- plotGoogleMaps(coords)
     # here `a <-` avoids that you get flooded by the html version of what you plot 
    

    And you get :

    0 讨论(0)
提交回复
热议问题