Jestem absolutnym początkującym użytkownikiem danych geograficznych, więc proszę wybacz mi, jeśli pytanie nie jest właściwe.
Pobrałem dane z NCDC NARR i udało mi się załadować do R przy użyciu raster
pakietu. Chciałbym uzyskać listę z szerokością, długością i wartością. Rozumiem, że rasterToPoints()
powinienem robić dokładnie to, co chcę, jednak moje wartości szerokości i długości geograficznej wyglądają dziwnie:
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
Przypuszczam, że powinienem coś zrobić z projekcją, którą jest obecnie Lambert Conformal Conic (LCC). Oto dalsze informacje o rastrze.
> 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
Co mam zrobić, aby uzyskać rzeczywiste szerokości i długości geograficznej w USA?
Uzyskaj współrzędne centrów komórek i utwórz obiekt przestrzenny:
Przekształć punkty w pożądany cel:
Wartości są już skopiowane jako kolumny w tym SpatialPointsDataFrame.
Teraz, aby zakończyć, zdobądź data.frame:
Istnieje ogólna implementacja tego w pakiecie SGAT, patrz funkcja
lonlatFromCell
tutaj:https://github.com/SWotherspoon/SGAT/blob/master/R/Raster.R
źródło
> 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
Wygląda na to, że masz tam rzutowane współrzędne (nie szerokość / długość geograficzna, czyli współrzędne GCS). Prawdopodobnie nie było dla ciebie jasne, że to był problem. Zobacz ten post. Przekształcanie układu współrzędnych geograficznych w R.
źródło
lonlat_r <- projectRaster(r, crs="+init=epsg:4326")
. Jednak zakres nowego rastra jest-181.3232, 181.4938, -1.590457, 87.76154 (xmin, xmax, ymin, ymax)
daleki od tego, czego oczekiwałbym od USA (który powinien wynosić od 30 do 70 i od -60 do -160). Powinienem coś źle zrozumieć.