Archive for the 'Визуализация данных' Category

Создание карты для Google Earth при помощи Python

sst_ge_koldunovnet_top.pngЗадача: отобразить наши данные на Google Earth
?нструменты: Python, PyNGL, convert

Я почему-то всегда думал что создание карт для Google Earth это занятие для избранных. С такой помпой очередной институт всегда анонсировал что его данные теперь и на Google Eatrh, что мне казалось группа программистов денно и ношно трудилась над этой непростой задачей год и вот теперь, наконец, долгожданный .kml файл увидел свет.

При ближайшем рассмотрении всё оказалось просто до тривиальности.

Собственно создание карты будет проводиться при помощи PyNGL, питоновского модуля позволяющего отображать двумерные данные на карте. Основы работы с этим модулем описаны в данном блоге и могут быть найдены по тегу PyNGL.
После мы обрежем карту при помощи convert и создадим простейший .kml файл, который и «натянет» наше изображение на Google Earth.

Поехали.
Read more »

NCL — язык программирования для наук о Земле

ncl05.pngЗадача: проводить анализ гео данных и их визуализацию средствами одного инструмента
?нструмент: NCL (NCAR Command Language)

Моделирование атмосферы, океана а также других элементов земной системы уже в начале 90х годов было развито довольно хорошо и стало производить такое количество данных, что для обработки всего этого зоопарка переменных потребовалось создать специальный язык.
NCL это интерпретируемый, объектно ориентированный язык программирования, который предназначен специально для людей занимающихся анализом данных привязанных на сетку связанную с географическими координатами, попросту говоря с Землей, и в особенности модельеров. Не могу не заметить что NCL это прародитель так нежно любимых мною PyNGL/PyNIO.

В дополнение к обычным свойствам, присущим языкам программирования, NCL также обладает средствами для манипуляции метаданными, тонкой настройки визуализации, импорта данных в различных форматах широко используемых в геонауках и поддержкой матричной алгебры.

В NCL включены более 600 функций и процедур облегчающих жизнь человека который видит перед собой террабайтные массивы данных и понимает что что-то с этим ему придётся делать иначе диплома не видать как своих ушей. Среди них:

  • те что используются специально с климатическими и модельными данными
  • для расчёта эмпирических ортогональных функций, трансформаций Фурье, сингулярного разложения, осреднения, стандартного отклонения, синусов, косинусов, логорифмов, минимумов, максимумов и так далее.
  • получения и трансформации временной информации
  • отображения примитивов (линий, залитых площадей, маркеров), спецсимволов для метеокарт, изоповерхностей и других графических объектов
  • интерполяция, аппроксимация и регридинг в одном двух и трёх измерениях
  • облегчённый анализ скалярных и векторных значений глобальных геофизических величин

Сегодня я расскажу как поставить NCL и написать в нём несложную программу.
Read more »

Ferret — инструмент для анализа гидрометеорологических данных

Ferret - инструмент для анализа гидрометеорологических данныхЗадача: быстро анализировать данные, проверять догадки, создавая карты пространственного и временного распределения характеристик в различных комбинациях
?нструмент: Ferret

Ferret — это интерактивная среда для визуализации и анализа больших наборов метеорологических и океанологических данных, то есть, он может работать с любыми гридированными данными, будь-то вывод моделей или спутниковые продукты. Работает ferret по утверждению создателей на всём, но под виндоуз вам придётся попотеть, чтобы его завести. Можно обрабатывать данные как находящиеся на вашем компьютере, так и данные лежащие в интернете при помощи протокола OPeNDAP. Ferret предлагает подход подобный тому, что используется в пакете Mathematica: новые переменные создаются интерактивно как математические выражения. Расчёты могут быть сделаны для произвольно выбранных районов.

Несмотря на то, что разработчики уверяют, что их детище производит иллюстрации качества пригодного для использования в научных публикациях, это, на мой взгляд, не так. Хоть некоторые действительно вставляют графику Ferret в свои работы, на мой взгляд до уровня PyNGL или GMT ей как до луны. Но, в роли инструмента для анализа ferret очень удобен и тут можно закрыть глаза на качество вывода. Для того, чтобы проверить свою гипотезу или взглянуть на то, не слишком ли далеко модель отдрейфовала от реальности, совсем не нужно располагать графикой высшего разряда, вполне достаточно адекватных картинок. Тут главное, чтобы вы могли создавать эти картинки быстро и интерактивно, а в этом ferret мало кому уступит первенство.
Read more »

Matplotlib (pylab) простые вещи 2

