5f1bc1b1e40a09eafbbcde4ddd91df7d.ppt
- Количество слайдов: 37
Создание мелкомасштабных растровых карт в R Никита Платонов platonov@sevin. ru Институт проблем экологии и эволюции им. А. Н. Северцова РАН (ИПЭЭ РАН) Программа изучения белого медведя в Российской Арктике
Причина (~2007 г. ) IDRISI + Visio + визуальная подгонка +. . .
Цели Автоматизация построения статических карт Задачи ► Беглый взгляд на данные независимым вьювером ► Комплексная компоновка (панель рисунков) ► Подготовка иллюстраций для печати в научных журналах
Реализация NCAR Command Language панель – да, слои – да, (x, y)-проекции – ? ? ? , кириллица – да?
Реализация QGIS print composer Слои, аннотации, кириллица
ГИСы Реализация Визуальная компоновка, оформление, Hi. Res экспорт, …
Стандартные средства R # Здесь и далее код не воспроизводимый > str(img. list) List of 3 $ x: num [1: 304] -3837500 -3812500. . . $ y: num [1: 448] -5337500 -5312500. . . $ z: num [1: 304, 1: 448] NA 0 0 100. . . NULL > str(img. data. frame) 'data. frame': 67455 obs. of 3 variables: $ x: num -3837500 -3812500 -3787500. . . $ y: num 5837500. . . $ z: num 89 89 89 NA. . . NULL
Стандартные средства R > mycol <- color. Ramp. Palette(c("darkblue", "white"))(11) > image(img, asp=1, col=mycol)
Стандартные средства R > filled. contour(img, asp=1, levels=20)
R: Package raster
R: Package lattice > str(coast) num [1: 99607, 1: 2] NA -1429373 -1431447 -1433519. . . NULL > str(img) 'data. frame': 63082 obs. of 4 variables: $ x: num -187500 -162500 -137500 -112500 -087500. . . $ y: num 187500 187500. . . $ z: num 0 0 0 0 0. . . $ w: Factor w/ 2 levels "Mar", "Sep": 1 1 1 1. . . NULL
R: Package lattice levelplot(z~x+y|w, data=img , panel = function(. . . ){ panel. levelplot(. . . ) panel. polygon(coast, col="grey 65")} , scales=list(draw=FALSE), xlab="", ylab="")
R: Package ggplot 2 ggplot(img, aes(x, y, fill=z))+ geom_raster()+scale_fill_continuous(name="Ice Conc")+ coord_cartesian(xlim=xlim, ylim=ylim)+facet_grid(. ~w)+ geom_polygon(data=coast, colour="green", fill="#FFFF 003 F")+ geom_path(data=grid, colour="darkred")
Формат экспортируемой карты # > pdf("out 1. pdf", width=7, height=7, pointsize=16) > postscript(. . . ) > png("out 2. png", width=7, height=7, units=“in”, res=300, pointsize=16) > tiff(. . . ) #
# > > > … > План разметки nc <- 2 # horisontal panels nr <- 1 # vertical panels mosaic <- matrix(0, ncol=nc*2+3, nrow=nr*2+3) mosaic[5, 3] <- 1 mosaic[5, 5] <- 2 mosaic [, 1] [, 2] [, 3] [, 4] [, 5] [, 6] [, 7] [1, ] 0 0 0 0 [2, ] 0 0 0 0 [3, ] 0 0 5 0 6 0 0 [4, ] 0 0 0 0 [5, ] 3 0 1 0 2 0 4 [6, ] 0 0 0 0 [7, ] 0 0 7 0 8 0 0 #
Размеры элементов оформления # Создаем два вектора, отвечающих за размер > > # s. indent <- 0. 0125 s. legend <- 0. 04 s. imgc, s. imgr ~ число строк, столбцов изображения > > > sizec <sizer <sizec[3] sizer[5] sizec[7] … rep(s. indent, 2*nc+3) rep(s. indent, 2*nr+3) <- s. imgc <- s. imgr <- s. legend > png_width <- round(sum(sizec)*dpi/2. 54+extrac) > png_height <- round(sum(sizer)*dpi/2. 54+extrar) #
Размеры элементов оформления # Формируем расположение > nf <- layout(mosaic, widths=lcm(sizec), heights=lcm(sizer), respect=TRUE)
План разметки # Выбор палитры, задание числа цветов > require(RColor. Brewer)
Оформление легенды Выбор палитры Цветовой градиент (? color. Ramp) ► Фиксированное число панелей ► Задание типа экстремумов для отображения ► ► Минимальное, максимальное значение Кумулятивные хвосты (%) Фиксированный разброс от среднего Вручную Отображение легенды
Оформление легенды Подписи легенды ► Буквенные (категории) ► Численные (не нужны безобразные дроби) > pretty(x, n=nbar) # Цикл по параметрам с критерием выбора > scale*pretty(x/scale, n=nbar) # Акцентировать ли внимание на НОЛЬ? Соответствие значений легенды и изображения ► Решкалирование изображения к категориям легенды – [minx, maxx) или (minx, maxx] ► Ремасштабирование изображения под пространственное разрешение карты
Вывод растра > par(mar=c(0, 0, 0, 0)) > image(x, . . . )
Вывод координатной сетки > lines(grid, col=“grey 45”, lty=2)
Вывод береговой линии > polygon(coast, col=“transparent”) > ? lines
Маскирование суши > polygon(coast) > ? polypath # дырки, но без полутонов/штрих.
Использование градаций серого > polygon(coast, density=15, angle=c(-45, 45))
Добавление аннотации > rect(minx, miny, maxx, maxy, col=ann. bg) > text(x 0, y 0, displayed. text)
Вертикальная легенда > image(x=1, y=bar, z=matrix(bar, nrow=1)) > abline(h=hset, v=NULL); box()
Подписи легенды > mtext(nums, side=4, line=sh. label, . . . ) > mtext(desc, side=4, line=sh. desc, . . . )
Добавление контура > cl <- contour. Lines(. . . , level=15) > sapply(cl, function(x) lines(x))
Растр + контур с легендами > image(img. Air); lines(iso. Hgt, . . . ) > image(legend. Air); image(legend. Hgt)
Растр + контур + указатели > image(img 1); lines(isoheight, . . . ) > arrows(wnd, . . . )
Наложение полигонов > image(slp. Img) > polygon(signif 95, density=15, angle=45)
Примеры использования Многопанельные карты
Примеры использования Наслоение кириллицы с помощью Image. Magick
Примеры использования Очистка пустого пространства – внешний софт
Выводы Отображение растра, цветовой легенды – image() Отображение линий – lines(), segments(), contour() Отображение точек – points() Отображение полигонов – polygon(), polypath() Отображение аннотаций – text(), legend() - cлабая поддержка кириллицы - подписи contour() не всегда результативны - неэффективно при множественных подписях TODO-список: Масштабная линейка Указатель на север
Спасибо Никита Платонов (ИПЭЭ РАН) platonov@sevin. ru
5f1bc1b1e40a09eafbbcde4ddd91df7d.ppt