r - Shiny Web 应用程序中的传单不显示地图
问题描述
我试图创建一个交互式地图,允许用户通过使用以下 UI 功能和服务器功能对 census.gov 中的 shapefile 进行子集化来选择他们想要查找的州:
library(shiny)
library(leaflet)
library(magrittr)
library(rgdal)
shinyUI(fluidPage(
titlePanel("JHU COVID-19 Modeling Visualization Map"),
sidebarLayout(
sidebarPanel(
checkboxGroupInput("statesInput", "Choose the State(s)",
c("AL", "MO", "AK", "MT", "AZ", "NE",
"AR", "NV", "CA", "NH", "CO", "NJ",
"CT", "NM", "DE", "NY", "DC", "NC",
"FL", "ND", "GA", "OH", "HI", "OK",
"ID", "OR", "IL", "PA", "IN", "RI",
"IA", "SC", "KS", "SD", "KY", "TN",
"LA", "TX", "ME", "UT", "MD", "VT",
"MA", "VA", "MI", "WA", "MN", "WV",
"MS", "WI", "WY")),
submitButton("Submit")
),
mainPanel(
tabsetPanel(type = "tabs",
tabPanel("Map By State", leafletOutput("statePolygonMap"))
)
)
)))
shinyServer(function(input, output) {
dir <- getwd();
statepolygonZip <- download.file("https://www2.census.gov/geo/tiger/GENZ2018/shp/cb_2018_us_state_500k.zip",
destfile = "cb_2018_us_state_500k.zip");
unzip("cb_2018_us_state_500k.zip");
statePolygonData <- readOGR("cb_2018_us_state_500k.shp", layer = "cb_2018_us_state_500k",
GDAL1_integer64_policy = TRUE);
## obtaning the state shape file data provided by cencus.gov
## for more categories of region shape file:
## https://www.census.gov/geographies/mapping-files/time-series/geo/carto-boundary-file.html
output$statePolygonMap <-renderLeaflet ({
neStates <- paste(input$statesInput, collapse = ", ");
## extracting the all inputs and combining to a string
statesAbbr <- subset(statePolygonData, statePolygonData$STUSPS %in% c(neStates));
## subsetting the shape file with the selected states
leaflet(statesAbbr) %>%
addPolygons(color = "#444444", weight = 1, smoothFactor = 0.5,
opacity = 1.0, fillOpacity = 0.5,
fillColor = ~colorQuantile("YlOrRd", ALAND)(ALAND),
highlightOptions = highlightOptions(color = "white", weight = 2,
bringToFront = TRUE))
})
## producing the map with polygon boundary on the state level
})
但是,输出没有在显示窗口上显示任何地图,而其他部分正常运行,没有错误但有一些警告: 显示窗口的屏幕截图
Warning in polygonData.SpatialPolygonsDataFrame(data) :
Empty SpatialPolygonsDataFrame object passed and will be skipped
Warning in polygonData.SpatialPolygonsDataFrame(data) :
Empty SpatialPolygonsDataFrame object passed and will be skipped
解决方案
问题似乎与传单没有任何关系。问题似乎出在这些行中
neStates <- paste(input$statesInput, collapse = ", ");
statesAbbr <- subset(statePolygonData, statePolygonData$STUSPS %in% c(neStates));
当你paste0(collapse=)
值时,你将一个值向量变成一个单一的 stinrg。例如
states <- c("AL", "MO")
paste0(states, collapse=",")
[1] "AL,MO"
但是,%in%
运算符在向量中查找完全匹配,而不是逗号分隔的字符串。看
"AL" %in% "AL,MO"
# [1] FALSE
"AL" %in% c("AL", "MO")
# [1] TRUE
这意味着你真的应该只是使用
statesAbbr <- subset(statePolygonData, statePolygonData$STUSPS %in% input$statesInput);
推荐阅读
- spring - Spring Data Mongodb 查找管道
- regex - 用于获取数字和单词中的数字的正则表达式
- android - Cordova 插件语音识别在 getSupportedLanguages() 上失败
- c# - C# mvc5 通过控制器添加文本框
- reactjs - 使用 React Loadable 封装在 HOC 中的代码拆分路由组件
- r - 从 Excel 将浮点数作为字符串导入时出现问题。错误地添加精度
- firebase - Ionic 3 - 图像加载器不适用于 firebase 存储图像
- java - 如何使用 java 使用阿拉伯光词干分析器库
- java - 事件:请告诉我我是否理解?
- r - 矩阵类 (dgCMatrix) 的 rowsum 函数的等价物