Ich habe die folgende .NC4-Datei und für jeden Lat und lange möchte ich das Datum/Uhrzeit und den Wert extrahieren. Ich werde jede als CSV-Datei speichern.konvertieren NC-Daten in Zeitreihe CSV-Datei an jeder Koordinate/Rasterzelle
https://www.dropbox.com/s/p3j84rhbq7oo0o6/svc_MERRA2_100.tavg1_2d_lnd_Nx.19800101.nc4?dl=0
Meine Codes sind als
library(ncdf4)
library(RNetCDF)
#open nc file
dat.ncdf4 <- nc_open("svc_MERRA2_100.tavg1_2d_lnd_Nx.19800101.nc4")
#extracting variable of interest
prectot <- ncvar_get(dat.ncdf4, varid="PRECSNOLAND")
# get time dimension
timeDim <- ncvar_get(nc, "time")
# Put the time in a reader friendly format
label.time <- names(dat.ncdf4$dim)[1]
date.char <- date.char <- utcal.nc(dat.ncdf4$dim[[label.time]]$units, dat.ncdf4$dim[[label.time]]$vals, type="s")
date.POSIXlt <- strptime(date.char, format="%Y-%m-%d %H:%M:%S", tz="UTC")
timeDim <- as.POSIXct(date.POSIXlt)
# get lon/lat :
lonDim <- ncvar_get(dat.ncdf4, "lon")
latDim <- ncvar_get(dat.ncdf4, "lat")
# close netcdf file
nc_close(dat.ncdf4)
# The loop is to extract data for each lat and long
for(i in seq_along(latDim))
{
for(j in seq_along(lonDim))
{
# making the time series of date, precip, lat and long
d1 <- data.frame(time = timeDim, prectot = prectot, latitude = latDim[i], longitude = lonDim[j])
write.table(d1, paste("Prp ",latDim[i],lonDim[j],".csv"), append = F, row.names= FALSE,col.names=FALSE, sep=",")
d1 = NULL
}
}
Für jede Gitterzelle (Breitengrad und Längengrad) folgt erwarte ich, dass vier Spalten (Datum, den Wert, Breite und Länge) jedoch, wenn ich diesen Code lief Ich bekomme über 60 Spalten mit Daten für jede generierte CSV-Datei. Ihre Führung würde geschätzt, wie ich kann nicht herausfinden, was ich tue, falsch
prectot ist die Anordnung von Zahlen, lat x long x Datum, und Sie schreiben es jedes Mal. Wollen Sie einen Teil davon für jede Ihrer 48 CSV-Dateien auswählen? Sie wollten 48 CSV-Dateien, ja? – Spacedman
Ich möchte 48 CSV-Dateien, die Datum, Prectot und Lat enthalten und lange Prectot stammt aus. – nee
Und jede Datei wird 24 Zeilen haben? Eins für jedes Mal? In diesem Fall müssen Sie eine * Scheibe * von 'Prectot' nehmen, und schreiben Sie das, wahrscheinlich 'prectot [i, j,] 'ja? Testen Sie Ihren Code, indem Sie überprüfen, was 'd1' in Ihrer Schleife ist. – Spacedman