Задача: взять данные, которые распространяются в виде жуткой кучи бинарников и сделать из неё один красивый, легко обрабатываемый файл netCDF
?нструмент: NCL
В незапамятные времена, когда интернет у всех был медленным и дисковое пространство было на вес золота, королём форматов для распространения данных был, так называемый, бинарный формат. Это обычная последовательность нулей и единиц, которая не содержит в себе никакой информации о данных находящихся внутри. Чтобы «расшифровать» его вам нужно добыть информацию о структуре файла, о порядке байтов (endianness), о типе данных (float, integer), о том не умножены ли данные на какое-нибудь значение, что за единицы измерения используются, что за координаты, за какую дату и время эти данные и так далее и тому подобное. Геморрой. Единственное достоинство бинарного формата это размер получающихся файлов, он сравнительно мал.
Прогресс не стоял на месте и были изобретены, так называемые, self-describing форматы, одним из которых является netCDF. Преимущество этих форматов в том, что вам не надо пытать создателей файлов для того, чтобы получить информацию о его содержании, в идеале вся необходимая информация должна уже содержаться в самом файле. Это позволяет создавать приложения однообразно работающие с различными данными представленными в self-describing форматах, а не заново изобретать велосипед для каждого нового бинарника.
Размер файлов netCDF больше чем бинарных, но если это было очень важным в 90е, то в 2000х большинству нет разницы качать один или два мегабайта, телефонные модемы постепенно вымирают и слава богу. Тем не менее, некоторые несознательные граждане продолжают предоставлять данные в бинарном формате, то-ли по привычке, то-ли ленясь изменять схемы обработки, работающие с 90х (работает, не трогай). Ещё одной причиной может быть то, что создание правильного netCDF файла это не самая простая задача (в отличии от его чтения).
Далее я приведу код для довольно простого создания netCDF файла из бинарных при помощи языка программирования для наук о Земле NCL о котором я рассказывал в одном из предыдущих постов.
Read more »