«Выбросить» ненужные данные в растре, сохранить экстент / начало / разрешение - PullRequest
0 голосов
/ 05 мая 2020

На прошлой неделе я задал вопрос о самом быстром способе замаскировать чрезвычайно большой 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, мне было бы интересно услышать о решении.

...