dimhold.by
← Артыкулы

Год світанкаў Himawari за 30 секунд. Адзін кадр называе дату з памылкай не больш за дзень у 335 выпадках з 358

Мне хацелася вокладкі, якая тлумачыць сябе сама. Год Зямлі за 30 секунд, па адным здымку ў дзень з аднаго спадарожніка ў адну і тую ж хвіліну. Тады рухаецца толькі тое, што мяняецца. Himawari-9 вісіць над 140,7 градуса ўсходняй даўжыні, а NICT захоўвае яго поўныя дыскі маленькімі файламі PNG. Выглядала як праца на вечар. Самым цяжкім, думаў я, будзе спампаваць.

Поўдзень гэта відавочны час і заадно нудны: амаль увесь дыск асветлены кожны дзень і рухаюцца толькі аблокі. Я ўзяў 21:00 UTC. Пад спадарожнікам гэта прыкладна 06:23 па мясцовым сярэднім часе, таму мяжа дня і ночы праходзіць праз дыск. У NASA Earth Observatory ёсць 4 здымкі Meteosat, зробленыя так жа, па адным на кожнае сонцастаянне і раўнадзенства. У снежні мяжа нахіленая ў адзін бок, у чэрвені ў другі. Мне хацелася ўсіх дзён паміж імі. Як сабраць з кадраў Himawari анімацыю, Чарлі Лойд апісаў яшчэ ў 2015 годзе, так што сам ролік гэта старая ідэя.

Год

Акно з 1 кастрычніка 2025 па 30 верасня 2026. Я запытаў у NICT 730 кадраў, 550 на 550 пікселяў, у натуральных колерах. 365 з іх на 21:00 UTC і 365 на 03:00 UTC для версіі ў поўдзень. Прыйшло 723. Усе 7 адсутных гэта кадры світання і сервер адказвае на іх 403. У копіі сырых даных Himawari у NOAA на 21:00 гэтых дат таксама пуста, значыць спадарожнік гэтыя кадры не запісаў. У роліку на такі дзень застаецца папярэдні кадр.

Пры 12 кадрах у секунду 365 кадраў гэта 30,4 секунды. Відэа сабраў ffmpeg 6.1.1, GIF сабраў gifsicle 1.94.

Па адным кадры ў дзень у 21:00 UTC, з 1 кастрычніка 2025 па 30 верасня 2026, 12 кадраў у секунду. У тыя 7 дзён, калі кадра няма, застаецца папярэдні.

Калі я паглядзеў яго першы раз, мяжа гойдалася як маятнік і яшчэ ссоўвалася ўбок: увосень улева, узімку ўправа. Гойданне я чакаў. Зрух убок я спачатку растлумачыць не змог. Праз яго я задаў іншае пытанне. Калі мяжа за год ходзіць у 2 напрамках, можа, аднаго кадра хопіць, каб сказаць, які гэта дзень.

Дата па адным кадры

Аналема гэта вядомая фатаграфія. Калі здымаць сонца з аднаго месца ў адзін і той жа час па гадзінніку ўвесь год, яно малюе ў небе васьмёрку. Уверх і ўніз гэта сезон. Убок гэта ўраўненне часу. Сонца абганяе гадзіннік на 16 хвілін у пачатку лістапада і адстае на 14 хвілін у сярэдзіне лютага. Да гэтага прагону я не чакаў убачыць яе на здымку метэаспадарожніка.

Метад просты. Python 3.12, numpy 2.5.3, scipy 1.18.1, Pillow 12.3.0, skyfield 1.55 з эфемерыдамі DE421. У кожным радку кадра я знаходжу самы заходні асветлены піксель. Асветлены значыць яркасць 3 з 255 ці больш пасля згладжвання 5 на 5. Радкі, дзе гэтая кропка ляжыць на краі дыска, адкідаюцца. Геастацыянарная праекцыя ператварае кожны піксель мяжы ў шырату і даўжыню. Потым для кожнай з 365 дат я лічу, дзе было сонца ў 21:00 UTC. З гэтага атрымліваецца, наколькі яно ніжэй за гарызонт у кожнай кропцы мяжы. Правільная дата тая, пры якой сонца для ўсіх кропак мяжы стаіць на адным і тым жа вугле пад гарызонтам. Гэты вугал я браў па другой палове кадраў. Цотныя дні чытаюцца са значэннем з няцотных і наадварот.

Першая версія чытала большасць дат з памылкай ад 2 да 4 дзён, то раней, то пазней. З памылкай не больш за дзень трапілі толькі 20 кадраў з 358.

Кадр доўжыцца 9 хвілін

Спачатку я вырашыў, што ў праекцыі сталая памылка. Таму даў праграме падабраць 2 дадатковыя лікі: зрух па часе і яго змену з поўначы на поўдзень. Падгонка хацела, каб кадр пачынаўся раней за 21:00 і ўпіралася ў край любога дыяпазону, які я дазваляў. Спадарожнік не можа здымаць раней, чым пачынаецца яго расклад. Потым я ўбачыў, што зрух і вугал сонца на мяжы проста кампенсавалі адзін аднаго. Блізкай да сапраўднай разгорткі выйшла толькі гэтая змена.

