На прошлой неделе я задал вопрос о самом быстром способе замаскировать чрезвычайно большой rasterbrick
. После некоторого размышления на выходных я чувствую, что, возможно, мне следует поднять еще один вопрос - в более подробном контексте о моей общей цели - в надежде найти более эффективное решение.
Короче говоря, я пытаюсь чтобы «выбросить» много ненужных данных в rasterbrick
, сохранив при этом его размер и происхождение. Мне не нужны данные значений в подавляющем большинстве ячеек, за исключением подмножества предварительно выбранных точек. Тем не менее, я должен сохранить пространственное распределение этих точек в их правильных местах на земном шаре (отсюда и мое требование сохранения протяженности, происхождения и разрешения). Я подумал, что могу просто установить большинство ячеек в моем исходном rasterbrick
на NA
, тем самым уменьшив размер растрового файла. Я могу выполнить sh эту маскировку следующим образом (код Роберта из приведенного выше вопроса):
library(raster)
b <- brick(system.file("external/rlogo.grd", package="raster"))
set.seed(1)
pts <- sampleRandom(b, 10, sp=TRUE)
xx <- raster::mask(b, pts)
v <- extract(b, pts)
r <- rasterize(pts, b, v)
Хотя это решение работает, оно очень медленное при работе с большими rasterbricks
.
Мой вопрос: прав ли я, думая, что ячейка со значением NA
займет меньше места, чем альтернатива (в моем случае это число с плавающей запятой)? Если да, может ли кто-нибудь дать какие-либо дополнительные указания - не представленные в предыдущем вопросе - которые могли бы ускорить этот процесс для чрезвычайно больших rasterbricks
(глобальный размер, 3500+ слоев), учитывая более широкий контекст моих целей?
Я не привязан к R - если я смогу добиться существенного увеличения скорости, используя, например, GDAL в Python, мне было бы интересно услышать о решении.