react 前端框架如何驱动企业数字化转型与创新发展
1101
2022-11-20
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~