GRIB конвертация
-
- Новоприбывший
- Сообщения: 11
- Зарегистрирован: 19 ноя 2022, 07:59
- Репутация: 0
- Откуда: Mars
GRIB конвертация
Здраствуйте. Не могу вытянуть данные из GRIB для Excel, работаю из под Windows 10. Установил Wgrib2, но застопорился на командах. Может ли кто-то описать подробно шаг действий?
UPD
Благодарю gamm и tikhpetr за помощь. Эта страница одна из первых в гугле при поиске конвертации GRIB. По этому я немного буду её дополнять по мере решения задачи, если конечно админы не против. Авось кому то поможет.
Оказывается софт открывающий напрямую netcdf в excel существует. Он очень легкий в пользовании, правда придется потрудиться с координатами и временем. http://netcdf4excel.github.io/ Можно ещё с Panoply вытянуть CSV, но учтите, что там таблица вся в один рядок.
UPD
Благодарю gamm и tikhpetr за помощь. Эта страница одна из первых в гугле при поиске конвертации GRIB. По этому я немного буду её дополнять по мере решения задачи, если конечно админы не против. Авось кому то поможет.
Оказывается софт открывающий напрямую netcdf в excel существует. Он очень легкий в пользовании, правда придется потрудиться с координатами и временем. http://netcdf4excel.github.io/ Можно ещё с Panoply вытянуть CSV, но учтите, что там таблица вся в один рядок.
Последний раз редактировалось racing1063 22 ноя 2022, 07:50, всего редактировалось 1 раз.
-
- Гуру
- Сообщения: 4056
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1054
- Ваше звание: программист
- Откуда: Казань
Re: GRIB конвертация
1) Ёксель - зла (тем более для растров)
2) Wgrib2 - что конкретно и в какой среде используется?
3) У GRIB несколько редакций формата, упомянутая библиотека работает только с одним
2) Wgrib2 - что конкретно и в какой среде используется?
3) У GRIB несколько редакций формата, упомянутая библиотека работает только с одним
-
- Новоприбывший
- Сообщения: 11
- Зарегистрирован: 19 ноя 2022, 07:59
- Репутация: 0
- Откуда: Mars
Re: GRIB конвертация
1) Решил использовать Excel начальном этапе.gamm писал(а): ↑19 ноя 2022, 13:211) Ёксель - зла (тем более для растров)
2) Wgrib2 - что конкретно и в какой среде используется?
3) У GRIB несколько редакций формата, упомянутая библиотека работает только с одним
2) wgrib2 v3.0.2 3/2021. Пробовал ещё CDO поставить, но с ним возникли проблемы. Wgrib2 получилось через cygwin запустить. Но не могу подобрать правильные команды для открытия Grib файла и конвертации.
3) Исходные данные брал с https://cds.climate.copernicus.eu/cdsap ... s?tab=form
GRIB2, там есть ещё возможность NetCDF.
-
- Гуру
- Сообщения: 4056
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1054
- Ваше звание: программист
- Откуда: Казань
Re: GRIB конвертация
ответа на п.2 непонятный. Утилита в командной строке?
Вообще, GRIB формат старый и потому мутный, лучше NetCDF использовать, он более распространен, его почти все читать умеют (это HDF на самом деле). И утилиты под него попадались, на джаве, они от системы не зависят.
Вообще, GRIB формат старый и потому мутный, лучше NetCDF использовать, он более распространен, его почти все читать умеют (это HDF на самом деле). И утилиты под него попадались, на джаве, они от системы не зависят.
-
- Новоприбывший
- Сообщения: 11
- Зарегистрирован: 19 ноя 2022, 07:59
- Репутация: 0
- Откуда: Mars
-
- Гуру
- Сообщения: 4056
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1054
- Ваше звание: программист
- Откуда: Казань
Re: GRIB конвертация
я их не помню, я GRIB сам парсил много лет назад на С++. Поискал, не нашел, давно это было, лет 20 прошло ... кстати, в win10 есть встроенный линух, там еще попробуйте. И смотрите, чтобы ни в именах, ни в путях, не было русских букв.
P.S. Из более-менее свежего нашел, что в R есть библиотека ncdf4, я ее использовал для NetCDF (не GRIB). Но поскольку коперникус меня не пускает, попробовать файлы оттуда не могу. Ниже пример чтения netcdf в R, вытаскивает матрицу по имени, имена выводит print.
Код: Выделить всё
library(ncdf4)
ncin <- nc_open(ncfname)
print(ncin)
lon <- ncvar_get(ncin,"Longitude")
(nlon <- dim(lon))
str(lon)
nc_close(ncin)
-
- Гуру
- Сообщения: 1087
- Зарегистрирован: 30 окт 2014, 16:33
- Репутация: 153
- Откуда: г. Жуковский МО
Re: GRIB конвертация
racing1063, Здравствуйте! М.б., выложите Ваши данные. Есть одна мысль.
-
- Новоприбывший
- Сообщения: 11
- Зарегистрирован: 19 ноя 2022, 07:59
- Репутация: 0
- Откуда: Mars
-
- Новоприбывший
- Сообщения: 11
- Зарегистрирован: 19 ноя 2022, 07:59
- Репутация: 0
- Откуда: Mars
Re: GRIB конвертация
На командах застопорился, не могли бы подробнее объяснить. Сам .nc файл вроде считало, но эти команды не получается
- Вложения
-
- Безымянный.png (145.88 КБ) 1411 просмотров
-
- Гуру
- Сообщения: 4056
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1054
- Ваше звание: программист
- Откуда: Казань
Re: GRIB конвертация
для начала вместо картинок скопируйте текстовый выхлоп из окна консоли (там через правую кнопку, выделить, скопировать, и вставьте вставьте как код, чтобы простыня не получилась - см. мое сообщение).racing1063 писал(а): ↑20 ноя 2022, 16:23На командах застопорился, не могли бы подробнее объяснить
Результат
Код: Выделить всё
R version 3.4.4 (2018-03-15) -- "Someone to Lean On"
Copyright (C) 2018 The R Foundation for Statistical Computing
Platform: x86_64-w64-mingw32/x64 (64-bit)
R -- это свободное ПО, и оно поставляется безо всяких гарантий.
Вы вольны распространять его при соблюдении некоторых условий.
Введите 'license()' для получения более подробной информации.
R -- это проект, в котором сотрудничает множество разработчиков.
Введите 'contributors()' для получения дополнительной информации и
'citation()' для ознакомления с правилами упоминания R и его пакетов
в публикациях.
Введите 'demo()' для запуска демонстрационных программ, 'help()' -- для
получения справки, 'help.start()' -- для доступа к справке через браузер.
Введите 'q()', чтобы выйти из R.
> library(ncdf4)
>
> ncfname<-"d:/temp/adaptor.mars.internal-1668940949.9105413-16986-18-9f9ad303-bce8-4d2e-a660-58d7e98b87ec.nc"
> ncin <- nc_open(ncfname)
> print(ncin)
File d:/temp/adaptor.mars.internal-1668940949.9105413-16986-18-9f9ad303-bce8-4d2e-a660-58d7e98b87ec.nc (NC_FORMAT_64BIT):
6 variables (excluding dimension variables):
short r[longitude,latitude,time]
scale_factor: 0.00172804588455364
add_offset: 59.8856196463387
_FillValue: -32767
missing_value: -32767
units: %
long_name: Relative humidity
standard_name: relative_humidity
short q[longitude,latitude,time]
scale_factor: 2.9330351547337e-07
add_offset: 0.0100701366633867
_FillValue: -32767
missing_value: -32767
units: kg kg**-1
long_name: Specific humidity
standard_name: specific_humidity
short crwc[longitude,latitude,time]
scale_factor: 8.59284454420678e-09
add_offset: 0.000281553144335479
_FillValue: -32767
missing_value: -32767
units: kg kg**-1
long_name: Specific rain water content
short t[longitude,latitude,time]
scale_factor: 0.00078075227843224
add_offset: 284.287451420736
_FillValue: -32767
missing_value: -32767
units: K
long_name: Temperature
standard_name: air_temperature
short u[longitude,latitude,time]
scale_factor: 0.000702461718952665
add_offset: -0.0815279886719763
_FillValue: -32767
missing_value: -32767
units: m s**-1
long_name: U component of wind
standard_name: eastward_wind
short v[longitude,latitude,time]
scale_factor: 0.00075380462315384
add_offset: 1.00058440139936
_FillValue: -32767
missing_value: -32767
units: m s**-1
long_name: V component of wind
standard_name: northward_wind
3 dimensions:
longitude Size:73
units: degrees_east
long_name: longitude
latitude Size:33
units: degrees_north
long_name: latitude
time Size:1830
units: hours since 1900-01-01 00:00:00.0
long_name: time
calendar: gregorian
2 global attributes:
Conventions: CF-1.6
history: 2022-11-20 10:42:57 GMT by grib_to_netcdf-2.25.1: /opt/ecmwf/mars-client/bin/grib_to_netcdf.bin -S param -o /cache/data6/adaptor.mars.internal-1668940949.9105413-16986-18-9f9ad303-bce8-4d2e-a660-58d7e98b87ec.nc /cache/tmp/9f9ad303-bce8-4d2e-a660-58d7e98b87ec-adaptor.mars.internal-1668940468.0099413-16986-29-tmp.grib
> var.lon <- ncvar_get(ncin,"longitude")
> (dim.lon <- dim(var.lon))
[1] 73
> str(var.lon)
num [1:73(1d)] 22 22.2 22.5 22.8 23 ...
> var.lat <- ncvar_get(ncin,"latitude")
> (dim.lat <- dim(var.lat))
[1] 33
> str(var.lat)
num [1:33(1d)] 52 51.8 51.5 51.2 51 ...
> var.r <- ncvar_get(ncin,"r")
> (dim.r <- dim(var.r))
[1] 73 33 1830
> str(var.r)
num [1:73, 1:33, 1:1830] 84 83.9 83.6 84 85 ...
> lon.pos = var.lon
> lat.pos = rev(var.lat)
> val.mtr = var.r[,length(var.lat):1,1]
> image(lon.pos,lat.pos,val.mtr,main="Relative humidity",xlab="lon",ylab="lat",asp=1)
> nc_close(ncin)
>
Код: Выделить всё
library(ncdf4)
ncfname<-"d:/temp/adaptor.mars.internal-1668940949.9105413-16986-18-9f9ad303-bce8-4d2e-a660-58d7e98b87ec.nc"
ncin <- nc_open(ncfname)
print(ncin)
var.lon <- ncvar_get(ncin,"longitude")
(dim.lon <- dim(var.lon))
str(var.lon)
var.lat <- ncvar_get(ncin,"latitude")
(dim.lat <- dim(var.lat))
str(var.lat)
var.r <- ncvar_get(ncin,"r")
(dim.r <- dim(var.r))
str(var.r)
lon.pos = var.lon
lat.pos = rev(var.lat)
val.mtr = var.r[,length(var.lat):1,1]
image(lon.pos,lat.pos,val.mtr,main="Relative humidity",xlab="lon",ylab="lat",asp=1)
nc_close(ncin)
-
- Новоприбывший
- Сообщения: 11
- Зарегистрирован: 19 ноя 2022, 07:59
- Репутация: 0
- Откуда: Mars
Re: GRIB конвертация
gamm, получилось! Только как теперь это экспортировать у csv таблицу.
-
- Гуру
- Сообщения: 4056
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1054
- Ваше звание: программист
- Откуда: Казань
Re: GRIB конвертация
1. Зачем ???
2. tmp=as.double(mtr) #в один столбец
3. write.table(mtr,"foo.csv",sep=";") # как матрицу
2. tmp=as.double(mtr) #в один столбец
3. write.table(mtr,"foo.csv",sep=";") # как матрицу
-
- Новоприбывший
- Сообщения: 11
- Зарегистрирован: 19 ноя 2022, 07:59
- Репутация: 0
- Откуда: Mars
Re: GRIB конвертация
gamm, без "mtr" получилось, но я не понял куда записало csv файл.
> write.table("foo.csv",sep=";") # как матрицу
"x"
"1";"foo.csv"
С mtr не хочет, выдаёт ошибку
> write.table(mtr,"foo.csv",sep=";") # как матрицу
Error in is.data.frame(x) : object 'mtr' not found
> write.table("foo.csv",sep=";") # как матрицу
"x"
"1";"foo.csv"
С mtr не хочет, выдаёт ошибку
> write.table(mtr,"foo.csv",sep=";") # как матрицу
Error in is.data.frame(x) : object 'mtr' not found
-
- Гуру
- Сообщения: 1087
- Зарегистрирован: 30 окт 2014, 16:33
- Репутация: 153
- Откуда: г. Жуковский МО
Re: GRIB конвертация
racing1063, У меня полное фиаско! GM в кататонический цикл, пытаясь открывать одно и то же. Увы!
-
- Гуру
- Сообщения: 4056
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1054
- Ваше звание: программист
- Откуда: Казань
Re: GRIB конвертация
mtr - это матрица, которую нужно сохранить. Исходник трехмерный, долгота, шгирота, время. Я в примере брал двумерное сечение с фиксированным временем, остается долгота и широта. Под mtr понимается это сечение, если брать пример, то нужно присвоитьgamm, без "mtr" получилось, но я не понял куда записало csv файл.
> write.table("foo.csv",sep=";") # как матрицу
"x"
"1";"foo.csv"
С mtr не хочет, выдаёт ошибку
mtr = val.mtr
сохраняется в файл foo.csv, путь пропишите куда надо, поумолчанию в Документы (посмотрите выхлоп команды getwd())
ясное дело не нашла, имелось в виду нужное сечение нужного массива, массивов там много, все надписаны (см. выхлоп print).> write.table(mtr,"foo.csv",sep=";") # как матрицу
Error in is.data.frame(x) : object 'mtr' not found
Файлы csv с разделителем ; открываются Ёкселем (после двойного чук-чук левой кнопкой мышки).
Кто сейчас на конференции
Сейчас этот форум просматривают: Ahrefs [Bot] и 10 гостей