2014-10-09 3 views
5

Wie schreibe ich ein JSON-Array von R, das eine Folge von Lat und Long hat?Wie schreibe ich ein JSON-Array von R, das eine Folge von Lat und Long hat?

würde ich schreiben:

[[[1,2],[3,4],[5,6]]] 

das Beste, was ich tun kann, ist:

toJSON(matrix(1:6, ncol = 2, byrow = T)) 
#"[ [ 1, 2 ],\n[ 3, 4 ],\n[ 5, 6 ] ]" 

Wie kann ich die Sache in einem anderen Array (die json Art) wickeln? Das ist wichtig für mich, damit ich Dateien als LineString in ein Geojson-Format schreiben kann.

+0

Können Sie das endgültige Format mit 'LineString' anzeigen? – m0nhawk

+2

Falls Ihnen nicht bekannt ist, kann das Paket 'rgdal' Geojson schreiben. Zum Beispiel: 'library (rgdal); Bibliothek (sp); xy <- data.frame (id = seq_len (100), x = runif (100, 145, 150), y = runif (100, -38, -35)); Koordinaten (xy) <- ~ x + y; writeOGR (xy, 'xy.js', layer = '', driver = "GeoJSON") '. – jbaums

Antwort

5

ich in der Regel fromJSON verwenden das Zielobjekt zu erhalten:

ll <- fromJSON('[[[1,2],[3,4],[5,6]]]') 

str(ll) 
List of 1 
$ :List of 3 
    ..$ : num [1:2] 1 2 
    ..$ : num [1:2] 3 4 
    ..$ : num [1:2] 5 6 

Also sollten wir schaffen, eine Liste unbenannter Liste mit jeweils zwei Elementen:

xx <- list(setNames(split(1:6,rep(1:3,each=2)),NULL)) 
identical(toJSON(xx),'[[[1,2],[3,4],[5,6]]]') 
[1] TRUE 
+1

Sehr schlau! Ich werde mich daran erinnern. – jbaums

+0

Danke. Ich schäme mich, dass ich nicht daran gedacht habe. – cylondude

0

Wenn Sie eine matrix

m1 <- matrix(1:6, ncol=2, byrow=T) 

kann dies hilft:

library(rjson) 
paste0("[",toJSON(setNames(split(m1, row(m1)),NULL)),"]") 
#[1] "[[[1,2],[3,4],[5,6]]]" 
Verwandte Themen