Ich bin ein absoluter Anfänger in Bezug auf geografische Daten, bitte verzeihen Sie mir, wenn die Frage nicht zutreffend ist.
Ich habe Daten von NCDC NARR heruntergeladen und konnte sie mithilfe des raster
Pakets in R laden . Ich möchte eine Liste mit Breitengrad, Längengrad und Wert erhalten. Ich verstehe, dass rasterToPoints()
das genau das tun sollte, was ich will, aber meine Breiten- und Längengrade sehen seltsam aus:
r <- raster(myfile)
data_matrix <- rasterToPoints(r)
head(data_matrix)
x y value
[1,] -5405401 4347242 70
[2,] -5372938 4347242 88
[3,] -5340475 4347242 76
[4,] -5308012 4347242 85
[5,] -5275549 4347242 87
[6,] -5243086 4347242 88
Ich nehme an, ich sollte etwas mit der Projektion machen, die derzeit Lambert Conformal Conic (LCC) ist. Hier finden Sie weitere Informationen zum Raster.
> r
class : RasterLayer
dimensions : 277, 349, 96673 (nrow, ncol, ncell)
resolution : 32463, 32463 (x, y)
extent : -5648874, 5680713, -4628777, 4363474 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=lcc +lat_1=50 +lat_2=50 +lat_0=50 +lon_0=-107 +x_0=0 +y_0=0 +a=6371200 +b=6371200 +units=m +no_defs
data source : mypath-to-file
names : value
Was soll ich tun, um echte US-amerikanische Längen- und Breitengrade zu erhalten?
Rufen Sie die Koordinaten der Zellzentren ab und erstellen Sie ein räumliches Objekt:
Verwandle die Punkte in dein gewünschtes Ziel:
Die Werte sind bereits als Spalten in diesem SpatialPointsDataFrame kopiert.
Holen Sie sich zum Abschluss einen data.frame:
Das SGAT-Paket enthält eine allgemeine Implementierung, siehe Funktion
lonlatFromCell
hier:https://github.com/SWotherspoon/SGAT/blob/master/R/Raster.R
quelle
> llpts$layer1 <- values(r[[1]]) Error in
[[<-. Data.frame(
* tmp *, name, value = c(NA, NA, NA, NA, NA, : replacement has 96673 rows, data has 95025
Es scheint, dass Sie dort projizierte Koordinaten haben (nicht geografische Breite / Länge, auch bekannt als GCS-Koordinaten). Es war Ihnen wahrscheinlich nicht klar, dass dies das Problem war. Siehe diesen Beitrag. Konvertierung des geografischen Koordinatensystems in R
quelle
lonlat_r <- projectRaster(r, crs="+init=epsg:4326")
. Das Ausmaß des neuen Rasters ist-181.3232, 181.4938, -1.590457, 87.76154 (xmin, xmax, ymin, ymax)
jedoch weit von dem entfernt, was ich von den USA erwarten würde (das sollte irgendwo zwischen 30 und 70 und -60 bis -160 liegen). Ich hätte etwas falsch verstehen sollen.