gpt4 book ai didi

R Leaflet GeoJSON着色

转载 作者:行者123 更新时间:2023-12-05 03:05:00 24 4
gpt4 key购买 nike

我仍在研究这个 R Leaflet self 项目来学习,我正在尝试在北卡罗来纳州罗利的维克县地区的一些多边形中着色。下面是我要着色的图像。

https://imgur.com/a/xdvNLvM

基本上,我试图让每个多边形的颜色都不同。我试过 addPolygons 但我想我没有正确的多边形数据。我看过颜色合并,但我似乎没有想法。下面是我的代码。我什至尝试取消嵌套 GeoJSON 数据并创建一个因子调色板,但这似乎没有用。

library(shiny)
library(leaflet.extras)
library(geojsonio)
library(rgdal)

dataurl <- 'https://opendata.arcgis.com/datasets/f5c3b84a6fcc499d8f9ece78602258eb_0.geojson'
data <- geojson_read(dataurl, method = 'web', parse = FALSE, what = 'list')

wake <- readOGR(dataurl)
wake$zips <- factor(sample.int(39L, nrow(wake), TRUE))

#bikedata <- 'D:/bicycle-crash-data-chapel-hill-region.geojson'
#bike <- geojson_read(bikedata)

vtdata <- 'http://geodata.vermont.gov/datasets/4c206846699947429df59c8cb552ab5c_11.geojson'
vt <- geojson_read(vtdata)

factpal <- colorFactor(topo.colors(39), wake$zips)

ui <- shinyUI(
fluidPage(
leafletOutput("map", width = "100%", height = "900px")
)
)

server <- function(input, output) {

wakegeojson <- reactive({
data
})

#bikegeojson <- reactive({
# bike
#})

vtgeojson <- reactive({
vt
})

output$map <- renderLeaflet({
leaflet() %>%
addTiles() %>%
setView(-93.65, 42.0285, zoom = 4)

})

observe({
leafletProxy("map") %>%
addWMSTiles("http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r.cgi",
layers = "nexrad-n0r-900913",
options = WMSTileOptions(format = "image/png", transparent = TRUE),
attribution = "") %>%
addGeoJSON(wakegeojson(), weight = 3, fill = factpal) %>%
#addGeoJSON(bikegeojson()) %>%
addGeoJSON(vtgeojson(), fill = FALSE, color = "black")
})
}

app <- shinyApp(ui = ui, server = server)
runApp(app, launch.browser = TRUE)

我想我需要更多地探索 addPolygons 功能,但我不确定如何去做或如何解析/取消嵌套我的 GeoJSON 数据以完成用不同颜色填充 Wake County 邮政编码。任何帮助总是感激。谢谢。

最佳答案

我会切换到 sf。您可以直接加载 geojson 并生成一个 Multipolygon 和一个 Multilinestring 对象,它们的读取速度也比 readOGR 快得多。

然后您可以将这些对象放入 addPolygonsaddPolylines 中。

以下示例应该有效:

library(shiny)
library(leaflet.extras)
library(geojsonio)
library(rgdal)
library(sf)

dataurl <- 'https://opendata.arcgis.com/datasets/f5c3b84a6fcc499d8f9ece78602258eb_0.geojson'
wake <- st_read(dataurl)
wake$zips <- factor(sample.int(39L, nrow(wake), TRUE))

vtdata <- 'http://geodata.vermont.gov/datasets/4c206846699947429df59c8cb552ab5c_11.geojson'
vt <- st_read(vtdata)

factpal <- colorFactor(topo.colors(39), wake$zips)

ui <- shinyUI(
fluidPage(
leafletOutput("map", width = "100%", height = "900px")
)
)

server <- function(input, output) {

wakegeojson <- reactive({
wake
})

vtgeojson <- reactive({
vt
})

output$map <- renderLeaflet({
leaflet() %>%
addTiles() %>%
addPolygons(data=wakegeojson(), color=factpal(wake$zips)) %>%
addPolylines(data=vtgeojson(), color="red")
})
}

app <- shinyApp(ui = ui, server = server)
runApp(app, launch.browser = TRUE)

关于R Leaflet GeoJSON着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51616693/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com