我正在尝试读取使用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/