2017-04-06 9 views
0

わからないこれ行う方法:解析JSON

[ 
    "MULTIPOLYGON (((-95.0000000372529 40.999989970587194, -94.5000000372529 40.999989970587194, -94.5000000372529 40.499989970587194, -95.0000000372529 40.499989970587194)))" 
] 

typeof(a) # prints "character" 
class(a) # prints "json" 

そして、私はdata.frameに変換したい:私は(aで)このように保存された何かを持っている

をそれは私が試した

X1 X2 
1 -95 40 
2 -94 40 
3 -94 40 
4 -95 40 

(それを入力するだけで簡単だった、数字を丸めるする必要が)このようになりません

a.df<-as.data.frame(as.matrix(a)) 

が、それは今

V1 
1 [\n "MULTIPOLYGON (((-95.0000000372529 40.999989970587194, -94.5000000372529 40.999989970587194, -94.5000000372529 40.499989970587194, -95.0000000372529 40.499989970587194)))"\n]\n 
+0

これは有効なJSONのようには見えません。このファイル形式に別の名前がないのは確かですか? – MrFlick

答えて

1
library(sf) 
library(jsonlite) 
library(tidyverse) 

x <- fromJSON('[ 
    "MULTIPOLYGON (((-95.0000000372529 40.999989970587194, -94.5000000372529 40.999989970587194, -94.5000000372529 40.499989970587194, -95.0000000372529 40.499989970587194)))" 
]') 

map(x, st_as_sfc) %>% 
    map(~as.data.frame(.[[1]][[1]])) 
## [[1]] 
##  X1  X2 
## 1 -95.0 40.99999 
## 2 -94.5 40.99999 
## 3 -94.5 40.49999 
## 4 -95.0 40.49999 

を出力します。

wkt2geojson('[ 
    "MULTIPOLYGON (((-95.0000000372529 40.999989970587194, -94.5000000372529 40.999989970587194, -94.5000000372529 40.499989970587194, -95.0000000372529 40.499989970587194)))" 
]') 

もちょっと動作しますが、警告を投げます。

このような構成でこのWKTを作成した実際のソースを知ることは有益です