溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何進(jìn)行l(wèi)eaflet在線地圖的解析

發(fā)布時(shí)間:2021-11-22 17:56:57 來(lái)源:億速云 閱讀:292 作者:柒染 欄目:大數(shù)據(jù)

如何進(jìn)行l(wèi)eaflet在線地圖的解析,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

最近稍微涉獵了一下leaflet這個(gè)包,突然感到發(fā)現(xiàn)了動(dòng)態(tài)可視化的新大門,這個(gè)包所提供的地圖類型、動(dòng)態(tài)效果、圖層展示方式都大大擴(kuò)展了ggplot作圖系統(tǒng)的在數(shù)據(jù)地圖上的缺陷。

leaflet是業(yè)界比較流行的JS開(kāi)源交互式地圖包,它支持直接調(diào)用OpenStreetMap, Mapbox, and CartoDB等主流地圖數(shù)據(jù)作為輔助圖層來(lái)進(jìn)行地理信息數(shù)據(jù)的可視化操作。

除了這些在線地圖素材之外,它對(duì)于shapefile格式和json格式以及sp包的空間數(shù)據(jù)格式的地圖數(shù)據(jù)都有著很好的支持,在圖層函數(shù)中涵蓋了點(diǎn)標(biāo)記、線條和多邊形等常用地理信息可視化圖形要素。

該包的代碼對(duì)R語(yǔ)言的文檔輸出系統(tǒng)有著良好的支持,可以很方便的嵌入knitr/rmarkdown文檔中,也能無(wú)縫嵌入shiny系統(tǒng)的webapp中,兼容性可稱之為逆天。

接下來(lái)以中國(guó)地圖為例,先對(duì)該地圖所能呈現(xiàn)和調(diào)用的地圖類型做一個(gè)簡(jiǎn)短的介紹,深入應(yīng)用系列技巧可能要等到年后才能陸續(xù)更新,大小耐心等吧!

library(plyr)

library(mapdata)

library(leaflet)

library(maptools)

library(ggplot2)

導(dǎo)入中國(guó)各省會(huì)城市地理信息數(shù)據(jù):

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函數(shù)的基本語(yǔ)法結(jié)構(gòu)如下:

#該句加載地圖數(shù)據(jù),也可以說(shuō)是對(duì)地圖的初始化操作,相當(dāng)于ggplot2作圖系統(tǒng)中的ggplot()函數(shù),會(huì)建立一個(gè)沒(méi)有內(nèi)容的空白圖層面板。

m<-leaflet(data=province_city)    

#該句設(shè)定所要展示的圖層中心位置,參數(shù)為帶有數(shù)據(jù)的地圖圖層、經(jīng)緯度信息以及呈現(xiàn)的縮放級(jí)別(3~9級(jí)不等)。

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

#該句會(huì)自動(dòng)調(diào)用一個(gè)默認(rèn)的地圖圖層作為頁(yè)面底圖。其實(shí)是一個(gè)圖層函數(shù),相當(dāng)于ggplot系統(tǒng)的geom_XXX對(duì)象。

m<-addTiles(m)

#該句也是一個(gè)圖層對(duì)象函數(shù),主要呈現(xiàn)點(diǎn)對(duì)象信息,點(diǎn)標(biāo)識(shí)為常見(jiàn)的雨滴形狀,當(dāng)然也可以進(jìn)行自定義。

addMarkers(m,lng=~jd,lat=~wd,popup=~city) #地標(biāo)符號(hào)

如何進(jìn)行l(wèi)eaflet在線地圖的解析

以上四局代碼會(huì)制作出一個(gè)以province_city為數(shù)據(jù)源、以(116.38,39.9)為視覺(jué)中心,縮放級(jí)別為3級(jí),點(diǎn)標(biāo)識(shí)對(duì)象為city的中國(guó)行政地圖出來(lái)。

而且圖表原生支持動(dòng)態(tài)操作,你可以使用鼠標(biāo)滾輪進(jìn)行放大縮小操作(也可以使用頁(yè)面左上角的加減號(hào)進(jìn)行操作),每一個(gè)點(diǎn)標(biāo)識(shí)都是支持鼠標(biāo)點(diǎn)擊顯示彈窗信息的。(彈窗信息中支持定義文本、圖片、視頻、超鏈接,當(dāng)然這些需要對(duì)html語(yǔ)言有一定的操作經(jīng)驗(yàn))。

該函數(shù)的另一大特色是,原生支持管道函數(shù)操作,讓你的代碼簡(jiǎn)潔、易懂、高效。(很多R函數(shù)是需要打開(kāi)dplyr包并借助其完成對(duì)于管道函數(shù)的支持)。

以上例子我們可以完全使用管道操作函數(shù)進(jìn)行代碼簡(jiǎn)化。

leaflet(province_city)%>%addTiles()%>%setView(lng=116.38,lat=39.9,zoom=3)%>%addMarkers(lng=~jd,lat=~wd,popup=~city) 

