我正在尝试准备一些GeoJSON数据,这些数据用于在传单地图上显示为一个等值线。我遇到的问题是我无法解决如何在我的GeoJSON文件中添加属性的问题。我可以使用fromJSON()
包中的rjson
将其放入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
我想将我的stateincome添加为avgstategift列作为我的GeoJSON文件的属性。 My State列将与GeoJSON文件中的STATE_CODE属性匹配。对此的任何帮助将不胜感激。
答案 0 :(得分:2)
如果您可以使用rgdal
&gt; = 1.11
,那么这是非常快速的工作。我已将State
列重命名为STATE_CODE
以匹配GeoJSON文件中的&#34;更简单&#34;合并:
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
可以为您提供所需的信息。