Главная » Хабрахабр » Сезоны сменяют друг друга всё раньше из года в год в Кемерово

Сезоны сменяют друг друга всё раньше из года в год в Кемерово

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

Но оно не рассеялось окончательно, а периодически всплывало в голове, когда, например, я страдал от зноя в мае или видел желтеющее дерево в июле. Само собой разумеется, по-прибытии на работу я и думать забыл о своем смутном подозрении.

Напоминанием стала статья на Гисметео. Итак, толком не следуя принципу, что нужно начать делать задумку в первые 48 часов, спустя много месяцев я таки провел небольшое исследование для проверки своего подозрения.

Данные

Как оказалось, найти среднесуточные температуры не так-то просто, как может показаться. Первым делом необходимо было раздобыть данные. Но полученные данные меня не удовлетворили (много пропусков в датах), продолжил гугление получил искомое на сайте http://aisori-m.meteo.ru/waisori/. После пятиминутного гугления я наткнулся на вопрос на Тостере, откуда попал на сайт www.ncdc.noaa.gov.

Кусочек данных:

29645 1955 1 1 "-31.0"
29645 1955 1 2 "-23.8"
29645 1955 1 3 "-18.7"
29645 1955 1 4 "-13.3"
29645 1955 1 5 "-16.8"
29645 1955 1 6 "-16.8"
29645 1955 1 7 "-18.6"
29645 1955 1 8 "-17.0"
29645 1955 1 9 "-6.7"
29645 1955 1 10 "-10.4"

Получение годовых температур со смещением

Первым делом, я преобразовал csv с данными в массив объектов.

Затем написал функцию, которая возвращала из массива год со смещением на некоторое количество дней.
Детальнее, у нас есть такой кусочек массива:

...
1955 12 29 -34.5
1955 12 30 -37.7
1955 12 31 -36.3
1956 1 1 -29.2
1956 1 2 -32.9
1956 1 3 -38.1
1956 1 4 -36.6
...

То есть для 1го января 1956 года, будет браться температура 31 декабря 1955 года Если в функции запросить все данные 1956 года, то просто они и вернулся, а если запросить данные со смещение в -1 день, то температура для каждого дня будут браться из предыдущего дня.

...
1956 1 1 -36.3 ← (из 1955 12 31)
1956 1 2 -29.2 ← (из 1956 1 1)
1956 1 3 -32.9 ← (из 1956 1 2)
1956 1 4 -38.1 ← (из 1956 1 3)
...

Получение среднемесячной температуры

В полученном срезе массива за год, я высчитывал среднемесячные температуры, тем самым получая вектор температур для года.

[ -16.716129032258067, -16.317857142857143, -17.690322580645155, -11.57333333333333, 0.3967741935483872, 9.163333333333332, 17.845161290322586, 17.225806451612904, 15.490000000000004, 9.922580645161291, 1.7233333333333334, -8.26774193548387
]

Расстояние между смещенными годами

Отсюда я решил, что буду сравнивать, к примеру, вектор 2001 года и все вектора 2002 года, полученные смещением. Если у меня есть вектор температур для года, то я могу сравнить расстояние между векторами.
То есть, если бы погода вообще почти не менялась год от года, то расстояние между векторами было бы равно нулю.

...
2001 год == 2002 год -2 дня
2001 год == 2002 год -1 дня
2001 год == 2002 год 2001 год == 2002 год +1 день
2001 год == 2002 год +2 дня
...

То есть, если окажется, что расстояние между 2001 годом и 2002 годом +2 дня минимально, то значит сезон 2002 года был смещен на 2 дня вперед относительно 2001 года. После брать смещение того сравнения, где расстояние между векторами минимально.

Забегая вперед скажу, что я брал за начальный год 1956 и смотрел смещение на 30 дней вперёд и назад.

Оформляем код

Алгоритм я запрограммировал на js и сделал небольшой сайт для удобства проверки.
Исходный код на гитхабе.

Проверяем предположения

Кемерово

Сезоны стали меняться быстрее с 2013 года на 10 дней, а в среднем с 1956 года на 8 дней!
Ага!

Москва

Смещения почти нет.

Архангельск

Калининград

Санкт-Петербург

Тюмень

Владивосток

Заключение

Ощущение не обмануло, но ощущения проверять всё же нужно.

S. P. На сайте Новосибирска не оказалось, но Кемерово меня полностью устроило. На самом деле я искал Новосибирск.

P. P. Как оказалось немного позже — то в файле не хватало 2018 года, а мне нужен был январь этого года, поэтому недостающий месяц я скачал с сайта pogodaiklimat.ru. S.


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

Больше всех пахала лошадь, но председателем колхоза так и не стала

Мне стало интересно понять профит от этих штук. В последнее время в мобильном сообществе часто можно услышать про Flutter, React Native. В итоге было создано 4 (одинаковых с точки зрения выполняемых функции) приложения: нативное Android, нативное iOS, Flutter, React Native. ...

Бесплатная трансляция DotNext 2018 Moscow

Меньше недели осталось до конференции DotNext 2018 Moscow: она пройдет в конгресс-парке гостиницы «Рэдиссон Ройал Москва» 22-23 ноября. Между докладами будут вестись интервью с ключевыми спикерами конференции. По традиции, прямо на YouTube будет открыта бесплатная онлайн-трансляция первого зала (ссылка спрятана ...