Доступ к ячейкам данных
Для доступа к значениям ячеек (пикселей) растровых данных в пакете
Обратите внимание, что значения растра представлены в виде вектора (одномерного массива). Для доступа к значениям ячеек используется стандартная индексация R.
Можно сначала узнать номер ячейки по номеру строки и столбца, при помощи
Получим координаты выбранных ячеек
Получить значения ячеек можно по их номерам (
Координаты и значения всех ячеек растра в виде таблицы:
Функцию
При таком подходе, присвоение значений растра для очень больших файлов происходит очень медленно, поскольку каждый раз на диск записывается новый (временный) файл со всеми значениями. Для перезаписи значений в существующем файле используют функцию
#R
Для доступа к значениям ячеек (пикселей) растровых данных в пакете
terra
есть несколько функций. values()
используется, чтобы получить все значения растра или их часть. Например, значения одной строки или значения прямоугольного блока ячеек:r <- rast("dem.tif")
v <- values(r)
v[1000:1005, ]
# [1] 125.9172 126.2032 126.4972 126.7908 127.0973 127.3987
values(r, row=100, nrow=1, col=35, ncol=6)
# Layer_1
# [1,] 112.4701
# [2,] 112.5410
# [3,] 112.6132
# [4,] 112.6909
# [5,] 112.7424
# [6,] 112.7527
Обратите внимание, что значения растра представлены в виде вектора (одномерного массива). Для доступа к значениям ячеек используется стандартная индексация R.
Можно сначала узнать номер ячейки по номеру строки и столбца, при помощи
cellFromRowCol
, а затем получить значения выбранных ячеек:cells <- cellFromRowCol(r, 100, 35:40)
cells
# [1] 288719 288720 288721 288722 288723 288724
r[cells]
# Layer_1
# 1 112.4701
# 2 112.5410
# 3 112.6132
# 4 112.6909
# 5 112.7424
# 6 112.7527
Получим координаты выбранных ячеек
xy <- xyFromCell(r, cells)
# x y
# [1,] -77.84894 39.49693
# [2,] -77.84890 39.49693
# [3,] -77.84887 39.49693
# [4,] -77.84884 39.49693
# [5,] -77.84881 39.49693
# [6,] -77.84878 39.49693
Получить значения ячеек можно по их номерам (
cells
) или координатам (xy
), с помощью функции extract
:extract(r, cells)
extract(r, xy)
# Layer_1
# 1 112.4701
# 2 112.5410
# 3 112.6132
# 4 112.6909
# 5 112.7424
# 6 112.7527
Координаты и значения всех ячеек растра в виде таблицы:
dt <- as.data.frame(r, xy=TRUE)
Функцию
values
можно использовать для замены значений в объекте SpatRaster или для присвоения новых значений ячейкам. Если вы заменяете значение в объекте SpatRaster, созданном на основе файла, то связь с этим файлом теряется, поскольку теперь значения объекта отличаются от файлаr
# class : SpatRaster
# dimensions : 1620, 2916, 1 (nrow, ncol, nlyr)
# resolution : 3.08642e-05, 3.08642e-05 (x, y)
# extent : -77.85, -77.76, 39.45, 39.5 (xmin, xmax, ymin, ymax)
# coord. ref. : lon/lat WGS 84 (EPSG:4326)
# source : dem.tif
# name : Layer_1
# min value : 87.12177
# max value : 158.5774
values(r)[1000:1005, ] <- 0
r
# class : SpatRaster
# dimensions : 1620, 2916, 1 (nrow, ncol, nlyr)
# resolution : 3.08642e-05, 3.08642e-05 (x, y)
# extent : -77.85, -77.76, 39.45, 39.5 (xmin, xmax, ymin, ymax)
# coord. ref. : lon/lat WGS 84 (EPSG:4326)
# source(s) : memory
# name : Layer_1
# min value : 0.0000
# max value : 158.5774
При таком подходе, присвоение значений растра для очень больших файлов происходит очень медленно, поскольку каждый раз на диск записывается новый (временный) файл со всеми значениями. Для перезаписи значений в существующем файле используют функцию
update
. Будьте осторожны с ней, так как значения исходного файла изменяются окончательно.#R
Из полученного растра исчезнут единицы. Если задать порог численности равным 9, то исчезнут все скопления, кроме троек (и, естественно, нулей).
#R
*Гонсалес Р., Вудс Р. Цифровая обработка изображений. 3-е издание, исправленное и дополненное. — М.: Техносфера, 2012. — 1104 с.
#R
*Гонсалес Р., Вудс Р. Цифровая обработка изображений. 3-е издание, исправленное и дополненное. — М.: Техносфера, 2012. — 1104 с.