Leaflet choropleth地图闪亮 - 无法正确使用addPolygons功能

时间:2016-06-19 05:36:52

标签: r maps shiny leaflet choropleth

我是新手写的闪亮的应用程序和新的使用传单包。我正在尝试创建一个闪亮的应用程序,它将获取用户输入并根据所选用户变量的聚合值绘制一个等值区域地图。

我的样本数据集包含以下变量:statename纬度经度countyname medianage asianpopulation otherpopulation

我的应用会要求用户从用户名或countyname中进行选择。根据此选择,我在内部使用statename或countyname对数据集进行分组。

然后用户从变量中选择一个或多个:medianage asianpopulation otherpopulation。

基于此,我想在这些变量值的总和上绘制等值线图,并在下面显示这些值。

我无法使用addPolygons方法绘制地图。我需要使用形状文件吗?我在这个代码中哪里出错?

library(dplyr)
library(shiny)
library(readr)
library(leaflet)
library(lazyeval)
library(rgdal)

setwd("E:/Data")


ui <- fluidPage(
    titlePanel("Filters"),
    sidebarLayout(
      sidebarPanel(
        radioButtons("level", "Select the Level", choices = c("State", "County"),selected = "State" ,inline = TRUE),
        selectInput("variable", "Variable Name", choices = NULL, multiple = FALSE, selectize = TRUE, selected = "medianage")
      ),
      mainPanel(
        leafletOutput("map"),
        dataTableOutput("heatmapdata")
      )
    )

  )


server <- function(input, output, session) {

  read_csv(file="Sample.csv") %>% 
          select(statename, latitude, longitude, countyname, medianage, asianpopulation, otherpopulation) -> heatmapData -> hd

  variable = c()
  group = c()

  heatmapData <- data.frame(heatmapData)
  hd <- heatmapData

  heatmapdata_1 <- select(heatmapData, -c(latitude, longitude))
  heatmapdata_2 <- select(heatmapdata_1, -c(statename, countyname))

  updateSelectInput(session, "variable", choices = sort(unique(colnames(heatmapData))), selected = "medianage")

  heatmapdata_2 <- heatmapdata_1

  datasetLevel.group <- function(df, grp.var) {
    df %>% group_by_(grp.var) %>%
      summarise_each(funs(sum)) -> df

    df
  }

  datasetLevel <- reactive({
    heatmapdata_2 <- heatmapdata_1
    inputvariable <- c("medianage")

    if (input$level == "State") {
      inputlevel = c("statename")
      heatmapdata_2 <- select(heatmapdata_2, -c(countyname))
    }

    if (input$level == "County") {
      inputlevel = c("countyname")
      heatmapdata_2 <- select(heatmapdata_2, -c(statename))
    }

    sm <- datasetLevel.group(heatmapdata_2, inputlevel)

    group <- inputlevel
    variable <- inputvariable

    l_hd <- list(sm, inputlevel, input$variable)
    l_hd

  }) 

  output$map <- renderLeaflet(
    {
      leaflet() %>% addTiles(options=tileOptions(minZoom = 3, maxZoom = 10)) %>%
        setView(lng = -98.35, lat = 39.5, zoom = 4) %>% 
        setMaxBounds( -180, 5, -52,  73) 
    }
  )

  output$heatmapdata <- renderDataTable(
        select_(datasetLevel()[[1]], datasetLevel()[[2]], datasetLevel()[[3]]),
      options = list(pageLength=5,
                     scrollX=TRUE,
                     lengthMenu = c(5, 10, 25, 100),
                     searching=FALSE)
  )

  observe({
    pal <- colorQuantile("YlOrRd", NULL, n = 20)
    leafletProxy("map", data = datasetLevel()[[1]]) %>%
      clearMarkers() %>%
      clearMarkerClusters() #%>%
#       addPolygons(data = datasetLevel()[[1]],
#                   fillColor = ~pal(variable), 
#                   fillOpacity = 0.8, 
#                   color = "#BDBDC3", 
#                   weight = 1)
  })



 }

shinyApp(ui = ui, server = server) 

我已经注释掉addPolygons代码,因为我得到了一个错误。我一直在试图根据所选变量的聚合值对地图进行颜色编码。

可在以下网址找到数据文件:https://drive.google.com/file/d/0B4PQcgewfQ3-MF9lNjU4clpUcUk/view?usp=sharing

对此的任何帮助都会非常有帮助。感谢。

0 个答案:

没有答案