如何進(jìn)行l(wèi)eaflet在線地圖的解析

leaflet函數(shù)支持的點(diǎn)有三類(我所知的),默認(rèn)的是雨滴形狀(addMarkers),還有兩種分別是addCircle、addCircleMarkers。

addCircle是實(shí)心點(diǎn),只有一個(gè)顏色屬性,addCircleMarkers是帶輪廓的圓點(diǎn),可以分別對(duì)輪廓和內(nèi)園進(jìn)行顏色設(shè)定,兩者都支持大?。娣e)映射。

當(dāng)然剩余兩種最為常見(jiàn)的地圖圖層屬性就是線和面了,這是物理空間的重要三要素嘛

線圖層:

addPolylines

面圖層:addPolygons

其實(shí)這些對(duì)象和ggplot中的圖層對(duì)象對(duì)應(yīng)的很完整,geom_point()\geom_line\geom_polygon

除此之外,無(wú)外乎顏色映射參數(shù)、圖例參數(shù)等。

顏色映射對(duì)于數(shù)據(jù)地圖而言是最復(fù)雜也最為重要的視覺(jué)對(duì)象,畢竟你的目光中要有很大一部分?jǐn)?shù)據(jù)墨水比是由色彩來(lái)呈現(xiàn)的,但是小魔方再在前講解ggplot數(shù)據(jù)地圖系列的時(shí)候已經(jīng)講解過(guò)非常詳細(xì)的顏色映射規(guī)則。

針對(duì)數(shù)據(jù)地圖而言,顏色映射要依據(jù)數(shù)據(jù)類型而定,數(shù)值型變量(包含定距變量、定比變量)需要使用連續(xù)漸變色進(jìn)行映射,因子變量(包含分類及有序)需要使用分類色、或者同色系的離散漸變進(jìn)行顏色映射。

在leaflet函數(shù)中對(duì)顏色進(jìn)行了非常精準(zhǔn)和高效的分類。

1、用于連續(xù)數(shù)值的:colorNumeric,colorBin和colorQuantile;

2、用于分類輸入,colorFactor。

colorNumeric:針對(duì)數(shù)值變量進(jìn)行均勻插值,將顏色(定義的)連續(xù)均勻分布在數(shù)值區(qū)間內(nèi)。

colorBin:針對(duì)數(shù)值型變量進(jìn)行數(shù)量段的分組,然后按照組別分別填色。(其實(shí)相當(dāng)于對(duì)數(shù)值型變量進(jìn)行劃組,生成有序的因子組,然后以分段因子變量的形式進(jìn)行顏色映射,但是這個(gè)過(guò)程在leaflet函數(shù)中是自動(dòng)化完成的,無(wú)需我們手工生成新變量,這一點(diǎn)兒是leaflet函數(shù)相對(duì)于ggplot函數(shù)在制作數(shù)據(jù)地圖方面的重要優(yōu)勢(shì))。

colorQuantile:也是針對(duì)數(shù)值型變量,只是是以百分比分位點(diǎn)的形式將數(shù)值變量劃分為一組百分比分位點(diǎn)區(qū)間(其實(shí)理念和過(guò)程與colorBin一致,只是從絕對(duì)量分組變成了百分比分組),然后進(jìn)行顏色映射。

colorFactor:這個(gè)就是單純的分類變量(因子或者有序)映射的顏色設(shè)置方式。

圖例對(duì)象:

addLegend:是添加圖例的圖層對(duì)象,相當(dāng)于ggplot中的guilde函數(shù)。

接來(lái)下給大家大致展現(xiàn)以下leaflet所能呈現(xiàn)的最為常見(jiàn)的幾種風(fēng)格地圖樣式。

地圖類型:

addProviderTiles("Esri.WorldStreetMap")  #淺色

addProviderTiles("Esri.WorldImagery")    #深色深色衛(wèi)星云圖

addProviderTiles("Esri.WorldTerrain")    #亮白色

addProviderTiles("Esri.NatGeoWorldMap")  #深沉輪廓色

addProviderTiles("Stamen.Toner")         #Third-Party Tiles

addProviderTiles("CartoDB.Positron")

addProviderTiles("Stamen.TonerLabels")   #

leaflet()%>%addTiles() #默認(rèn)風(fēng)格

如何進(jìn)行l(wèi)eaflet在線地圖的解析

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

如何進(jìn)行l(wèi)eaflet在線地圖的解析

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

如何進(jìn)行l(wèi)eaflet在線地圖的解析

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

如何進(jìn)行l(wèi)eaflet在線地圖的解析

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

如何進(jìn)行l(wèi)eaflet在線地圖的解析

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

如何進(jìn)行l(wèi)eaflet在線地圖的解析

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

如何進(jìn)行l(wèi)eaflet在線地圖的解析

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

如何進(jìn)行l(wèi)eaflet在線地圖的解析

關(guān)于如何進(jìn)行l(wèi)eaflet在線地圖的解析問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI