Je dois convertir certains rasters projetés (avec des valeurs ndvi) en fichiers csv ou excel. Je veux conserver la forme de la grille, avec la première ligne en tant que valeurs métriques lon et la première colonne en tant que valeurs lat métriques. À l'intersection, il devrait y avoir la valeur ndvi.
J'utilise généralement 'as.data.frame (raster, xy = T)' pour exporter des valeurs sous forme de bloc de données, mais dans ce cas précis, j'obtiendrais une sorte de matrice de valeurs.
1 2 1 v1 v2 2 v3 v4
Ce que je veux
library(raster) r <- raster(ncol=10, nrow=10) ncell(r) values(r) <- 1:ncell(r) plot(r) df <- as.data.frame(r, xy=T) head(df) x y layer 1 -162 81 1 2 -126 81 2 3 -90 81 3 4 -54 81 4 5 -18 81 5 6 18 81 6
Un alors, écris.csv ...
3 Réponses :
J'ai trouvé une solution en passant de 'as.data.frame' à 'dcast'
df <- as.data.frame(raster, xy=T) d1 <- dcast(df, y~x, value.var = "layer") d2 <- d1 %>% arrange(-y)
Pas élégant, mais fonctionne. D'autres méthodes?
Si nous avons besoin d'une approche tidyverse
xtabs(layer ~ y + x, transform(df, y = factor(y, levels = sort(unique(y), decreasing = TRUE))))
Ou avec base R
library(tidyerse) df %>% spread(x, layer) %>% arrange(desc(y))
Vous pouvez utiliser as.matrix
pour cela.
mm <- matrix(values(r), ncol=ncol(r), byrow=TRUE)
Vous pouvez également créer la matrice comme ceci
library(raster) r <- raster(ncol=10, nrow=10) values(r) <- 1:ncell(r) m <- as.matrix(r) write.csv(m, "test.csv", row.names=F) read.csv("test.csv") # V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 #1 1 2 3 4 5 6 7 8 9 10 #2 11 12 13 14 15 16 17 18 19 20 #3 21 22 23 24 25 26 27 28 29 30 #4 31 32 33 34 35 36 37 38 39 40 #5 41 42 43 44 45 46 47 48 49 50 #6 51 52 53 54 55 56 57 58 59 60 #7 61 62 63 64 65 66 67 68 69 70 #8 71 72 73 74 75 76 77 78 79 80 #9 81 82 83 84 85 86 87 88 89 90 #10 91 92 93 94 95 96 97 98 99 100
Pas clair sur la sortie. Comment voulez-vous que la tête (df) soit
La sortie doit être une trame de données
Je voulais dire ce que ces valeurs v1, v2, v3, v4
ok, ce sont les valeurs ndvi présentes dans le raster d'origine