您的位置:首页 > 其它

R语言在线地图神器:Leaflet for R包(六,完结篇)栅格、颜色和图例设置

2018-03-03 16:56 645 查看
八、栅格数据 栅格数据是当前GIS领域里面最庞大的一类数据(天上N颗卫星24小时无死角的对地球君进行直播……每天生成遥感数据都以PB为单位),leaflet作为地图可视化模块,自然也提供了加载栅格数据的方法。 方法如下:addRasterImage(地图,参数) 要注意的一点是,栅格不像矢量数据,矢量本身就带有空间参考信息,而栅格有些是不带空间参考的,如果你不指定投影参数,那么leaflet会默认把加载的栅格投影成WGS84 Web Mercator (Auxiliary Sphere)(EPSG:3857),也就是谷歌地图用的那种空间参考。 下面通过两个示例来说明,首先是加载一个NC(netCDF)文件:注意,需要安装raster包和ncdf4包
library(raster)
r <- raster("data/Leaflet/YSUZ98_KWBN_201312130055-var0-z0-rt0-t0.nc")
pal <- colorNumeric(c("transparent",topo.colors(100,alpha = NULL)), values(r),
                    na.color = "transparent")
leaflet() %>% addTiles() %>%
  addRasterImage(r, colors = pal, opacity = 0.8) %>%
  addLegend(pal = pal, values = values(r),
            title = "USA Snow 2013-12-13")
  

 下面加载一个北京主干道的车流密度分析栅格:
r <- raster("E:/flow.tif")
pal <- colorNumeric(c("transparent",topo.colors(20,alpha = NULL)), values(r),
                    na.color = "transparent")
leaflet() %>% addTiles() %>%
  addRasterImage(r, colors = pal, opacity = 0.8) %>%
  addLegend(pal = pal, values = values(r),position="bottomleft",
            title = "北京交通主干道车流密度分析")
 

  九、颜色设置 空间可视化的最重要部分,就是把空间要素上的附件属性映射到颜色上,通过颜色的对比,来反应变量之间的关系,这些变量可以是数值,也可以是类别。 R语言号称顶级的可视化语言,所以对于颜色设置的方法多到你眼花缭乱,有兴趣的同学可以去参考R语言的相关教程。  leaflet里面的颜色设置一共有个参数,分布是color和fillcolor,从名称就可以看出来,一个是主颜色,一个是填充色,那么对应各种对象来说,color一般就是所谓的边框的颜色了。 在配合leaflet进行数值渲染的R语言调色函数里面,最常用的有以下几个:1、用于连续数值的:colorNumeric,colorBin和colorQuantile;2、用于分类输入,colorFactor。 下面分别简单解释一下:colorNumeric: 将连续数值线性映射为设定的颜色模式的过程,一般来说,会对设定的颜色模式根据数值的变化进行平滑插值。 colorBin:也是将连续数值线性映射为设定的颜色模式的过程,也会对数据进行平滑内插生成颜色,但是与上一种方法不同的是,这个方法会对设定的颜色模式根据数值的变化进行分级设定。 colorQuantile : 也是线性映射,但是设定的方式是通过百分位数进行分级。 colorFactor: 把分类映射到颜色模式,如果颜色模式设定的数量和分类数量不一样,那么就对颜色模式进行平滑内插。 当然,你也可以使用R语言提供的那些调色板,比如heat.colors、cm.colors、rainbow等等,相关内容请查阅资料。 对于颜色设置的,实际上每一篇博客的demo的时候,都做了颜色渲染,大家有兴趣的时候回头去看,下面给出本章的一个实例: 
poly <- readShapePoly(paste(path,"CNPG_S.shp",sep =""))
pal <- colorNumeric(c("darkgreen", "yellow", "orangered"),poly@data$Pop_2009)
leaflet(poly) %>% addTiles() %>%
  addPolygons(color=~pal(poly@data$Pop_2009),fillOpacity  = 0.8,weight=1)%>%
  addLegend(pal = pal, values = poly@data$Pop_2009,position="bottomright",
          title = "2009年人口数量(万人)")
 
pal <- colorNumeric("Greens",poly@data$Pop_2009)
leaflet(poly) %>% addTiles() %>%
  addPolygons(color=~pal(poly@data$Pop_2009),fillOpacity  = 0.8,weight=1)%>%
  addLegend(pal = pal, values = poly@data$Pop_2009,position="bottomright",
            title = "2009年人口数量(万人)")
 
pal <- colorBin(c("darkgreen", "yellow", "orangered"),poly@data$Pop_2009,10)
leaflet(poly) %>% addTiles() %>%
  addPolygons(color=~pal(poly@data$Pop_2009),fillOpacity  = 0.8,weight=1)%>%
  addLegend(pal = pal, values = poly@data$Pop_2009,position="bottomright",
            title = "2009年人口数量分级")
 
pal <- colorBin("Greens",poly@data$Pop_2009,10)
leaflet(poly) %>% addTiles() %>%
  addPolygons(color=~pal(poly@data$Pop_2009),fillOpacity  = 0.8,weight=1)%>%
  addLegend(pal = pal, values = poly@data$Pop_2009,position="bottomright",
            title = "2009年人口数量分级")
 

 十、图例: 图例是对地图可视化之后相关颜色或者符号的映射说明——当然,在leaflet里面,主要是针对颜色创建图例。 主要是方法如下: addLegend(地图,属性,颜色列表,标记值……) 具体的属性方法,大家可以查阅帮助文档,下面给出一个示例: 
pal <- colorNumeric("Greens",poly@data$Pop_2009)
leaflet(poly) %>% addTiles() %>%
  addPolygons(color=~pal(poly@data$Pop_2009),fillOpacity  = 0.8,weight=1)%>%
  addLegend(pal = pal, values = poly@data$Pop_2009,
            title = "2009年人口数量(万人)</br>默认,右上角")%>%
  addLegend(pal = pal, values = poly@data$Pop_2009,bins=5,position="bottomleft",
            title = "2009年人口数量(万人)</br>图例分级五级,左下角")%>%
  addLegend(pal = pal, values = poly@data$Pop_2009,position="topleft",
          labFormat = labelFormat(suffix = " 万"),
          title = "2009年人口数量(万人)</br>加单位,左上角")%>%
  addLegend(pal = pal, values = poly@data$Pop_2009,position="bottomright",
          opacity = 1,
          title = "2009年人口数量(万人)</br>色带条不透明,右下角")
 

 好了,到此为止,leafletfor R 的所有方法都介绍完了,正常进行地图可视化,那是绝对够用了……当然如果有哪位同学要在上面玩一些黑科技(想做出一些特别的效果来),也欢迎和我交流。 上面所有的脚本和数据,我将在整理完成之后,放出下载。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: