1. Frage
Ich habe eine Warnung mit der Funktion projectRaster () im Rasterpaket in R festgestellt. Ein vollständig reproduzierbares Beispiel wird unten eingefügt.
Warning message:
In rgdal::rawTransform(projto_int, projfrom, nrow(xy), xy[, 1], :
33940 projected point(s) not finite
Meine Frage ist: Ist diese Warnung ein Problem, das ich beheben muss, wenn ich an terrestrischen Daten arbeite? Mit anderen Worten sind Daten "verloren". Dies wäre ein großes Problem für mich, wenn es so ist. Wenn dies der Fall ist, wissen Sie, ob ich es auf irgendeine Weise beheben kann?
Ich habe online nach einer Lösung für dieses Problem gesucht und hier , hier und hier eine Erwähnung gefunden , aber ich denke, keine bietet eine geeignete Antwort auf dieses Problem.
2. Laden Sie die Rasterbibliothek
library(raster)
3. Erstellen Sie zunächst eine (lange lat) Weltkarte mit einer Konstanten in jeder Gitterzelle
Ich füge in jede Gitterzelle eine Konstante ein, um zu sehen, ob ich das Problem diagnostizieren kann, wo die Warnung die Daten wahrscheinlich beeinflusst, wenn überhaupt.
rastertest.longlat<-raster(ncol=360, nrow=180)
values(rastertest.longlat)<-c(rep(1,n=180*360))
4. Wenn Sie die Karte (Long Lat) auf ein Raster mit gleicher Fläche projizieren, wird die Warnmeldung ausgegeben
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
Ich denke, diese Nachricht besagt im Grunde, dass die Neuprojektion für einige der Gitterzellen fehlgeschlagen ist.
5. Wenn Sie jedoch die beiden Karten zeichnen, sieht es nicht so aus, als würde diese Warnung Probleme für die Daten verursachen
Das heißt, Sie sehen keine weißen Lücken in den aufgezeichneten Daten. Ich vermute, dass die verlorenen Zellen nicht-terrestrische Zellen sind, an der Spitze und am Rande der Welt. Irgendwelche Ideen?
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)
Dies ist keine vollständige Antwort auf meine ursprüngliche Frage in Bezug auf alle wichtigen Details, aber sie bietet dem interessierten Leser einen Ort, an den er gehen kann.
Im Allgemeinen gehen Daten verloren und werden bei der Neuprojektion von Rastern von Longlat- auf gleichflächige Projektionen verzerrt. Dies kann für die globale Analyse problematisch sein. Wenn Sie Ihre Daten im Vektorformat erhalten können, ist es besser, stattdessen mit diesem Format neu zu projizieren.
Hier ist eine Referenz zum allgemeinen Problem. Und hier noch eine zum Versuch, den Verlust zu quantifizieren. Ich hoffe, das hilft.
quelle