1. Question
J'ai rencontré un avertissement en utilisant la fonction projectRaster () dans le package raster en R. Un exemple reproductible complet est collé ci-dessous.
Warning message:
In rgdal::rawTransform(projto_int, projfrom, nrow(xy), xy[, 1], :
33940 projected point(s) not finite
Ma question est la suivante: cet avertissement est-il un problème que je dois résoudre si je travaille sur des données terrestres? En d'autres termes, les données sont "perdues". Ce serait un problème majeur pour moi s'il l'est. Si tel est le cas, savez-vous s'il existe un moyen de résoudre ce problème?
J'ai cherché une solution à ce problème en ligne et j'en ai trouvé une mention ici , ici et ici, mais je pense qu'aucun ne propose une réponse appropriée à ce problème.
2. Chargez la bibliothèque raster
library(raster)
3. Créez d'abord une carte (longue lat) du monde, avec une constante dans chaque cellule de la grille
Je mets une constante dans chaque cellule de la grille pour voir si je peux diagnostiquer le problème de l'endroit où l'avertissement est susceptible d'affecter les données, le cas échéant.
rastertest.longlat<-raster(ncol=360, nrow=180)
values(rastertest.longlat)<-c(rep(1,n=180*360))
4. Si vous reprojetez la carte (lat longue) sur une grille de surface égale, elle produit le message d'avertissement
rastertest.eck4<-projectRaster(rastertest.longlat, res=c(100000,100000), crs="+proj=eck4",method="ngb", over=T)
Warning message:
In rgdal::rawTransform(projto_int, projfrom, nrow(xy), xy[, 1], :
33940 projected point(s) not finite
Je pense que ce message dit essentiellement que la re-projection a échoué pour certaines des cellules de la grille.
5. Mais si vous tracez les deux cartes, il ne semble pas que cet avertissement pose des problèmes pour les données
Autrement dit, vous ne voyez pas de lacunes blanches dans les données tracées. Je suppose que les cellules perdues sont des cellules non terrestres, au sommet et au bord de l'étendue du monde. Des idées?
par(mfrow=c(2,1))
plot(rastertest.longlat, col="blue")
data(wrld_simpl)
wrld <- spTransform(wrld_simpl, CRS('+proj=longlat'))
plot(wrld, add=TRUE)
plot(rastertest.eck4, col="blue")
wrld <- spTransform(wrld_simpl, CRS('+proj=eck4'))
plot(wrld, add=TRUE)
Ce n'est pas une réponse complète à ma question initiale, en termes de tous les détails, mais cela fournit au lecteur intéressé un endroit où aller.
En général, les données sont perdues et déformées lors de la reprojection de rasters de projections longues à surfaces égales. Cela peut être problématique pour l'analyse globale. Si vous pouvez obtenir vos données au format vectoriel, il est préférable de reprojeter en utilisant ce format à la place.
Voici une référence sur le problème général. Et voici un autre sur la quantification de la perte. J'espère que cela pourra aider.
la source