r - 如何使用 geojsonio 包保留 ID?

标签 r geojson topojson geojsonio

我正在尝试读取使用geojsonio包生成的topoJSON文件:https://raw.githubusercontent.com/pachamaltese/chilemaps/master/data-raw/r15_arica_y_parinacota.json

以下是该文件中第一个条目的相关部分的预览:

{"type":"Topology", ... , "id":295,"properties":{"comuna":"Arica","id":295}} ...

要导入,我运行:

r15 <- "https://raw.githubusercontent.com/pachamaltese/chilemaps/master/data-raw/r15_arica_y_parinacota.json"
r15 <- geojsonio::topojson_read(r15)

然后为了转换回 topoJSON,我运行:

geojsonio::topojson_json(r15)

返回结果:

{"type":"Topology", ... , "id":0,"properties":{"id":"295","comuna":"Arica"}} ...

除非是我,否则 id=0 是错误的,因为我正在读取的 JSON 中应该是 id=295

如何确定我正在以正确的方式读取和写入 JSON?

最佳答案

我认为 ids 被 sp pkg 破坏了

library(geojsonio)
r15 <- "https://raw.githubusercontent.com/pachamaltese/chilemaps/master/data-raw/r15_arica_y_parinacota.json"
out <- topojson_read(r15)
x <- topojson_list(out)
vapply(x$objects$foo$geometries, "[[", 1, "id")
#> [1] 0 1 2 3
vapply(x$objects$foo$geometries, function(z) z$properties$id, "")
#> [1] "295" "302" "307" "331"

我们在topojson_read内部使用sp。

因此“295”“302”“307”“331”嵌套在其他 ID 中。

如果我们这样做

s <- sf::st_read(r15)
topojson_list(zz)

我认为这得到了你想要的

关于r - 如何使用 geojsonio 包保留 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54413792/

相关文章:

openlayers - GeoJSON:FeatureCollection 中是否允许使用属性?

r - 在 r 中使用 3 个变量制作箱线图

r - 如何在函数内抑制 qplot 的 binwidth 警告?

r - dplyr-0.6.0 编程取消引用

javascript - require.js 错误(topojson 未加载)

javascript - 如何在 D3 TOPOJSON map 加载后运行函数

d3.js - D3js : How to design topographic maps?

删除 R 中未使用的库

leaflet - 告诉 Leaflet.draw geojson 多边形是一个矩形

c# - 如何在 C# 中序列化和反序列化 geojson