2014-10-09 13 views
5

Come si scrive un array json da R che ha una sequenza di lat e long?Come si scrive un array json da R che ha una sequenza di lat e long?

vorrei scrivere:

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

il meglio che posso fare è:

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

Come posso avvolgere la cosa in un altro array (il tipo JSON)? Questo è importante per me così posso scrivere file in un formato geojson come LineString.

+0

Puoi mostrare il formato finale con 'LineString'? – m0nhawk

+2

Nel caso in cui non si fosse a conoscenza, il pacchetto 'rgdal' può scrivere geojson. Ad esempio: 'library (rgdal); biblioteca (sp); xy <- data.frame (id = seq_len (100), x = runif (100, 145, 150), y = runif (100, -38, -35)); coordinate (xy) <- ~ x + y; writeOGR (xy, 'xy.js', layer = '', driver = "GeoJSON") '. – jbaums

risposta

5

io di solito uso fromJSON per ottenere l'oggetto di destinazione:

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 

Quindi dovremmo creare, una lista di liste senza nome, ciascuna contenente 2 elementi:

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

Molto intelligente! Lo ricorderò. – jbaums

+0

Grazie. Mi vergogno di non aver pensato a quello. – cylondude

0

Se si dispone di un matrix

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

potrebbe essere questo aiuta:

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