[R] Converting .grib to excel file
javad bayat
j@b@y@t194 @end|ng |rom gm@||@com
Wed Jun 26 09:36:20 CEST 2024
Dear all;
I used the terra package to export .grib data as an excel file but I could
not do it.
The grib file is readed and converted to raster correctly. It contains
hourly data of a complete year for 6 met parameters (365 * 24 * 6 =
52,560). In the "raster_data" it can be seen as "nlyr" ( dimensions : 1,
1, 52560 (nrow, ncol, nlyr) ).
It also contains the Date values which start from 01/01/2019 00:00 to
31/12/2019 23:00.
What I am trying to do is:
Export the data as an Excel file, ensuring that the met parameters are
placed in separate columns and sorted from the first hour on the first day
to the end of the date (31/12/2019 23:00).
Here are the codes:
> library(terra)
> grib_file <- "C:/Users/admin/Downloads/Met.grib"
> raster_data <- rast(grib_file)
> raster_data
class : SpatRaster
dimensions : 1, 1, 52560 (nrow, ncol, nlyr)
resolution : 0.25, 0.25 (x, y)
extent : 49.725, 49.975, 33.965, 34.215 (xmin, xmax, ymin, ymax)
coord. ref. : lon/lat Coordinate System imported from GRIB file
source : Met.grib
names : SFC (~[m/s], SFC (~[m/s], SFC (~e [C], SFC (~ [Pa], SFC (~)
[-], SFC (~n [m], ...
unit : m/s, m/s, C, Pa,
-, m, ...
time : 2019-01-01 to 2019-12-31 23:00:00 UTC
> raster_data[[1]]
class : SpatRaster
dimensions : 1, 1, 1 (nrow, ncol, nlyr)
resolution : 0.25, 0.25 (x, y)
extent : 49.725, 49.975, 33.965, 34.215 (xmin, xmax, ymin, ymax)
coord. ref. : lon/lat Coordinate System imported from GRIB file
source : Met.grib
name : SFC (Ground or water surface); 10 metre u wind component
[m/s]
unit :
m/s
time : 2019-01-01 UTC
> raster_data[[52560]]
class : SpatRaster
dimensions : 1, 1, 1 (nrow, ncol, nlyr)
resolution : 0.25, 0.25 (x, y)
extent : 49.725, 49.975, 33.965, 34.215 (xmin, xmax, ymin, ymax)
coord. ref. : lon/lat Coordinate System imported from GRIB file
source : Met.grib
name : SFC (Ground or water surface); Total precipitation [m]
unit : m
time : 2019-12-31 23:00:00 UTC
# Extracting data for each parameter
> param_names <- c("param1", "param2", "param3", "param4", "param5",
"param6")
> extracted_data <- extract(raster_data, param_names, df = TRUE)
#Error in (function (classes, fdef, mtable) :
#unable to find an inherited method for function ‘extract’ for signature
‘"SpatRaster", "character"’
> param_values <- lapply(raster_data, param_names)
#Error: std::bad_alloc
How can I do this?
I have no idea how to extract some of the .grib file to attach it.
Sincerely
On Tue, Jun 25, 2024 at 8:38 PM javad bayat <j.bayat194 using gmail.com> wrote:
> Dear Bert and Sara;
> I have searched on the internet and found some way to do this like python.
> But python is so complicated to me as it needs many steps to be done for
> reading and converting it.
> I will try terra package to convert it.
>
>
> On Tue, 25 Jun 2024, 15:15 javad bayat, <j.bayat194 using gmail.com> wrote:
>
>> Richard,
>> Many thanks for your email.
>> I had attached the grib file to the original email to R help team but it
>> seems you did not receive it.
>> Unfortunately, I do not know how to reduce the volume or extract some of
>> the grib file data to send it for you. The file has the volume of 6
>> Megabyte.
>> I can send it by email.
>> The file has 6 met parameters and Date (day/month/year hour:minute).
>> I want the exported file as excel contains 7 columns (Date + 6 met
>> parameters).
>>
>>
>> On Tue, 25 Jun 2024, 15:54 Richard O'Keefe, <raoknz using gmail.com> wrote:
>>
>>> Your message referred to an attached file but there was no attachment,
>>> I have no account at that service, so could not download a sample for
>>> myself. Does the licence for the data even allow you to send some of
>>> it in a message? Which parameters are you extracting? When you say
>>> "it didn't work", what actually happened? Which step went wrong and how?
>>>
>>>
>>> On Tue, 25 Jun 2024 at 20:33, javad bayat <j.bayat194 using gmail.com> wrote:
>>> >
>>> > Dear all;
>>> > I have downloaded meteorology data from "
>>> >
>>> https://cds.climate.copernicus.eu/cdsapp#!/dataset/reanalysis-era5-single-levels?tab=form
>>> "
>>> > as .grib format. It has hourly data of a complete year (every hour of
>>> every
>>> > day of 12 months) and has 6 meteorology parameters. The file has been
>>> > attached.
>>> > I am trying to convert it to an excel file that puts every parameter
>>> in a
>>> > separated column. For instance, the first col represents Date, 2nd
>>> > represents Temperature and so on.
>>> > Is there any way to do it?
>>> > I used these codes but did not work:
>>> > # install.packages("rNOMADS")
>>> >
>>> > library(rNOMADS)
>>> >
>>> > # Read GRIB data
>>> > grib_data <- ReadGrib("C:/Users/admin/Downloads/Met.grib")
>>> >
>>> > # Convert to a data frame
>>> > grib_df <- as.data.frame(grib_data)
>>> >
>>> > # Write the data frame to a CSV file
>>> > write.csv(grib_df, file = "output.csv")
>>> >
>>> >
>>> > I would be more than happy if anyone could help me.
>>> > Sincerely
>>> >
>>> > --
>>> > Best Regards
>>> > Javad Bayat
>>> > M.Sc. Environment Engineering
>>> > Alternative Mail: bayat194 using yahoo.com
>>> > ______________________________________________
>>> > R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>> > https://stat.ethz.ch/mailman/listinfo/r-help
>>> > PLEASE do read the posting guide
>>> http://www.R-project.org/posting-guide.html
>>> > and provide commented, minimal, self-contained, reproducible code.
>>>
>>
--
Best Regards
Javad Bayat
M.Sc. Environment Engineering
Alternative Mail: bayat194 using yahoo.com
[[alternative HTML version deleted]]
More information about the R-help
mailing list