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

网友投稿 1035 2022-11-20

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

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

八、栅格数据

栅格数据是当前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 的所有方法都介绍完了,正常进行地图可视化,那是绝对够用了……当然如果有哪位同学要在上面玩一些黑科技(想做出一些特别的效果来),也欢迎和我交流。

上面所有的脚本和数据,我将在整理完成之后,放出-。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:R语言连接数据库中文问题
下一篇:同步直播(2):为什么要写这本书?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~