Как R назначает разрешение растровым объектам?

Предположим, выполняется следующий код R

install.packages("raster")
library(raster)
r <- raster(ncol=18, nrow=18)
res(r)

Результатом функции res является

[1] 20 10

Как определяются эти ценности? Как их вычисляет функция raster? В каких единицах они выражены?


person Easymode44    schedule 26.09.2019    source источник


Ответы (2)


Насколько я понимаю из виньетки

Настройки по умолчанию создают глобальную структуру растровых данных с системой координат долготы / широты и ячейками 1 на 1 градус.

r
# class       : RasterLayer 
# dimensions  : 18, 18, 324  (nrow, ncol, ncell)
# resolution  : 20, 10  (x, y)
# extent      : -180, 180, -90, 90  (xmin, xmax, ymin, ymax)
# coord. ref. : +proj=longlat +datum=WGS84 

r x по умолчанию составляет от -180 до +180 градусов (всего 360 градусов), а 360 градусов / 18 точек = разрешение x, равное 20 градусам.

r y по умолчанию составляет от -90 до +90 градусов, а 180 градусов / 18 точек дают разрешение y, равное 10 градусам.

person Guillaume Devailly    schedule 26.09.2019
comment
Следует почаще проверять эти виньетки. Большое спасибо за ответ, Гийом. - person Easymode44; 27.09.2019

Как указал Гийом Девайли, разрешение по горизонтали - это размер по горизонтали, деленный на количество столбцов. Вертикальное разрешение - это вертикальный размер, деленный на количество строк. Единицы - это единицы вашей системы координат. По умолчанию это градусы (для долготы / широты). Чтобы добавить больше к ответу Гийома:

Создайте растр с 10 строками и столбцами от 0 до 10. Разрешение равно 1.

library(raster)
r <- raster(ncol=10, nrow=10, xmn=0, xmx=10, ymn=0, ymx=10)
r
#class      : RasterLayer 
#dimensions : 10, 10, 100  (nrow, ncol, ncell)
#resolution : 1, 1  (x, y)
#extent     : 0, 10, 0, 10  (xmin, xmax, ymin, ymax)
#crs        : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 

Измените разрешение на 0,5; количество строк и столбцов удваивается

res(r) <- 0.5
r
#class      : RasterLayer 
#dimensions : 20, 20, 400  (nrow, ncol, ncell)
#resolution : 0.5, 0.5  (x, y)
#extent     : 0, 10, 0, 10  (xmin, xmax, ymin, ymax)
#crs        : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 

Вы можете косвенно изменить разрешение, отрегулировав размер

extent(r) <- c(0,5,0,5)
r
#class      : RasterLayer 
#dimensions : 20, 20, 400  (nrow, ncol, ncell)
#resolution : 0.25, 0.25  (x, y)
#extent     : 0, 5, 0, 5  (xmin, xmax, ymin, ymax)
#crs        : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0

Разрешение x и y можно установить на другое значение.

res(r) <- c(1, 0.5)

При изменении разрешения напрямую через res любые значения ячеек, связанные с объектом Raster *, теряются; потому что количество строк или столбцов должно измениться. Если вы измените его косвенно, изменив размер, значения останутся.

person Robert Hijmans    schedule 27.09.2019
comment
Спасибо, что написано поспешно ---- Текст редактировал - person Robert Hijmans; 27.09.2019
comment
большое спасибо. И еще большее спасибо за саму посылку! - person Easymode44; 03.10.2019