gpt4 book ai didi

json - 使用 r 向 GeoJSON 添加属性

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

我正在尝试准备一些 GeoJSON 数据,以便在传单 map 上显示为等值线。我遇到的问题是我一辈子都想不出如何将属性添加到我的 GeoJSON 文件中。我可以使用 rjson 包中的 fromJSON() 将它放入 R 中,但它最终是一个列表列表,我有点难以理解如何向列表追加一些东西,更不用说潜入递归列表追加数据了。

可以找到我创建的GeoJSON文件here .

我用来导入数据的代码是:

library(rjson)
Myjson <- fromJSON(paste(readLines("states.json"), collapse=""))

我还有一个数据集,我想将其作为属性添加到 json 文件中的每个几何图形中。结构是:

structure(list(State = structure(1:8, .Label = c("ACT", "NSW", "NT", "QLD", "SA", "TAS", "VIC", "WA"), 
class = "factor"), stateincome = c(28959299.93, 392185791.54, 8559477.92, 169039212.3, 61092752.9878, 23695740.28, 298860548.9008, 114231960.463),
avgstategift = c(48.8204253852119, 64.8584888549168, 45.0472757892964, 53.9720822484215, 50.7162153310643, 53.0923216942408, 62.4033469022953, 50.7348320924839)),
row.names = c(NA, -8L),
class = c("data.table", "data.frame"),
.Names = c("State", "stateincome", "avgstategift"))

它看起来像:

   State stateincome avgstategift
1: ACT 28959300 48.82043
2: NSW 392185792 64.85849
3: NT 8559478 45.04728
4: QLD 169039212 53.97208
5: SA 61092753 50.71622
6: TAS 23695740 53.09232
7: VIC 298860549 62.40335
8: WA 114231960 50.73483

我想将我的 statencome 和 avgstategift 列作为属性添加到我的 GeoJSON 文件中。我的 State 列将与 GeoJSON 文件中的 STATE_CODE 属性相匹配。对此的任何帮助将不胜感激。

最佳答案

如果您可以使用 rgdal >= 1.11 那么这会非常快。我已将 State 列重命名为 STATE_CODE 以匹配 GeoJSON 文件中的内容以“更轻松”地合并:

library(rgdal)

states <- readOGR("states.json", "OGRGeoJSON")

dat <- structure(list(STATE_CODE = structure(1:8, .Label = c("ACT", "NSW", "NT", "QLD", "SA", "TAS", "VIC", "WA"),
class = "factor"), stateincome = c(28959299.93, 392185791.54, 8559477.92, 169039212.3, 61092752.9878, 23695740.28, 298860548.9008, 114231960.463),
avgstategift = c(48.8204253852119, 64.8584888549168, 45.0472757892964, 53.9720822484215, 50.7162153310643, 53.0923216942408, 62.4033469022953, 50.7348320924839)),
row.names = c(NA, -8L),
class = c("data.table", "data.frame"),
.Names = c("STATE_CODE", "stateincome", "avgstategift"))

states@data <- merge(states@data, dat)
str(states@data)

## 'data.frame': 8 obs. of 6 variables:
## $ STATE_CODE : Factor w/ 9 levels "ACT","NSW","NT",..: 1 2 3 5 6 7 8 9
## $ STE_CODE11 : Factor w/ 9 levels "1","2","3","4",..: 8 1 7 3 4 6 2 5
## $ STE_NAME11 : Factor w/ 9 levels "Australian Capital Territory",..: 1 2 3 5 6 7 8 9
## $ ALBERS_SQM : num 2.36e+09 8.01e+11 1.35e+12 1.73e+12 9.84e+11 ...
## $ stateincome : num 2.90e+07 3.92e+08 8.56e+06 1.69e+08 6.11e+07 ...
## $ avgstategift: num 48.8 64.9 45 54 50.7 ...

我在 this post 中介绍了一些使用 GeoJSON 文件的额外 R 映射但我不知道您还需要做什么才能将数据放入传单中。如果您只需要合并数据,那么本例中的 states@data 应该可以满足您的需求。

关于json - 使用 r 向 GeoJSON 添加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27136009/

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