2016-04-02 1 views
2

Je veux créer une carte en utilisant ggmap. Je veux montrer l'emplacement de certains points, en commençant par un dataframe avec les coordonnées UTM. Cependant, je me retrouve toujours avec le message d'erreur: 'Erreur: ggplot2 ne sait pas comment traiter les données de la classe SpatialPointsDataFrame'. Aide est très appriciated ... o_0ggmap: 'Erreur: ggplot2 ne sait pas comment traiter les données de la classe SpatialPointsDataFrame'

Voici mon exemple:

#packages 
library(rgeos) 
library(maptools) 
library(rgdal)  
library(sp)  
library(ggmap) 

#create data frame with UTM coordinates 
Point_ID <- c(1,2) 
Easting <- c(519769,518250) 
Northing <- c(5767155,5766640) 

df <- data.frame(Point_ID, Easting, Northing) 

#set spatial coordinates to create a Spatial object 
myvars <- c("Easting","Northing") 
coords <- df[myvars] 
sp = SpatialPoints(coords) 

spdf = SpatialPointsDataFrame(sp, df) 

#define the projection (UTM coordinates zone 30) 
proj4string(spdf)=CRS("++proj=utm +zone=30") 

#transformed to geographic coordinates (latitude/longitude) 
spdf<- spTransform(spdf, CRS("+proj=longlat +datum=WGS84")) 


#create map 
myLocation <- "Hereford" 
myMap <- get_map(location = myLocation, zoom=16, maptype= "satellite") 

ggmap(myMap)+ 
    geom_point(aes(x = lon, y = lat), data = spdf, 
      alpha = .5, color="darkred", size = 3) 

#Error: ggplot2 doesn't know how to deal with data of class  SpatialPointsDataFrame 

Répondre

5

Extrait de la coordination de la SpatialPointsDataFrame

ggmap(myMap)+ 
geom_point(aes(x = Easting, y = Northing), data = as.data.frame(coordinates(spdf)), 
     alpha = .5, color="darkred", size = 3) 

Remarque - les deux points que vous donnez sont hors bord de la carte.