1 / 37

Создание мелкомасштабных растровых карт в R

Создание мелкомасштабных растровых карт в R. Никита Платонов platonov@sevin.ru Институт проблем экологии и эволюции им. А.Н.Северцова РАН (ИПЭЭ РАН) Программа изучения белого медведя в Российской Арктике. Причина (~200 7г. ). IDRISI + Visio + визуальная подгонка +. Цели.

archie
Download Presentation

Создание мелкомасштабных растровых карт в R

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Создание мелкомасштабных растровых карт в R Никита Платонов platonov@sevin.ru Институт проблем экологии и эволюции им. А.Н.Северцова РАН (ИПЭЭ РАН) Программа изучения белого медведя в Российской Арктике

  2. Причина (~2007г.) IDRISI + Visio + визуальная подгонка + ...

  3. Цели Автоматизация построения статических карт Задачи • Беглый взгляд на данные независимым вьювером • Комплексная компоновка (панель рисунков) • Подготовка иллюстраций для печати в научных журналах

  4. Реализация NCAR Command Language панель – да, слои – да, (x,y)-проекции – ???, кириллица – да?

  5. Реализация QGIS print composer Слои, аннотации, кириллица

  6. Реализация ГИСы Визуальная компоновка, оформление, HiRes экспорт,…

  7. Стандартные средства 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 00100 ... NULL > str(img.data.frame) 'data.frame': 67455 obs. of 3 variables: $ x: num -3837500 -3812500 -3787500 ... $ y: num 5837500 5837500 5837500 ... $ z: num 898989 NA ... NULL

  8. Стандартные средства R > mycol <- colorRampPalette(c("darkblue","white"))(11) > image(img,asp=1,col=mycol)

  9. Стандартные средства R > filled.contour(img,asp=1,levels=20)

  10. R: Package raster

  11. 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 187500 187500 187500 ... $ z: num 0 0 0 0 0 0 0 0 0 0 ... $ w: Factor w/ 2 levels "Mar","Sep": 1 1 1 1 1 1 1 ... NULL

  12. R: Package lattice levelplot(z~x+y|w,data=img ,panel = function(...){ panel.levelplot(...) panel.polygon(coast,col="grey65")} ,scales=list(draw=FALSE),xlab="",ylab="")

  13. R: Package ggplot2 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="#FFFF003F")+ geom_path(data=grid,colour="darkred")

  14. Формат экспортируемой карты # > pdf("out1.pdf", width=7, height=7, pointsize=16) > postscript(...) > png("out2.png", width=7, height=7, units=“in”, res=300,pointsize=16) > tiff(...) #

  15. План разметки # > 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 0 0 0 [2,] 0 0 0 0 0 0 0 [3,] 0 0 5 0 6 0 0 [4,] 0 0 0 0 0 0 0 [5,] 3 0 1 0 2 0 4 [6,] 0 0 0 0 0 0 0 [7,] 0 0 7 0 8 0 0 #

  16. Размеры элементов оформления # Создаем два вектора, отвечающих за размер > s.indent <- 0.0125 > s.legend <- 0.04 # s.imgc, s.imgr ~ число строк, столбцовизображения > sizec <- rep(s.indent,2*nc+3) > sizer <- rep(s.indent,2*nr+3) > sizec[3] <- s.imgc > sizer[5] <- s.imgr > sizec[7] <- s.legend … > png_width <- round(sum(sizec)*dpi/2.54+extrac) > png_height <- round(sum(sizer)*dpi/2.54+extrar) #

  17. Размеры элементов оформления # Формируем расположение > nf <- layout(mosaic,widths=lcm(sizec), heights=lcm(sizer),respect=TRUE)

  18. План разметки # Выбор палитры, задание числа цветов >require(RColorBrewer)

  19. Оформление легенды Выбор палитры • Цветовой градиент (?colorRamp) • Фиксированное число панелей Задание типа экстремумов для отображения • Минимальное, максимальное значение • Кумулятивные хвосты (%) • Фиксированный разброс от среднего • Вручную Отображение легенды

  20. Оформление легенды Подписи легенды • Буквенные (категории) • Численные (не нужны безобразные дроби)> pretty(x,n=nbar)# Цикл по параметрам с критерием выбора> scale*pretty(x/scale,n=nbar)# Акцентировать ли внимание на НОЛЬ? Соответствие значений легенды и изображения • Решкалирование изображения к категориям легенды – [minx,maxx) или (minx,maxx] • Ремасштабирование изображения под пространственное разрешение карты

  21. Вывод растра > par(mar=c(0,0,0,0)) > image(x,...)

  22. Вывод координатной сетки > lines(grid,col=“grey45”,lty=2)

  23. Вывод береговой линии > polygon(coast,col=“transparent”) > ?lines

  24. Маскирование суши > polygon(coast) > ?polypath # дырки, но без полутонов/штрих.

  25. Использование градаций серого > polygon(coast,density=15,angle=c(-45,45))

  26. Добавление аннотации > rect(minx,miny,maxx,maxy,col=ann.bg) > text(x0,y0,displayed.text)

  27. Вертикальная легенда > image(x=1,y=bar,z=matrix(bar,nrow=1)) > abline(h=hset,v=NULL); box()

  28. Подписи легенды > mtext(nums,side=4,line=sh.label,...) > mtext(desc,side=4,line=sh.desc,...)

  29. Добавление контура > cl <- contourLines(...,level=15) > sapply(cl,function(x) lines(x))

  30. Растр + контур с легендами >image(imgAir); lines(isoHgt,...) > image(legendAir); image(legendHgt)

  31. Растр + контур + указатели >image(img1); lines(isoheight,...) >arrows(wnd,...)

  32. Наложение полигонов >image(slpImg) >polygon(signif95,density=15,angle=45)

  33. Примеры использования Многопанельные карты

  34. Примеры использования Наслоение кириллицы с помощью ImageMagick

  35. Примеры использования Очистка пустого пространства – внешний софт

  36. Выводы Отображение растра, цветовой легенды – image() Отображение линий – lines(), segments(), contour() Отображение точек – points() Отображение полигонов – polygon(), polypath() Отображение аннотаций – text(), legend() - cлабая поддержка кириллицы - подписи contour()не всегда результативны - неэффективно при множественных подписях TODO-список: Масштабная линейка Указатель на север

  37. Спасибо Никита Платонов (ИПЭЭ РАН) platonov@sevin.ru

More Related