json素材操纵与图层面板控制的方法是什么

本篇内容介绍了“json素材操纵与图层面板控制的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

json地图数据结构和变量操控:

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) 

#这样的全局预设可以为你省却很多麻烦,强烈建议

setwd("D:/R/mapdatanew/")

###1

以下数据导入json原生数据格式的三种方式:(2,3两种是没啥区别的,但是simplifyVector=FALSE参数设定与否则至关重要,他决定着输入的json数据是经过平整的向量化数据还是原生的list数据,这里的leaflet需要原生格式的json数据)

geojson1<-fromJSON(url)  #在同一层级对象长度一致,便会被自动视作数据框。

geojson2<-fromJSON(url,simplifyVector=FALSE)  #不强转化为数据框。

geojson3<-readLines(url,warn=FALSE,encoding="UTF-8")%>%paste(collapse="/n")%>%fromJSON(simplifyVector=FALSE)

设置随机中非常必要,否则容易导致每次的效果都不一样:

set.seed(1234)

#向list对象中添加数据(随机数据)

geojson3$features<-lapply(geojson3$features,function(feat){

feat$properties$scale<-runif(1,0,10)

feat

})

#从list对象中读取数据(主要读取我们可做更改与扩展的行政区划列表信息)

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

})

关于属性设置的三个优先级:

按照由高到低的顺序排列为:

  •  feature-specific styles #(也就是设置在 simple featrue的style)

  •  the top-level style object #(设置在features中的style)

  • style-related arguments passed to the function #(设置在GeoJSON内的各种参数)

#这是通过增加地图图层来进行图层控制的简单案例:

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)

  )

json素材操纵与图层面板控制的方法是什么

json素材操纵与图层面板控制的方法是什么

json素材操纵与图层面板控制的方法是什么

json素材操纵与图层面板控制的方法是什么

以下这段代码是之前leaflet系列教程的线图篇里面的案例,这里刚好应用一下:

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)

json素材操纵与图层面板控制的方法是什么

这是一个高度综合的案例,包含底图图层的多分类控制;数据图层的多分类控制以及点线面三种数据图层的综合运用。

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素材操纵与图层面板控制的方法是什么

“json素材操纵与图层面板控制的方法是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/219887.html

(0)
上一篇 2022年1月2日
下一篇 2022年1月2日

相关推荐

发表回复

登录后才能评论