*Ejecutando este código creo un mapa de España en el que el color viene
dado por la altura.*
library(ggplot2)
library(raster)
# orografia de españa
dem <- getData('alt', country='ESP')[[1]]
slope <- terrain(dem, opt='slope')
aspect <- terrain(dem, opt='aspect')
hill <- hillShade(slope, aspect, 40, 270)
#fronteras de España
polyEsp<-getData('GADM',country='ESP',level=1)
#Cortando los valores
espHill<-mask(hill,polyEsp)
espHill<-crop(monHill,polyEsp)
espDem<-mask(dem,polyEsp)
espDem<-crop(espDem,polyEsp)
#transformando raster en points
hdf <- rasterToPoints(espHill); hdf <- data.frame(hdf)
colnames(hdf) <- c("X","Y","Hill")
ddf <- rasterToPoints(espDem); ddf <- data.frame(ddf)
colnames(ddf) <- c("X","Y","DEM")
#creando vector para color breaks
b.hs <- seq(min(hdf$Hill),max(hdf$Hill),length.out=100)
b.dem <- seq(min(ddf$DEM),max(ddf$DEM),length.out=100)
#
ggplot(NULL, aes(X, Y)) +
geom_raster(data = ddf, aes(fill = DEM)) +
geom_raster(data = hdf, aes(alpha = Hill)) +
scale_fill_gradientn(name="Altitude",colours = rainbow(20))+
guides(fill = guide_colorbar()) +
scale_alpha(range = c(0, 0.5), guide = "none") +
scale_x_continuous(name=expression(paste("Longitud
(",degree,")")),
expand=c(0,0)) +
scale_y_continuous(name=expression(paste("Latitud
(",degree,")")),
expand=c(0,0)) +
coord_equal()
*Tengo muchos datos de la altura. Si quiero representar un valor del que
tengo menos medidas, varío un poco el código. *
#creo los datos
datos <- replicate(10, 10*rnorm(10))
datosRaster <- raster(datos)
e <- extent(c(-10, 10, 35,43)) # limites latitud y longitud de españa
extent(datosRaster) <- e
# orografia de españa
dem <- getData('alt', country='ESP')[[1]]
slope <- terrain(dem, opt='slope')
aspect <- terrain(dem, opt='aspect')
hill <- hillShade(slope, aspect, 40, 270)
dem <- datosRaster # ahora quiero representar esto
#fronteras de España
polyEsp<-getData('GADM',country='ESP',level=1)
#Cortando los valores
espHill<-mask(hill,polyEsp)
espHill<-crop(monHill,polyEsp)
espDem<-mask(dem,polyEsp)
espDem<-crop(espDem,polyEsp)
#transformando raster en points
hdf <- rasterToPoints(espHill); hdf <- data.frame(hdf)
colnames(hdf) <- c("X","Y","Hill")
ddf <- rasterToPoints(espDem); ddf <- data.frame(ddf)
colnames(ddf) <- c("X","Y","DEM")
#creando vector para color breaks
b.hs <- seq(min(hdf$Hill),max(hdf$Hill),length.out=100)
b.dem <- seq(min(ddf$DEM),max(ddf$DEM),length.out=100)
#
ggplot(NULL, aes(X, Y)) +
geom_raster(data = ddf, aes(fill = DEM)) +
geom_raster(data = hdf, aes(alpha = Hill)) +
scale_fill_gradientn(name="Altitude",colours = rainbow(20))+
guides(fill = guide_colorbar()) +
scale_alpha(range = c(0, 0.5), guide = "none") +
scale_x_continuous(name=expression(paste("Longitud
(",degree,")")),
expand=c(0,0)) +
scale_y_continuous(name=expression(paste("Latitud
(",degree,")")),
expand=c(0,0)) +
coord_equal()
*Me sale con unos píxeles muy grandes. *
*¿Cual sería la manera de que esto no ocurra?*
*si hago*
plot(datosRaster)
plot(datosRaster, interpolate=T)
*Consigo el efecto que quiero, pero no puedo unirlo al mapa de españa. *
*¿Hay algún método para interpolar un objeto Raster y darle más definición?*
*o alternativamente,*
*¿Puedo extrapolar la matriz datos para que tenga más filas y columnas?
Parecido a lo que hace bkde2D o hist2D cuando tengo puntos. *
*Gracias*
[[alternative HTML version deleted]]