Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: Easymode44Ответов: 2

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

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

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

[1] 20 10

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

rr-raster

Ответы

Ответ 1 · рейтинг 1 · Guillaume Devailly

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

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

Ответ 2 · рейтинг 2 · Robert Hijmans

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

Создайте растр с 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 *, теряются; потому что количество строк или столбцов должно измениться. Если вы измените его косвенно, изменив размер, значения останутся.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы