热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何进行leaflet在线地图的解析

如何进行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 <- read.csv("c:/rstudy/chinaprovincecity.csv") 

province_city$size<-round(runif(34,5,10),2)

province_city$type<-factor(sample(LETTERS[1:5],34,replace=TRUE))

co<-substr(rainbow(34),1,7)

province_city<-data.frame(province_city,co)

leaflet函数的基本语法结构如下:

#该句加载地图数据,也可以说是对地图的初始化操作,相当于ggplot2作图系统中的ggplot()函数,会建立一个没有内容的空白图层面板。

m<-leaflet(data=province_city)    

#该句设定所要展示的图层中心位置,参数为带有数据的地图图层、经纬度信息以及呈现的缩放级别(3~9级不等)。

setView(m,lng=116.38,lat=39.9,zoom=3)

#该句会自动调用一个默认的地图图层作为页面底图。其实是一个图层函数,相当于ggplot系统的geom_XXX对象。

m<-addTiles(m)

#该句也是一个图层对象函数,主要呈现点对象信息,点标识为常见的雨滴形状,当然也可以进行自定义。

addMarkers(m,lng=~jd,lat=~wd,popup=~city) #地标符号

如何进行leaflet在线地图的解析

以上四局代码会制作出一个以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) 

如何进行leaflet在线地图的解析

leaflet函数支持的点有三类(我所知的),默认的是雨滴形状(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在线地图的解析

leaflet()%>%addProviderTiles("Esri.WorldStreetMap")

如何进行leaflet在线地图的解析

leaflet()%>%addProviderTiles("Esri.WorldImagery")

如何进行leaflet在线地图的解析

leaflet()%>%addProviderTiles("Esri.WorldTerrain")

如何进行leaflet在线地图的解析

leaflet()%>%addProviderTiles("Esri.NatGeoWorldMap")

如何进行leaflet在线地图的解析

leaflet()%>%addProviderTiles("Stamen.Toner")

如何进行leaflet在线地图的解析

leaflet()%>%addProviderTiles("CartoDB.Positron")

如何进行leaflet在线地图的解析

leaflet()%>%addProviderTiles("Stamen.TonerLabels")

如何进行leaflet在线地图的解析

关于如何进行leaflet在线地图的解析问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程笔记行业资讯频道了解更多相关知识。


推荐阅读
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • Summarize function is doing alignment without timezone ?
    Hi.Imtryingtogetsummarizefrom00:00otfirstdayofthismonthametric, ... [详细]
  • 提升Python编程效率的十点建议
    本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ... [详细]
  • 本文比较了eBPF和WebAssembly作为云原生VM的特点和应用领域。eBPF作为运行在Linux内核中的轻量级代码执行沙箱,适用于网络或安全相关的任务;而WebAssembly作为图灵完备的语言,在商业应用中具有优势。同时,介绍了WebAssembly在Linux内核中运行的尝试以及基于LLVM的云原生WebAssembly编译器WasmEdge Runtime的案例,展示了WebAssembly作为原生应用程序的潜力。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • 本文讨论了Kotlin中扩展函数的一些惯用用法以及其合理性。作者认为在某些情况下,定义扩展函数没有意义,但官方的编码约定支持这种方式。文章还介绍了在类之外定义扩展函数的具体用法,并讨论了避免使用扩展函数的边缘情况。作者提出了对于扩展函数的合理性的质疑,并给出了自己的反驳。最后,文章强调了在编写Kotlin代码时可以自由地使用扩展函数的重要性。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • 正则表达式及其范例
    为什么80%的码农都做不了架构师?一、前言部分控制台输入的字符串,编译成java字符串之后才送进内存,比如控制台打\, ... [详细]
  • Allegro总结:1.防焊层(SolderMask):又称绿油层,PCB非布线层,用于制成丝网印板,将不需要焊接的地方涂上防焊剂.在防焊层上预留的焊盘大小要比实际的焊盘大一些,其差值一般 ... [详细]
author-avatar
主持人谷佳霓期_426
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有