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.

La función de inicialización del paquete Terra genera un error fatal.

Estoy utilizando la función “initialize” en el paquete terra para crear un ráster en RStudio. Según la documentación, esta función debería funcionar con rásteres grandes, pero obtengo un error fatal en RStudio cuando intento crear un ráster de 10,000 x 10,000 con un solo valor para todas las celdas.

El código de ejemplo funciona como se espera:

r <- rast(ncols=10, nrows=5, xmin=0, xmax=10, ymin=0, ymax=5)
z <- init(r, fun=8) # funciona

Sin embargo, cuando aumento las dimensiones a 10k x 10k, ocurre el error fatal.

r <- rast(ncols=10000, nrows=10000, xmin=0, xmax=10000, ymin=0, ymax=10000)
z <- init(r, fun=8) # se cae

Observando el Monitor de Actividad en mi Macbook Pro, se muestra que la presión de memoria aumenta cuando se ejecuta el código, con el proceso de RStudio usando más de 80GB de RAM. Tengo 16GB de RAM en mi computadora, por lo que creo que el problema podría estar relacionado con algún problema de memoria.

No estoy seguro si la función no está funcionando como se pretende o si el problema está en RStudio. ¿O estoy haciendo algo mal?

Cualquier ayuda será muy apreciada.

Mis especificaciones:
Sistema operativo: Monterey 12.0.1
Chip: Apple M1 Pro.
Versión de R: 4.1.2 (2021-11-01)
Versión de RStudio: 2021.9.1.372 “Ghost Orchid”

Edit:
Versión de terra: 1.4.22

Probé dos soluciones recomendadas por rhijmans en el enlace de @FKneip, pero ambas resultaron en el mismo error fatal que antes.

r <- rast(ncols=10000, nrows=10000) # funciona

values(r) <- 1 # se cae
z <- init(r, 1, filename="test.tif", datatype="INT1U") # se cae
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema que estás enfrentando está relacionado con un problema de memoria. Cuando se ejecuta el código con dimensiones de ráster más grandes, puede aumentar la presión de memoria y exceder la RAM disponible en tu computadora. Esto puede causar que RStudio se bloquee y produzca un error fatal.

    Una posible solución es aumentar la memoria disponible mediante la actualización de la RAM de tu computadora o utilizando una computadora con más RAM. Otra solución es configurar tu código para procesar los datos del ráster en fragmentos más pequeños en lugar de procesar todo el ráster de una vez. Puedes lograr esto utilizando la función subset del paquete terra para procesar subconjuntos más pequeños de los datos del ráster.

    Es importante destacar que utilizar la función init puede no ser el enfoque óptimo para crear rásteres grandes y uniformes. Una alternativa podría ser crear un ráster vacío utilizando la función rast y luego asignar un valor único a todas las celdas utilizando la función values. Esto puede ayudar a reducir el uso de memoria y evitar los errores fatales que estás experimentando.

    Por último, asegúrate de tener instalada la versión más reciente del paquete terra, ya que las versiones más nuevas pueden abordar problemas de memoria y rendimiento.

Comments are closed.