9 votos

Convertir varios SpatialPointsDataFrames en raster

Hay 100 SpatialPointsDataFrames en mi espacio de trabajo. Los he cargado de esta manera:

filenames <- list.files(path="",
                        pattern="XYhectareTravelTimes_ez+.*shp")

for(i in filenames){
              filepath <- file.path("/",i)
              assign(i, readShapePoints(filepath))

Se llaman así:

XYhectareTravelTimes_ez10.*shp 
XYhectareTravelTimes_ez11.*shp 
XYhectareTravelTimes_ez12.*shp 

etc.

¿Cómo puedo convertirlos en rásteres que pasen por el espacio de trabajo?

Soy un usuario muy nuevo de R y espero encontrar algo de ayuda. Muchas gracias.

10voto

Tuoski Puntos 537

Si sus datos contienen datos xyz (donde z es el valor del raster) y sus puntos están en una cuadrícula regular (no es necesario interpolar).

library("raster")
r <- rasterFromXYZ(as.data.frame(travel)[, c("x", "y", "z")])

Si necesitas interpolación, puedes utilizar la biblioteca akima :

library("raster")
library("akima")

steps <- 100
isu <- with(travel@data, interp(x, y, z, 
    xo=seq(min(x), max(x), length = steps),
    yo=seq(min(y), max(y), length = steps)
))

r <- raster(isu)

Ahora bien, para hacer esto de forma secuencial sólo hay que envolverlo en un for bucle (he tratado de mantenerme lo más cerca posible de la información que has dado en tu pregunta) :

library("raster")

filenames <- list.files(path="", pattern="XYhectareTravelTimes_ez+.*shp")

# create a container for all the rasters
raster_cat <- list()

for (i in filenames) { 
  travel <- readShapePoints(i)
  r <- rasterFromXYZ(as.data.frame(travel)[, c("x", "y", "z")])
  raster_cat[[i]] <- r
}

6voto

Richard C. McGuire Puntos 3345

Además de la respuesta de @Etiennebr, yo optaría por un bucle de estilo apply (que es más propio de R, y utiliza menos código para lo mismo):

library("raster")

filenames <- list.files(path="", pattern="XYhectareTravelTimes_ez+.*shp")

raster_cat = lapply(filenames, function(x) {
  travel <- as.data.frame(readShapePoints(x))
  r <- rasterFromXYZ(travel[, c("x", "y", "z")])
})

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X