2017-04-16 87 views
4
# From http://leafletjs.com/examples/choropleth/us-states.js 
states <- geojsonio::geojson_read("json/us-states.geojson", what = "sp") 

bins <- c(0, 10, 20, 50, 100, 200, 500, 1000, Inf) 
pal <- colorBin("YlOrRd", domain = states$density, bins = bins) 

labels <- sprintf(
    "<strong>%s</strong><br/>%g people/mi<sup>2</sup>", 
    states$name, states$density 
) %>% lapply(htmltools::HTML) 

leaflet(states) %>% 
    setView(-96, 37.8, 4) %>% 
    addProviderTiles("MapBox", options = providerTileOptions(
    id = "mapbox.light", 
    accessToken = Sys.getenv('MAPBOX_ACCESS_TOKEN'))) %>% 
    addPolygons(
    fillColor = ~pal(density), 
    weight = 2, 
    opacity = 1, 
    color = "white", 
    dashArray = "3", 
    fillOpacity = 0.7, 
    highlight = highlightOptions(
     weight = 5, 
     color = "#666", 
     dashArray = "", 
     fillOpacity = 0.7, 
     bringToFront = TRUE), 
    label = labels, 
    labelOptions = labelOptions(
     style = list("font-weight" = "normal", padding = "3px 8px"), 
     textsize = "15px", 
     direction = "auto")) %>% 
    addLegend(pal = pal, values = ~density, opacity = 0.7, title = NULL, 
    position = "bottomright") 

上述代码复制自https://rstudio.github.io/leaflet/choropleths.html如何下载geojson数据并将其读取到R

我想重现输出。但是,我陷入了第一步 - 下载geojson文件。我使用了第一行显示的链接,并将其保存为文本文件,然后将其重命名为geojson文件。但是我没有阅读那个文件。很明显,文件下载或加载到R有问题,但我不知道它在哪里。

有人可以提供任何指示吗?我从来没有处理过geojson数据。我只需要前两行代码的帮助,我可以自己处理所有其他代码。

回答

2

下载文件头部有一个javascript分配。删除它似乎解决了这个问题,

library(geojson) 
library(geojsonio) 
url <- "http://leafletjs.com/examples/choropleth/us-states.js" 

# read as text file 
doc <- readLines(url) 

# remove the javascript assignment at the front 
doc2 <- gsub("var statesData = ", "", doc) 

# write out as a temp file and read 
write(doc2, file = "tempgeo.json") 
states <- geojson_read("tempgeo.json", what = "sp") 
+0

谢谢!这使得一切都可以重现。 – Bin

相关问题