es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Recortar archivos raster con extensión en metros y grados.

Necesito cortar un raster basado en otro más pequeño para realizar algunas operaciones, sin embargo, tengo un problema y es que la extensión está expresada de manera diferente en ambos (metros y grados), por lo que no puedo proceder, hay una forma de resolverlo.

El raster en el que quiero recortar lo obtuve apilando varias capas en un solo rasterstack mediante muestreo, también he intentado usar solo la capa de referencia de muestreo, pero obtengo el mismo error.

La capa que voy a cortar es el producto de una predicción RK.

Mi código a continuación:

Mgpred <- stack(raster("REALIZACION1_mapasrkRF.tif"))
Covs <- stack(read.RDS("covs1km")
extent(Mgpred)
#class : Extent
#xmin : -14388.19
#xmax : 1009756
#ymin : 1113870
#ymax : 2126756

extent(Covs)
#class : Extent
#xmin : -91.04483
#xmax : -90.89741
#ymin : 14.72128
#ymax : 14.86761

e <- extent(Covs)

cr <- crop(Mgpred, e)
#Error in .local(x, y, …) : las extensiones no se superponen.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Hay algunas opciones para resolver el problema de las diferentes expresiones de extensión en los dos raster. Una opción es convertir un raster a la misma expresión de extensión que el otro. En este caso, parece que el raster basado en la predicción RK se expresa en metros mientras que el otro raster se expresa en grados. Por lo tanto, podríamos convertir la extensión del raster de predicción RK a grados usando la función projectRaster del paquete raster:

    # Convertir Mgpred a la misma expresión de extensión que Covs
    library(raster)
    Mgpred <- stack(raster("REALIZACION1_mapasrkRF.tif"))
    Covs <- stack(read.RDS("covs1km"))
    
    # Comprobar extensiones
    extent(Mgpred)
    #class      : Extent 
    #xmin       : -14388,19 
    #xmax       : 1009756 
    #ymin       : 1113870 
    #ymax       : 2126756 
    
    extent(Covs)
    #class      : Extent 
    #xmin       : -91,04483 
    #xmax       : -90,89741 
    #ymin       : 14,72128 
    #ymax       : 14,86761 
    
    # Convertir la extensión de Mgpred a grados
    Mgpred_deg <- projectRaster(Mgpred, crs=CRS("+proj=longlat +datum=WGS84"))
    
    # Comprobar extensiones de nuevo
    extent(Mgpred_deg)
    #class      : Extent 
    #xmin       : -90,15544 
    #xmax       : -74,03015 
    #ymin       : 7,207458 
    #ymax       : 24,01404 
    
    # Cortar los dos raster
    crop_Mgpred <- crop(Mgpred_deg, Covs)
    

    Ahora que ambos raster están en la misma expresión de extensión, podemos cortarlos usando la función crop.

    Otra opción es usar la función resample para hacer que ambos raster tengan la misma extensión y resolución, y luego cortarlos:

    # Hacer que ambos raster tengan la misma extensión y resolución
    Mgpred_resampled <- resample(Mgpred, Covs)
    Covs_resampled <- Covs
    
    # Cortar los dos raster resampleados
    crop_Mgpred <- crop(Mgpred_resampled, Covs_resampled)
    

    Cualquiera de estas opciones debería permitirle cortar correctamente el raster basado en la predicción RK a la extensión del raster más pequeño, para que pueda realizar las operaciones deseadas.

Comments are closed.