Задача: продолжить получать графику высокого качества не выходя из питона 🙂
?нструмент: Matplotlib

Это продолжение предыдущего поста. Сегодня мы рассмотрим, как отобразить два графика в одном окне, как это сделать в разных окнах, как добавить математические выражения в подписи к осям и в любое место графика, а также, как подписать какую-нибудь деталь на графике, которая вам особенно нравится.
Read more »

Matplotlib (pylab) простые вещи

Задача: получить графику высокого качества не выходя из питона
?нструмент: Matplotlib

Этим постом я начинаю серию вольных переводов избранных отрывков документации к Matplotlib.
Это питоновская библиотека для создания двухмерных графиков высокого качества (publication quality). Сделана с таким расчётом чтобы переход на неё доставил минимальные затруднения опытным пользователям матлаба. Как говориться на сайте библиотеки, Matplotlib старается сделать простые вещи простыми а сложные вещи возможными.

Как выглядит создаваемая графика можно посмотреть тут
Как устанавливать библиотеку я уже писал в предыдущем посте

Начнём с простого графика и контроля свойств линии.
Read more »

Отображение батиметрии GEBCO

Задача: быстро вручную создавать батиметрические карты океана на основе одноминутных данных GEBCO
?нструмент: Программа поставляемая вместе с гридом GEBCO

GEBCO это General Bathymetric Chart of the Oceans, то есть данные по которым можно строить карту дна океана. Разрешение у этого грида одна минута, что является рекордом для глобальных данных такого рода.
Поставляются данные в правильном формате netCDF и любая нормальная программа понимающая данный формат их считает. Но поскольку эти программы в большинстве своём работают из командной строки, да и не всегда загрузка и отображение данных там это тривиальное занятие, нужен способ быстро тыкая мышкой получить примерное представление о рельефе дна определённой области.

Для этого подходит программа поставляемая вместе с данными, точное название которой я так и не выяснил. К сожалению это программа для виндоуз, но и под вайном оно вполне себе работает, так что пользоваться линуксоиды ей тоже могут.

Далее следуют инструкции по скачиванию данных и программы, а также иллюстрация простейшего их использования.
Read more »

Нормализуем углы в PyNGL

Задача: Сделать так чтобы наши координаты имели вид по долготе [0.,360.) и по широте [-180.,180.)
Решение: функция пингля Ngl.normalize_angle

Эта функция пингля делает всю работу.

Ngl.normalize_angle(angle, option)

где angle — понятное дело угол, а option — может принимать значение 0 или не 0.
Если 0 то мы имеем дело с долготами, если нет то с широтами.

Мой код выглядит следующим образом:
Read more »

Вышли новые версии PyNIO и PyNGL

clouds_main.pngСостоялся долгожданный релиз замечательных питоновских пакетов для обработки и отображения данных PyNIO и PyNGL. Теперь они распространяются по отдельности и их лицензия стала открытой, что позволяет наедятся на включение в основные дистрибутивы.

Номер новых версий 1.3.0b1, и они обладают следующими нововведениями:

— Добавлена поддержка masked aarays
— Добавлено расширенное индексирование в PyNIO
— Новые аналитические функции в PyNGL
— Новые рутины визуализации в PyNGL

Подробнее под катом
Read more »

Простой график исчезновения льда в Арктике при помощи PyNGL

Задача: Нарисовать xy график для нескольких функций. Масштаб по оси ординат одинаковый.

?нструменты: Python, PyNGL

График будет простой как тапок:
sie_1900_2100.jpg

Единственная сложность которая может возникнуть это подпись к осям, но и это не большая проблема.

Для начала скрипт:
Read more »

Океанская погода

Начали потихоньку делать проект по размещению оперативной информации об обстановке в океане на OceanographersRU. Вызван он был тем что гидрометовские карты нам не понравились. ? способ размещения инфы тоже восторга не вызвал.

?сточники данных все открытые (кроме некоторых прогнозов, но адекватную замену можно найти и в открытом доступе), поэтому решено было сделать по своему . Ну и хотелось попрактиковаться в Python’е чутка :). Ну и PyNGL делает офигенные карты на мой взгляд 🙂

Данные сливаются с разных источников в разных форматах, обрабатываются при помощи питоновского модуля PyNGL, а затем заливаются по ftp на хостинг. Сделано пока:

Будет больше как видов данных так и районов. Если у кого есть мысли по поводу того какие характеристики интересно было бы видеть ещё — велком в коменты (можно со ссылкой на источник данных, можно и без неё)).

Бонус — прогноз высоты волн:

Read more »

← Предыдущая страницаСледующая страница →