Как получить растровое изображение RGB с координатами UTM

У меня есть трехслойный растр со значениями красного, зеленого и синего каналов. Я могу построить изображение с помощью raster::plotRGB, но мне нужно добавить оси с координатами UTM. Координаты можно добавить с помощью axes=TRUE, но они плавают в пространстве и выглядят плохо. Я хотел бы получить координаты в том виде, в котором они отображаются на графиках, созданных с помощью метода raster plot, или, что еще лучше, в том виде, в котором они отображаются при использовании rasterVis::levelplot.

В конечном итоге мне нужно создать растровое изображение с координатами UTM, масштабной линейкой и стрелкой севера. Это необходимо сделать с помощью функции plotRGB в пакете raster R или чего-то подобного, так как мне нужно назначить цвет каждого пикселя вручную (без цветовых рамок).


person klar    schedule 18.04.2013    source источник
comment
Приведите небольшой пример с воспроизводимыми данными, показывающий, что у вас есть на данный момент и что вам в этом не нравится?   -  person Josh O'Brien    schedule 19.04.2013
comment
Не могли бы вы предоставить нам более подробную информацию о происхождении ваших данных и формате файла?   -  person Paulo E. Cardoso    schedule 20.04.2013
comment
@klar, этот пост может быть вам полезным.   -  person Paulo E. Cardoso    schedule 27.02.2014
comment


Ответы (1)


Это старый пост, но это хороший вопрос, поэтому я дам ему ответ.

Я приведу пример того, как это можно сделать с rasterVis::levelplot, используя 3-канальные растровые данные логотипа R, которые поставляются с raster.

library(rasterVis)
b <- brick(system.file("external/rlogo.grd", package="raster"))

Построение трехканальных RGB-растров с помощью levelplot

Создайте пустой raster с такими же размерами и протяженностью, что и кирпич.

r <- raster(b)

Вычислите шестнадцатеричные цвета, соответствующие значениям каналов RGB, и приведите к factor.

cols <- factor(rgb(b[], maxColorValue=255))

Назначьте эти значения коэффициентов ячейкам растра.

r[] <- cols

Постройте график с levelplot, извлекая шестнадцатеричные цвета из уровней cols и передавая их в col.regions.

levelplot(r, col.regions=as.character(levels(cols)), colorkey=FALSE)

введите описание изображения здесь

Добавление стрелки севера и масштабной линейки

Что касается стрелки севера и масштабной линейки, мы будем искать в документации @OscarPerpiñán .

levelplot(r, col.regions=as.character(levels(cols)), colorkey=FALSE) +
  layer(SpatialPolygonsRescale(layout.north.arrow(), offset = c(5, 10), scale = 10)) +
  layer({
    xs <- seq(5, 25, by=5)
    grid.rect(x=xs, y=5,
              width=5, height=2,
              gp=gpar(fill=rep(c('transparent', 'black'), 2)),
              default.units='native')
    grid.text(x=xs-2.5, y=8, seq(0, 400, by=100),
              gp=gpar(cex=0.7),
              default.units='native')
  })

Я оставлю вам вычислить истинное расстояние (переданное в grid.text), связанное с шириной прямоугольников в единицах карты.

введите описание изображения здесь

person jbaums    schedule 06.01.2016