本篇內(nèi)容介紹了“json素材操縱與圖層面板控制的方法是什么”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)是專業(yè)的烏恰網(wǎng)站建設(shè)公司,烏恰接單;提供網(wǎng)站制作、網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行烏恰網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
json地圖數(shù)據(jù)結(jié)構(gòu)和變量操控:
library(jsonlite)
library(leaflet)
library(dplyr)
library(geojsonio)
library(rgdal)
library(sf)
library(ggplot2)
library(maptools)
library(plyr)
library(htmltools)
options(stringsAsFactors=FALSE,warn=FALSE)
#這樣的全局預(yù)設(shè)可以為你省卻很多麻煩,強烈建議
setwd("D:/R/mapdatanew/")
###1
以下數(shù)據(jù)導(dǎo)入json原生數(shù)據(jù)格式的三種方式:(2,3兩種是沒啥區(qū)別的,但是simplifyVector=FALSE參數(shù)設(shè)定與否則至關(guān)重要,他決定著輸入的json數(shù)據(jù)是經(jīng)過平整的向量化數(shù)據(jù)還是原生的list數(shù)據(jù),這里的leaflet需要原生格式的json數(shù)據(jù))
geojson1<-fromJSON(url) #在同一層級對象長度一致,便會被自動視作數(shù)據(jù)框。
geojson2<-fromJSON(url,simplifyVector=FALSE) #不強轉(zhuǎn)化為數(shù)據(jù)框。
geojson3<-readLines(url,warn=FALSE,encoding="UTF-8")%>%paste(collapse="\n")%>%fromJSON(simplifyVector=FALSE)
設(shè)置隨機中非常必要,否則容易導(dǎo)致每次的效果都不一樣:
set.seed(1234)
#向list對象中添加數(shù)據(jù)(隨機數(shù)據(jù))
geojson3$features<-lapply(geojson3$features,function(feat){
feat$properties$scale<-runif(1,0,10)
feat
})
#從list對象中讀取數(shù)據(jù)(主要讀取我們可做更改與擴展的行政區(qū)劃列表信息)
mydata<-ldply(geojson3$features,function(feat){
name<-feat$properties$name
id<- feat$properties$id
scale<-as.numeric(feat$properties$scale)
mydata<-data.frame(name,id,scale)
})
# Default styles for all features
#it has higher precedence compare with the style in a function of GeoJSON
geojson3$style=list(weight=1,color="#555555",opacity=1,fillOpacity=0.8)
# Color by scale using quantiles
pal<-colorQuantile("Greens",mydata$scale)
# Add a properties$style list to each feature
geojson3$features <- lapply(geojson3$features, function(feat) {
feat$properties$style<-list(
fillColor=pal(feat$properties$scale)
)
feat
})
關(guān)于屬性設(shè)置的三個優(yōu)先級:
按照由高到低的順序排列為:
feature-specific styles #(也就是設(shè)置在 simple featrue的style)
the top-level style object #(設(shè)置在features中的style)
style-related arguments passed to the function #(設(shè)置在GeoJSON內(nèi)的各種參數(shù))
#這是通過增加地圖圖層來進行圖層控制的簡單案例:
leaflet()%>%
addTiles(group ="OSM (default)")%>%
setView(lng=116.435889,lat=39.932642,zoom=8)%>%
addGeoJSON(geojson3,group="GeoJSON")%>%
addProviderTiles(providers$CartoDB.Positron,group="CartoDB")%>%
addProviderTiles(providers$Stamen.TonerLines,options=providerTileOptions(opacity=0.35),group="TonerLines")%>%
addProviderTiles(providers$Stamen.TonerLabels,group="TonerLabels")%>%
addLayersControl(
baseGroups = c("OSM (default)", "CartoDB", "TonerLines","TonerLabels"),
overlayGroups = c("GeoJSON"),
options=layersControlOptions(collapsed = FALSE)
)
以下這段代碼是之前l(fā)eaflet系列教程的線圖篇里面的案例,這里剛好應(yīng)用一下:
data<-read.table("D:/R/File/subwayline.txt",header=TRUE,stringsAsFactors = FALSE)
data$size<-runif(47,10,25)
data$Type<-as.factor(data$Type)
data1<-filter(data,Type=="NO1")
data2<-filter(data,Type=="NO5")
pal <- colorFactor(topo.colors(2),data$Type)
leaflet()%>%
addTiles()%>%
addPolylines(data=data1,~lon,~lat,color="blue")%>%
addPolylines(data=data2,~lon,~lat,color="green")%>%
addCircleMarkers(data=data,~lon, ~lat,popup = ~address,radius=~size,group=~Type)
這是一個高度綜合的案例,包含底圖圖層的多分類控制;數(shù)據(jù)圖層的多分類控制以及點線面三種數(shù)據(jù)圖層的綜合運用。
leaflet()%>%
addTiles(group ="OSM (default)")%>%
setView(lng=116.435889,lat=39.932642,zoom=8)%>%
addGeoJSON(geojson3,group="GeoJSON")%>%
addProviderTiles(providers$CartoDB.Positron,group="CartoDB")%>%
addProviderTiles(providers$Stamen.TonerLines,options=providerTileOptions(opacity=0.35),group="TonerLines")%>%
addProviderTiles(providers$Stamen.TonerLabels,group="TonerLabels")%>%
addPolylines(data=data1,~lon,~lat,color="red",group="line1")%>%
addPolylines(data=data2,~lon,~lat,color="orange",group="line2")%>%
addCircleMarkers(data=data,~lon, ~lat,popup = ~address,radius=~size,group="address",color = "#1843F9")%>%
addLayersControl(
baseGroups = c("OSM (default)", "CartoDB", "TonerLines","TonerLabels"),
overlayGroups = c("GeoJSON","line1","line2","address"),
options=layersControlOptions(collapsed = FALSE)
)
“json素材操縱與圖層面板控制的方法是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
網(wǎng)頁題目:json素材操縱與圖層面板控制的方法是什么
文章路徑:http://aaarwkj.com/article42/pjdjec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化、網(wǎng)站策劃、面包屑導(dǎo)航、網(wǎng)站排名、ChatGPT
聲明:本網(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)