leaflet地图原理_leaflet在线地图简介
最近稍微涉猎了一下leaflet这个包,突然感到发现了动态可视化的新大门,这个包所提供的地图类型、动态效果、图层展示方式都大大扩展了ggplot作图系统的在数据地图上的缺陷。
leaflet是业界比较流行的JS开源交互式地图包,它支持直接调用OpenStreetMap, Mapbox, and CartoDB等主流地图数据作为辅助图层来进行地理信息数据的可视化操作。
除了这些在线地图素材之外,它对于shapefile格式和json格式以及sp包的空间数据格式的地图数据都有着很好的支持,在图层函数中涵盖了点标记、线条和多边形等常用地理信息可视化图形要素。
该包的代码对R语言的文档输出系统有着良好的支持,可以很方便的嵌入knitr/rmarkdown文档中,也能无缝嵌入shiny系统的webapp中,兼容性可称之为逆天。
接下来以中国地图为例,先对该地图所能呈现和调用的地图类型做一个简短的介绍,深入应用系列技巧可能要等到年后才能陆续更新,大小耐心等吧!
library(plyr)
library(mapdata)
library(leaflet)
library(maptools)
library(ggplot2)
导入中国各省会城市地理信息数据:
province_city
province_city$size
province_city$type
co
province_city
leaflet函数的基本语法结构如下:
#该句加载地图数据,也可以说是对地图的初始化操作,相当于ggplot2作图系统中的ggplot()函数,会建立一个没有内容的空白图层面板。
m
#该句设定所要展示的图层中心位置,参数为带有数据的地图图层、经纬度信息以及呈现的缩放级别(3~9级不等)。
setView(m,lng=116.38,lat=39.9,zoom=3)
#该句会自动调用一个默认的地图图层作为页面底图。其实是一个图层函数,相当于ggplot系统的geom_XXX对象。
m
#该句也是一个图层对象函数,主要呈现点对象信息,点标识为常见的雨滴形状,当然也可以进行自定义。
addMarkers(m,lng=~jd,lat=~wd,popup=~city) #地标符号
以上四局代码会制作出一个以province_city为数据源、以(116.38,39.9)为视觉中心,缩放级别为3级,点标识对象为city的中国行政地图出来。
而且图表原生支持动态操作,你可以使用鼠标滚轮进行放大缩小操作(也可以使用页面左上角的加减号进行操作),每一个点标识都是支持鼠标点击显示弹窗信息的。(弹窗信息中支持定义文本、图片、视频、超链接,当然这些需要对html语言有一定的操作经验)。
该函数的另一大特色是,原生支持管道函数操作,让你的代码简洁、易懂、高效。(很多R函数是需要打开dplyr包并借助其完成对于管道函数的支持)。
以上例子我们可以完全使用管道操作函数进行代码简化。
leaflet(province_city)%>%addTiles()%>%setView(lng=116.38,lat=39.9,zoom=3)%>%addMarkers(lng=~jd,lat=~wd,popup=~city)
eaflet函数支持的点有三类(我所知的),默认的是雨滴形状(addMarkers),还有两种分别是addCircle、addCircleMarkers。
addCircle是实心点,只有一个颜色属性,addCircleMarkers是带轮廓的圆点,可以分别对轮廓和内园进行颜色设定,两者都支持大小(面积)映射。
当然剩余两种最为常见的地图图层属性就是线和面了,这是物理空间的重要三要素嘛
线图层:
addPolylines
面图层:addPolygons
其实这些对象和ggplot中的图层对象对应的很完整,geom_point()\geom_line\geom_polygon
除此之外,无外乎颜色映射参数、图例参数等。
颜色映射对于数据地图而言是最复杂也最为重要的视觉对象,毕竟你的目光中要有很大一部分数据墨水比是由色彩来呈现的,但是小魔方再在前讲解ggplot数据地图系列的时候已经讲解过非常详细的颜色映射规则。
针对数据地图而言,颜色映射要依据数据类型而定,数值型变量(包含定距变量、定比变量)需要使用连续渐变色进行映射,因子变量(包含分类及有序)需要使用分类色、或者同色系的离散渐变进行颜色映射。
在leaflet函数中对颜色进行了非常精准和高效的分类。
1、用于连续数值的:colorNumeric,colorBin和colorQuantile;
2、用于分类输入,colorFactor。
colorNumeric:针对数值变量进行均匀插值,将颜色(定义的)连续均匀分布在数值区间内。
colorBin:针对数值型变量进行数量段的分组,然后按照组别分别填色。(其实相当于对数值型变量进行划组,生成有序的因子组,然后以分段因子变量的形式进行颜色映射,但是这个过程在leaflet函数中是自动化完成的,无需我们手工生成新变量,这一点儿是leaflet函数相对于ggplot函数在制作数据地图方面的重要优势)。
colorQuantile:也是针对数值型变量,只是是以百分比分位点的形式将数值变量划分为一组百分比分位点区间(其实理念和过程与colorBin一致,只是从绝对量分组变成了百分比分组),然后进行颜色映射。
colorFactor:这个就是单纯的分类变量(因子或者有序)映射的颜色设置方式。
图例对象:
addLegend:是添加图例的图层对象,相当于ggplot中的guilde函数。
接来下给大家大致展现以下leaflet所能呈现的最为常见的几种风格地图样式。
地图类型:
addProviderTiles("Esri.WorldStreetMap") #浅色
addProviderTiles("Esri.WorldImagery") #深色深色卫星云图
addProviderTiles("Esri.WorldTerrain") #亮白色
addProviderTiles("Esri.NatGeoWorldMap") #深沉轮廓色
addProviderTiles("Stamen.Toner") #Third-Party Tiles
addProviderTiles("CartoDB.Positron")
addProviderTiles("Stamen.TonerLabels") #
leaflet()%>%addTiles() #默认风格
leaflet()%>%addProviderTiles("Esri.WorldStreetMap")
leaflet()%>%addProviderTiles("Esri.WorldImagery")
leaflet()%>%addProviderTiles("Esri.WorldTerrain")
leaflet()%>%addProviderTiles("Esri.NatGeoWorldMap")
leaflet()%>%addProviderTiles("Stamen.Toner")
leaflet()%>%addProviderTiles("CartoDB.Positron")
leaflet()%>%addProviderTiles("Stamen.TonerLabels")
这四篇关于leaflet的内容在加上之前的leaflet进阶宝典那篇,是一个完整的leaflet在线地图系列,更高阶的东西涉及到leaflet的HTML特性,shiny仪表盘的整合等,以后有机会继续连载!
联系方式:
wechat:ljty1991
Mail:578708965@qq.com
个人公众号:数据小魔方(datamofang)
团队公众号:EasyCharts
qq交流群:[魔方学院]553270834
leaflet地图原理_leaflet在线地图简介相关推荐
- leafletjs 热力图_leaflet在线地图——常用热力地图
这一篇是leaflet动态地图的第四篇,也是最值得推荐的一篇,这一篇涉及到热力地图填充,通过该篇内容,大家可以体会大leaflet在线地图的R借口在处理热力地图上面颜色标度映射的强大优势. 加载包: ...
- ArcGIS中添加谷歌地图、天地图、高德地图、Bing...在线地图(附插件下载)
很久之前我们推荐过好两款ArcGIS在线地图插件,这个链接:我把谷歌地图.高德地图.天地图.Bing-都装进了ArcGIS 不知道什么情况最近多了不少留言: 看到留言后我们立马重新安装查看. 当时推荐 ...
- leaflet地图原理_Leaflet地图库
leaflet是一个移动端友好的交互性地图的js开源库. 参考Leaflet_创建地图 leaflet的设计原则是简单,可执行,可用,有相当多的插件,有文档,开源. 举例: 首先,预备工作. 加载cs ...
- leaflet地图原理_leaflet绘制区域(仿高德地图效果)
效果: 脚本: var map = L.map('map', { center: [25.1026993454,102.9312515259], // 地图中心点(昆明) zoom: 16, // 地 ...
- leaflet-webpack 入门开发系列二加载不同在线地图切换显示(附源码下载)
前言 leaflet-webpack 入门开发系列环境知识点了解: node 安装包下载 webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 ...
- 百度离线瓦片地图原理解析(附C#源码,可下载带样式地图)
前言 网络上有许多百度离线地图下载软件,但基本上都只能下载默认地图样式或地图自带的样式,本程序通过研究百度在线地图的加载规则与算法,整理出能够下载用户自定义样式的百度离线地图,欢迎大家前来交流学习. ...
- leaflet地图原理_基于 leaflet 的标注绘图
标注功能的背景 现在我们需要做一个标注工具,在一个视频上面绘制选框,把某个区域标记下来,接下来,把我们选框的内容坐标数据存储下来,这样作为一个分析的数据源,结合视频文件去分析选框区域内的内容情况. 结 ...
- osgEarth的Rex引擎原理分析(七十九)如何加载百度、高德、谷歌、微软的在线地图
目标:(七十八)中的问题155 瓦片生成后,就是一堆图片.怎么对这堆图片进行编号,是目前主流互联网地图商分歧最大的地方.总结起来分为四个流派: 谷歌XYZ:Z表示缩放层级,Z=zoom:XY的原点在左 ...
- axtoolbarcontrol加载图层后还是灰的_OpenLayers教程九:多源数据加载之瓦片地图原理一...
一.瓦片地图简介 瓦片地图(也叫切片地图)源于一种大地图解决方案,就是在多个比例尺下配置地图,然后提前把每个比例尺下的地图绘制为小块图片(瓦片),保存在服务器上用于缓存的目录中.这样客户端在访问地图时 ...
- 基于HTML5的在线地图 - 加载TopoJSON数据
为什么80%的码农都做不了架构师?>>> Qunee for HTML5有许多地图的示例,包括地铁图,基于SVG数据的地图,结合leaflet的地图等,每个示例都是单独的实现, ...
最新文章
- 如何看待「TensorFlow就是一颗定时炸弹」的说法?
- ASC0106硬件连接注意事项
- VTK:Video之MPEG2
- 电脑技巧:Win10无线投屏功能介绍
- c语言 字符串 url,如何对URL字符串进行百分号编码
- C++学习之路 | PTA乙级—— 1038 统计同成绩学生 (20 分)(精简)
- 大数据数据收集数据困难_大数据就是好数据吗?研究人员在处理大数据集时遭遇的 5 大挑战...
- ISA2006系列之三 详解防火墙的三种客户端(上)
- minio 搭建blob
- 主从reactor模式
- Spring里用到了哪些设计模式
- w ndows 10画图,如何在Windows 10中打开和使用画图
- 解决安装tensorflow-gpu:ImportError: DLL load failed:找不到指定的模块。从根源解决问题
- 【OSX】MAC下能用的炒股软件_我是亲民_新浪博客
- html把字母a显示为其asc码,HTML ASCII码
- 鸿蒙之九大分身,正文 第两千五百四十一章 原来这就是鸿蒙之力(五更求花花)...
- repo代码减少git数据库下载
- 《一个出身寒门的高考状元之死》
- 动脑学院 java_动脑学院Rxjava预习资料 Rxjava入门
- python 去除字符串内的中文字符