Адказ ляжаў у сырых файлах. NOAA захоўвае зыходныя даныя Himawari, 10 сегментаў на поўны дыск. У загалоўку кожнага сегмента запісаны час пачатку і канца. Я спампоўваў толькі першыя 300 КБ кожнага. Паўночны край здымаецца ў 21:00:21, экватар прыкладна ў 21:05:05, паўднёвы край у 21:09:40, і так на ўсіх 3 датах, якія я праверыў, з дакладнасцю да секунды. Я лічыў “кадр у 21:00” адным момантам, а загалоўкі паказваюць разгортку даўжынёй 9 хвілін 19 секунд. За 5 хвілін сонца сыходзіць на 1,25 градуса на захад. На экватары малюнка гэта каля 7 пікселяў. Памылка яшчэ і расце з поўначы на поўдзень, так што мяжа атрымлівае няправільную форму. Гэтага хапае, каб пошук аддаў перавагу даце за 2 ці 3 дні ад сапраўднай.

З сапраўдным часам кожнага радка вынік такі. 241 кадр з 358 дае дакладную дату, у 335 памылка не больш за дзень, у 353 не больш за 3 дні. Без зруху ўбок, па адным нахіле мяжы, з памылкай не больш за дзень 191.

толькі нахіл 191 з 358 з памылкай да дня нахіл і зрух, кадр як адзін момант 20 з 358 з памылкай да дня нахіл і зрух, сапраўдны час кожнага радка 335 з 358 з памылкай да дня кас ліс сне сту лют сак кра мая чэр ліп жні вер памылка да дня 2-4 дні больш за 4 кадра няма
Адны і тыя ж 358 кадраў, прачытаныя 3 спосабамі. Без часу разгорткі большасць дзён чытаецца з памылкай ад 2 да 4 дзён. З ім промахі стаяць там, дзе іх прадказвае астраномія: на скрыжаванні васьмёркі і ў чэрвені, калі і нахіл і зрух мяняюцца павольна.

Дзе не атрымліваецца

Промахі не выпадковыя і гэта мне падабаецца больш за трапленні. 4 кадры памыляюцца на месяцы: 13, 14 і 15 красавіка прачытаныя як 27 ці 28 жніўня, а 30 жніўня як 12 красавіка. Гэта кропка, дзе васьмёрка перасякае сама сябе. 14 красавіка і 28 жніўня сонца стаіць над 9,6 і 9,5 градуса паўночнай шыраты. Па гадзінніку гэтыя 2 даты разыходзяцца менш чым на хвіліну, так што ў кадры розніцы няма.

Другое слабое месца гэта чэрвень. У снежні з памылкай не больш за дзень 30 кадраў з 31, у чэрвені толькі 16 з 30 і найгоршы промах 4 дні. На абодвух сонцастаяннях нахіл перастае мяняцца. Каля снежаньскага сонцастаяння ўраўненне часу яшчэ мяняецца прыкладна на 30 секунд за дзень і гэта ратуе чытанне, у чэрвені прыкладна на 13.

Калі я пабудаваў вымераны нахіл у залежнасці ад вымеранага зруху для кожнага кадра, без аніякага астранамічнага календара, васьмёрка намалявалася сама. Нахіл ідзе за схіленнем сонца з карэляцыяй 0,9995. Зрух ідзе за ўраўненнем часу амаль гэтак жа шчыльна, 0,998. На хвіліну ўраўнення часу прыпадае каля 1,31 пікселя зруху.

нахіл мяжы, градусы -20 -10 0 10 20 210 220 230 240 250 дзе мяжа перасякае экватар, у пікселях ад левага краю 22 сне 21 чэр 27 кас 11 лют 14 кра = 28 жні прачытаны з памылкай больш за дзень
Адна кропка на адзін кадр світання, 21:00 UTC. Нічога тут не ўзята з астранамічнага календара: нахіл і зрух вымераныя на малюнках. Нахіл гэта сезон, зрух убок гэта ўраўненне часу. Там, дзе петлі перасякаюцца, кадр сярэдзіны красавіка і кадр канца жніўня выглядаюць аднолькава.

Сама вокладка

Потым я рыхтаваў яе да публікацыі. У выглядзе GIF год світанкаў важыць 50,6 МБ, год поўдняў 79,7 МБ. X абмяжоўвае анімаваны GIF да 15 МБ і раіць не больш за 350 кадраў, а ў годзе 365 дзён. MP4 з H.264 пры CRF 28 важыць 3,1 МБ для світання і 7,7 МБ для поўдня. Версія світання меншая, верагодна таму, што значная частка кожнага дыска цёмная. На чым менавіта эканоміць кодэк, я не правяраў.

Чаго я не правяраў

Парог 3 з 255 аказаўся лепшым з 3, што я спрабаваў. Пры 6 трапленняў застаецца 304 з 358, пры 12 усяго 163, так што метад трымаецца на самым цёмным краі прыцемкаў. Вугал сонца на мяжы адкалібраваны па сапраўдных датах другой паловы кадраў, таму гэта не сляпы тэст. Я ўзяў адзін год аднаго спадарожніка, кадры памерам 550 пікселяў. А ці прымусіць ролік кагосьці спыніцца, гартаючы стужку, пакуль сказаць не магу, ён яшчэ не выкладзены.