netcdf file

Allgemeine Statistik mit R, die Test-Methode ist noch nicht bekannt, ich habe noch keinen Plan!

Moderatoren: EDi, jogo

Julia_S

netcdf file

Beitrag von Julia_S »

Hallo,

ich arbeite gerade für meine Masterarbeit mit einem netcdf file mit täglichen Niederschlagsdaten. Ich habe noch nie mit diesem Format gearbeitet und bin gerade am verzweifeln... In der Datei sind 3 Dimensionen (Longitude, Latitude, Time) vorhanden, aber ich habe Schwierigkeiten die Dimension Time zu extrahieren...
Wenn ich die Datei in ArcMap importiere zeigt es mir aber auch ein falsches Datum an, deswegen habe ich nun zusätzliche Bedenken, dass etwas mit den Daten nicht stimmt. (Habe die Datei nochmals heruntergeladen, um Fehler beim Download ausschließen zu können)

Wenn ich wie untenstehend vorgehe, dann bekomme ich bei time einen Zahlencode und nicht das wirkliche Datum.
Wäre toll, wenn mir jemand helfen könnte :)

Vielen Dank schon mal!


cpath <- "/E-OBS/scPDSI.cru.3.24.bams.2016.GLOBAL.1901.2015_with.times.nc/"
ncname <- "scPDSI.cru.3.24.bams.2016.GLOBAL.1901.2015_with.times"
ncfname <- paste(ncpath, ncname, ".nc", sep="")
dname <- "rr" # note: rainfall

# open a NetCDF file
ncin <- nc_open(ncfname)
print(ncin)

attributes(ncin$var)

dat <- ncvar_get(ncin, attributes(ncin$var)$names[1])
dat

# get longitude and latitude
lon <- ncvar_get(ncin,"longitude")
nlon <- dim(lon)
head(lon)

lat <- ncvar_get(ncin,"latitude")
nlat <- dim(lat)
head(lat)

print(c(nlon,nlat))

# get time
time <- ncvar_get(ncin,"time")
time

tunits <- ncatt_get(ncin,"time","units")
nt <- dim(time)
nt
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: netcdf file

Beitrag von jogo »

Hallo Julia,

willkommen im Forum!
Julia_S hat geschrieben: Di Mai 15, 2018 1:05 pm Wenn ich wie untenstehend vorgehe, dann bekomme ich bei time einen Zahlencode und nicht das wirkliche Datum.
kannst Du das bitte zeigen? Schließlich haben wir keinerlei Daten zur Verfügung, um das Problem zu reproduzieren, siehe viewtopic.php?f=20&t=11
Bitte formatiere den Code in Deiner Nachricht entsprechend viewtopic.php?f=20&t=29

Meine Glaskugel sagt, es könnte so ähnlich sein wie in
https://stackoverflow.com/questions/343 ... -date-in-r

Gruß, Jörg
Julia_S

Re: netcdf file

Beitrag von Julia_S »

rr_day_2018_03_grid_ensmean.nc.gz
(309.54 KiB) 46-mal heruntergeladen
Dankeschön Jörg, ich hoffe das passt so :)
Die angehängte Datei ist jetzt nur für März 2018, da die anderen Dateien zu groß sind.
Obwohl die Datei nur für einen Monat im Jahr 2018 ist, zeigt es diese Information an:

time Size:31 *** is unlimited ***
standard_name: time
long_name: Time in days
units: days since 1950-01-01 00:00:00
calendar: standard

Leider bin ich auch mit deinem Link nicht wirklich weiter gekommen...

Code: Alles auswählen

ncpath <- "E-OBS/rr_day_2018_03_grid_ensmean.nc/"
ncname <- "rr_day_2018_03_grid_ensmean" 
ncfname <- paste(ncpath, ncname, ".nc", sep="")
dname <- "rr"  # note: rainfall

# open a NetCDF file
ncin <- nc_open(ncfname)
print(ncin)

attributes(ncin$var)

dat = ncvar_get(ncin, attributes(ncin$var)$names[1])
dat

# get longitude and latitude
lon <- ncvar_get(ncin,"longitude")
nlon <- dim(lon)
head(lon)

lat <- ncvar_get(ncin,"latitude")
nlat <- dim(lat)
head(lat)

print(c(nlon,nlat))

# get time
time <- ncvar_get(ncin,"time")
time

tunits <- ncatt_get(ncin,"time","units")
nt <- dim(time)
nt
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: netcdf file

Beitrag von jogo »

Hallo Julia,

aus welchem Paket stammt die Funktion nc_open() :?:
https://cran.r-project.org/web/packages ... index.html :?:

Gruß, Jörg
Julia_S

Re: netcdf file

Beitrag von Julia_S »

Hallo Jörg,

entschuldige, habe vergessen die Pakete noch hinzuzufügen. Ich habe ehrlich gesagt so viele Sachen ausprobiert, dass ich schon ein wenig den Überblick verloren habe...

Code: Alles auswählen

library(chron)
library(RColorBrewer)
library(lattice)
library(ncdf.tools)
library(ncdf4)
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: netcdf file

Beitrag von jogo »

Hallo Julia,

es hat doch etwas mit dem von mir angegebenen Link zu tun - zumindest kam ich beim Lesen der Dokumentation der genannten Funktion auf:

Code: Alles auswählen

# get time
time <- ncvar_get(ncin,"time")
time
as.POSIXct(time*86400, origin="1950-01-01")
Gruß, Jörg
p.s.: es geht doch nichts über eine gut funktionierende Glaskugel. ;)
Julia_S

Re: netcdf file

Beitrag von Julia_S »

Das ist ja genial!!

Vielen vielen Dank :D
Julia_S

Re: netcdf file

Beitrag von Julia_S »

Irgendwie komme ich mit diesem Format immer noch nicht weiter :|
Meine Datei besitzt tägliche Niederschlagsdaten über einige Jahre für Europa, die ich in monatliche Niederschlagssummen umwandeln muss und am besten als .csv abspeichern. Ich brauche das dann nur für Frankreich (shapefile habe ich), aber wenn ich die Datei mit crop ausschneide, dann sind die Daten nur noch für den ersten Tag verfügbar und die anderen hinterlegten Daten sind verschwunden...

Hat damit jemand Erfahrung?
Würde mir sehr helfen, danke!
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: netcdf file

Beitrag von EDi »

Probiere es mal mit brick() aus dem raster paket zu laden. Das sollte dir ein raster mit vielen Bändern geben (ungetestet)

Danach kannst du mit crop() /mask() Frankreich rausziehen und den Mittelwert o.ä. berechnen.
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Julia_S

Re: netcdf file

Beitrag von Julia_S »

Danke!
Antworten