У меня есть файлы HDF5, глобальное покрытие температуры. Файл был конвертирован из netcdf. В процессе преобразования была установлена долгота от 0 до 360 и дополнительно перевернута карта, так что север теперь юг. Я использовал HDFView, и я могу отобразить файл, но нет возможности взаимодействовать с картой, поэтому найдите определенную комбинацию широты и долготы. Файл неправильно отображается в arcmap даже после установки правильной проекции. Могу ли я в любом случае отобразить данные и щелкнуть местоположение и извлечь широту/долготу или нарисовать точку в определенной широте/долготе?
найти точку широты/долготы в hdf5
Ответы (2)
Краткий ответ: Нет, это невозможно.
Длинный ответ: в отличие от NetCDF, HDF5 является форматом файла общего назначения. Он позволяет хранить n-мерные числовые массивы (называемые наборами данных), сгруппированные в папки (отсюда и название «иерархический»). Ничего больше. Семантики нет. Для HDF5 ваши данные не являются «картой», это просто массив. Поэтому HDFView не «знает» о широтах и долготах. Эта информация была потеряна в процессе преобразования NetCDF => HDF5. На самом деле, массивы широты и долготы, вероятно, все еще находятся в файле, но они больше не имеют никакого собственного значения. NetCDF, с другой стороны, навязывает общую модель данных, включая системы координат. Вот почему различные инструменты визуализации позволяют вам взаимодействовать с вашими данными более изощренным образом.
Какой инструмент вы использовали для преобразования вашего NetCDF-файла в HDF5? Вы можете использовать HDF5 для хранения метеорологических данных (я так делаю, работает хорошо). Но тогда вам придется написать свои собственные инструменты для пространственной привязки и визуализации. Ознакомьтесь с проектом h5py, если вы увлекаетесь Python.
Как сказал @heron13, HDF5 — это формат файла.
Какой версии NetCDF был ваш файл? В версии 4 в качестве уровня хранения используется расширенная версия HDF5.
Соответствует ли ваш файл NetCDF соглашениям CF или COARDS? Если это так, я бы посмотрел на программу, которую вы использовали для преобразования в HDF5, поскольку HDF5 может поддерживать те же соглашения. Для пример.
Как только вы подтвердите, что соглашения находятся в файле HDF5, arcmap
предназначен для поддержите и их (извините, у меня нет доступа к arcmap
для подтверждения).
Вот посмотрите на файл NetCDF с соглашениями CF:
$ ncdump tos_O1_2001-2002.nc | less
netcdf tos_O1_2001-2002 {
dimensions:
lon = 180 ;
lat = 170 ;
time = UNLIMITED ; // (24 currently)
bnds = 2 ;
variables:
double lon(lon) ;
lon:standard_name = "longitude" ;
lon:long_name = "longitude" ;
lon:units = "degrees_east" ;
lon:axis = "X" ;
lon:bounds = "lon_bnds" ;
lon:original_units = "degrees_east" ;
...
А вот вид того же файла только с использованием h5dump
:
$ h5dump tos_O1_2001-2002.nc | less
HDF5 "tos_O1_2001-2002.nc" {
GROUP "/" {
ATTRIBUTE "Conventions" {
DATATYPE H5T_STRING {
STRSIZE 6;
STRPAD H5T_STR_NULLTERM;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SCALAR
DATA {
(0): "CF-1.0"
}
}
...
Еще один вопрос: есть ли причина, по которой вы не используете файл NetCDF в arcmap
?