Usando ggmap, quiero incluir los bordes del municipio (polígono) de un archivo de forma en un mapa que contiene algunos puntos de ubicación. Este script hace todo excepto trazar el polígono:
library(rgdal)
library(ggmap)
# Get shapefile with Drammen municipality borders
tmpzip<-tempfile()
tmpdir<-tempfile()
dir.create(tmpdir)
download.file("http://www.kartverket.no/Documents/Kart/N50-N5000%20Kartdata/33_N5000_shape.zip",tmpzip)
unzip(tmpzip, exdir=tmpdir)
kommune <- readOGR(dsn=tmpdir, layer="NO_AdminOmrader_pol")
kommune<-kommune[kommune$NAVN=="Drammen",]
kommune<-spTransform(kommune, CRS("+init=epsg:4326"))
# Get location point data
subscr<-data.frame(lon=c(10.1237,10.2161,10.2993),lat=c(59.7567,59.7527,59.6863), pop=c(58,12,150))
coordinates(subscr)<-~lon+lat
proj4string(subscr)<-CRS("+init=epsg:4326")
lon <- c(10.0937,10.3293)
lat <- c(59.7916,59.6563)
map <- get_map(location = c(lon[1], lat[2], lon[2], lat[1]),
maptype = "roadmap", source = "osm", zoom = 11)
p <- ggmap(map) +
geom_point(data = as.data.frame(subscr), aes(x = lon, y = lat, size=pop),
colour = "darkgreen") +
theme_bw()
print(p)
¿Cómo puedo trazar el polígono desde el archivo de forma? He intentado sustituir la segunda última línea con lo siguiente:
p <- ggmap(map) +
geom_point(data = as.data.frame(subscr), aes(x = lon, y = lat, size=pop),
colour = "darkgreen") +
geom_polygon(data = as.data.frame(kommune)) +
theme_bw()
Pero luego aparece el siguiente error:
Error: Aesthetics must be either length 1 or the same as the data (1): x, y
Para agregar a la respuesta anterior: Para aquellos que siguen su excelente tutorial / respuesta y se preguntan cómo resolver el siguiente problema sobre el recorte de polígono (¡como lo estaba yo!)
Aquí está la respuesta, cortesía del 'método optimizado' del usuario en /programming/13982773/crop-for-spatialpolygonsdataframe
entonces, cuando tramas, no tendrás el extraño problema de recorte.
fuente