Je suis un débutant absolu des données géographiques, alors s'il vous plaît, pardonnez-moi si la question n'est pas appropriée.
J'ai téléchargé des données depuis NCDC NARR et j'ai réussi à charger dans R à l'aide du raster
package. Je voudrais obtenir une liste avec latitude, longitude et valeur. Je comprends que cela rasterToPoints()
devrait faire exactement ce que je veux, cependant, mes valeurs de latitude et de longitude semblent étranges:
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
Je suppose que je devrais faire quelque chose avec la projection qui est actuellement la conique conforme de Lambert (LCC). Voici d'autres informations sur le 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
Que dois-je faire pour obtenir des valeurs réelles de latitude et de longitude américaines?
Obtenez les coordonnées des centres cellulaires et créez un objet spatial:
Transformez les points en cible souhaitée:
Les valeurs sont déjà copiées sous forme de colonnes sur ce SpatialPointsDataFrame.
Maintenant, pour terminer, obtenez un data.frame:
Il y a une implémentation générale de cela dans le package SGAT, voir la fonction
lonlatFromCell
ici:https://github.com/SWotherspoon/SGAT/blob/master/R/Raster.R
la source
> 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
Il semble que vous ayez des coordonnées projetées là-bas (pas Latitude / Longitude alias coordonnées GCS). Ce n'était probablement pas clair pour vous que c'était le problème. Voir cet article. Conversion du système de coordonnées géographiques dans R
la source
lonlat_r <- projectRaster(r, crs="+init=epsg:4326")
. Cependant, l'étendue du nouveau raster est-181.3232, 181.4938, -1.590457, 87.76154 (xmin, xmax, ymin, ymax)
loin de ce que j'attendrais des États-Unis (qui devrait se situer entre 30 et 70 et -60 à -160). J'aurais dû mal comprendre quelque chose.