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

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

臨武網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),臨武網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為臨武成百上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營銷網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的臨武做網(wǎng)站的公司定做!

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

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

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

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

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

library(plyr)

library(mapdata)

library(leaflet)

library(maptools)

library(ggplot2)

導(dǎo)入中國各省會城市地理信息數(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ù)的基本語法結(jié)構(gòu)如下:

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

m<-leaflet(data=province_city)    

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

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

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

m<-addTiles(m)

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

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

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

以上四局代碼會制作出一個以province_city為數(shù)據(jù)源、以(116.38,39.9)為視覺中心,縮放級別為3級,點標(biāo)識對象為city的中國行政地圖出來。

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

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

以上例子我們可以完全使用管道操作函數(shù)進(jì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ù)支持的點有三類(我所知的),默認(rèn)的是雨滴形狀(addMarkers),還有兩種分別是addCircle、addCircleMarkers。

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

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

線圖層:

addPolylines

面圖層:addPolygons

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

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

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

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

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

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

2、用于分類輸入,colorFactor。

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

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

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

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

圖例對象:

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

接來下給大家大致展現(xiàn)以下leaflet所能呈現(xià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在線地圖的解析問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。

文章名稱:如何進(jìn)行l(wèi)eaflet在線地圖的解析
分享網(wǎng)址:http://muchs.cn/article10/gdcggo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、企業(yè)建站、云服務(wù)器、建站公司、面包屑導(dǎo)航、網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司