2017-03-11 3 views
0

Je cette trame de données suivante dans R:Exportation fichier image direcly de R basée sur la trame de données

df <- data.frame(a = c(0, 0, 1, 1), 
       b = c(0, 1, 0, 1), 
       col = c("red", "green", "green", "yellow")) 

Je suis intéressé à exporter un fichier image raster (png, TIF, etc.) qui contiendra un pixel pour chaque entrée dans la trame de données, avec la couleur appropriée. Pour l'exemple ci-dessus, il y aura un 2 par 2 fichier image qui ressemble à ceci:

enter image description here

J'ai le sentiment que le paquet raster pourrait être utile, mais si je comprends bien ne peut exporter des images raster géospatiale types et non des images simples.

Répondre

0

Cela fonctionne, en utilisant le package tiff:

library(tiff) 

df <- data.frame(a = c(0, 0, 1, 1), 
       b = c(0, 1, 0, 1), 
       col = c("red", "green", "green", "yellow")) 

mina <- min(df$a) 
minb <- min(df$b) 
maxa <- max(df$a) 
maxb <- max(df$b) 

colarray <- array(data = NA, 
        dim = c(maxb - minb + 1, 
          maxa - mina + 1, 
          3)) 

for (k in 1:nrow(df)) 
{ 
    colarray[df[k, 2] - minb + 1, 
      df[k, 1] - mina + 1, 
      ] <- col2rgb(df[k, 3])/255 
} 
writeTIFF(colarray, "res.tif", compression = "LZW") 

Il pourrait être un peu plus succinct, mais cela fonctionne mieux pour les cas où les coordonnées x & y sont pas nécessairement 0 à n.

Cela fonctionnera de la même manière en utilisant des packages associés tels que png.