Me han encargado que cree un análisis de idoneidad de las condiciones de las olas en el Golfo de México. Tengo unos 2.000 archivos ráster de unos 8 MB cada uno (2.438 columnas, 1.749 filas, tamaño de celda de 1 km). El parámetro de los archivos ráster es el período de las olas y me gustaría reclasificar todos los rásteres de manera que si 4<= wave period <=9 then make cell = 1
A continuación, la suma de todos los raster en un raster final y dividir por el número total de raster para dar un porcentaje total de las observaciones adecuadas y el resultado de la exportación en algún formato compatible con ESRI ... tal vez algo que puede apoyar flotadores si es necesario. No he trabajado mucho con Python o R, pero después de buscar en línea parece tener sentido para llevar a cabo este proceso en una de esas lenguas. He llegado con un poco de código hasta ahora en R, pero estoy confundido acerca de cómo hacer este trabajo.
library(rgdal)
raster_data <- list.files(path=getwd()) #promt user for dir containing raster files
num_files <- length(raster_data)
for (i in raster_data) { #read in rasters
my_data <- readGDAL(raster_data[i])
En este punto estoy confundido sobre si debo también reclasificar y empezar a sumar los datos dentro de este bucle o no. Mi opinión es que sí, ya que de lo contrario creo que posiblemente me quedaría sin memoria en mi ordenador, pero no estoy seguro. Tampoco estoy seguro de cómo reclasificar los datos.
Buscando en Internet creo que utilizaría reclass(my_data, c(-Inf,3,0, 4,9,1, 10,Inf,0))
pero, ¿se ve bien?
Y para la suma utilizaría sum(stack(my_data))
y de alguna manera la salida que. Además... si esto se puede realizar de forma más eficiente o escribir en Python, también estaría abierto a ello. Realmente soy un principiante cuando se trata de la programación.
0 votos
Sólo tienes que utilizar python-gdal. Será mucho más eficiente en su caso.
0 votos
Gracias, Rebelious. Tengo curiosidad por saber por qué python-gdal es más eficiente en esta situación. ¿También sería posible ver algunos de los pasos en código que serían necesarios para hacer esto? Tratando de averiguar la mejor manera de hacer esto, mientras que la utilización de la menor cantidad de memoria, y la cpu, como sea posible ... es confuso para averiguar cómo escribir el código de tal manera que va a leer en los datos, el proceso, sacarlo de la memoria y luego pasar a la siguiente trama.
0 votos
No puedo decirte exactamente por qué, pero la causa general es que R fue diseñado para otros propósitos y se sabe que tiene un rendimiento lento con los ciclos. En cuanto al ejemplo de código, si nadie lo proporciona, compartiré uno contigo en unas 10 horas cuando tenga acceso a la máquina donde se almacena el script correspondiente.