- 1990, 1995, 2000, 2005, 2005, 2010, 2015.
Ils ont donc tous les mêmes coordonnées.
J'arrive à extraire x, y, et la valeur correspondant au couple x,y donc pas de problème avec ça.
Maintenant j'ai 6 data.frames, chacun contient x,y et la valeur, pour les années citées au dessus.
Ce que je veux faire est d'utiliser une interpolation linéaire pour déterminer la valeur de chaque cellule, pour les autres années (1991, 1992, ...., 2014).
J'ai testé différente choses. Notamment de passer par un stack de mes rasters, puis de travailler sur ce stack, mais pour l'instant je n'arrive pas à m'en sortir.
Voici un exemple de jeu de donnée :
Code : Tout sélectionner
info x y
0.90710944 4525000 4875000
0.90710950 4535000 4875000
2.15048623 4545000 4875000
2.15048623 4555000 4875000
2.15048623 4565000 4875000
2.15048623 4575000 4875000
2.15048623 4585000 4875000
0.23983701 4595000 4875000
0.23983701 4605000 4875000
Voici mon code, qui est très très simple :
fonction "traitement_function"
Code : Tout sélectionner
traitement_function<-function(path_file)
{
rast<-raster(path_file)
#On récupère les coordonnees dans un data frame
coord_data<-as.data.frame(rasterToPoints(rast,spatial=TRUE))
return (coord_data)
}
Mes appels de fonctions :
Code : Tout sélectionner
lamb1990<-traitement_function("notre_chemin_ici")
lamb1995<-traitement_function("notre_chemin_ici)
lamb2000<-traitement_function("notre_chemin_ici")
lamb2005<-traitement_function("notre_chemin_ici")
lamb2010<-traitement_function("notre_chemin_ici")
lamb2015<-traitement_function("notre_chemin_ici")
Et voici ce que j'ai tenté de faire, sans grande réussite (même aucune) :
Code : Tout sélectionner
sx<-stack(unlist(lamb1990,lamb1995,lamb2000))
sx_bis<-stack(unlist(sx,lamb2005,lamb2010))
s<-stack(unlist(sx_bis,lamb2015))
x <- calc(s, fun=function(y) approx(seq(1,26,5), y, 1:26)$y)
Mais je pense pas que ce soit la bonne solution, car je remarque que je perd de l'information lors du stack, ce qui n'est pas vraiment le but.
Je passe de 3 colonnes à 2, et elles n'ont plus vraiment de sens.
J'ai également regarder du côté de la fonction "approx" mais pas moyen de comprendre comment elle fonctionne, et donc de la faire fonctionner.
Une fois le stack fait voilà un petit extrait de ce que j'obtient :
Code : Tout sélectionner
0.003543756 LAMBfrom1000_10km_gpw.v1.population.density_19901
0.003543756 LAMBfrom1000_10km_gpw.v1.population.density_19902
0.003543756 LAMBfrom1000_10km_gpw.v1.population.density_19903
0.003543756 LAMBfrom1000_10km_gpw.v1.population.density_19904
Même si je pense comprendre, il a "remplacer" x et y par ind (indice de chaque cellule j'imagine), et value, reste value mais les valeurs semblent très différente de celles de départs. Mais je ne dois pas bien saisir ce que fait exactement la fonction stack.
Si quelqu'un a une piste ou quelque chose pour m'aider je suis preneur ! Je ne vois pas du tout comment je pourrais faire.
J'espère qu'il ne manque pas d'information, et que ce n'est pas trop le bazar pour comprendre.