gpt4 book ai didi

r - 将 geojson 转换为 sf 以获得 clotopleth map

转载 作者:行者123 更新时间:2023-12-04 17:15:13 26 4
gpt4 key购买 nike

我最近一直在研究传单包,了解了添加标记、从本地源读取/绘制 shapefile 以及在 Shiny 中显示最终输出的基础知识。

我目前正在尝试更多地了解如何直接从网络访问 geojson 文件,因为我在 Shiny 中创建的 map 在上传到 shinyapps.io 时没有正确显示(我认为这是因为本地文件不是'与应用程序本身一起上传,需要阅读更多内容)

也就是说我找到了this link其中包含世界各国的政治 map 。添加的文档建议使用以下代码获取多边形,但建议的方法似乎对我不起作用。

library(jsonlite)
json_file <- 'https://datahub.io/core/geo-countries/datapackage.json'
json_data <- fromJSON(paste(readLines(json_file), collapse=""))

我尝试使用 geojson_sf(json_data) 将提取的信息转换为 sf,但出现错误“UseMethod 错误”。从我读到的内容来看,处理空间信息的最佳格式似乎是 sf,它可以让我 left_join 所需的信息并按名称将人口数据添加到每个国家/地区。

我能得到一个关于如何提取多边形的指针,以便我可以将它们添加到我的传单 map 中吗?

示例数据:

Countries <- structure(list(Canada = 37590000, UnitedStates = 328200000, Mexico = 127600000), row.names = c(NA, -1L), class = c("tbl_df", "tbl", "data.frame"))

感谢任何指向可以澄清我的问题的引用资料的指针或链接。谢谢!

最佳答案

您问题中的几点表明对 geojson 是什么以及您使用的函数应该做什么有误解:

  1. geojson_sf() 旨在处理原始 json/geojson。因此它不适用于您已经解析的 json_data
  2. 你说你正在尝试使用 geojson 文件,但你提​​供的链接不是 geojson

如果您转到链接 https://datahub.io/core/geo-countries/datapackage.json你会看到它是描述数据的 JSON,它给出了实际 geojson 文件的路径

library(sf)

json_file <- 'https://datahub.io/core/geo-countries/datapackage.json'
json_data <- jsonlite::fromJSON(json_file)

## The actual geojson is contained here
geojson <- json_data$resources$path[3]

geojson
# [1] "https://pkgstore.datahub.io/core/geo-countries/countries/archive/23f420f929e0e09c39d916b8aaa166fb/countries.geojson"

现在您知道了 geojson 的位置,您可以通过几种不同的方式读取它:

  1. 使用geojsonsf
sf <- geojsonsf::geojson_sf(geojson)
  1. 使用sf
sf <- sf::st_read(geojson)

在这种情况下你可以/应该使用sf,因为数据不大而且可以轻松处理。

我构建了 geojsonsf,当您需要更快的速度时,它可以处理 sf geojson 阅读器在 large files 上遇到困难的情况。

关于r - 将 geojson 转换为 sf 以获得 clotopleth map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68847071/

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