Astronomia (2)
Przykład wykorzystania oprogramowania IDL, do stworzenia animacji cienia rzucanego przez księżyc, podczas tegorocznego całkowitego zaćmienia słońca w USA.
Autorem animacji jest Zachary Norman, który do jej opracowania wykorzystał kilka różnych technologii umożliwiających dostęp, pobieranie i wizualizację danych.
Przed przystąpieniem do szczegółów, prezentujemy pojedynczą klatkę wygenerowanej animacji - obraz został przetworzony przy użyciu funkcji programu IDL: hist_equal() zawierającą tabelę kolorów stosowaną do podkreślenia cienia rzucanego przez księżyc.
Autor miał zastrzeżenia dotyczące jakości danych GOES dostępnych w AWS. Na stronie internetowej, o której wspomnimy poniżej, stwierdził: „Dane GOES-16 ABI L1b i CMI zostały wstępnie zatwierdzone, ale należy pamiętać, że ponieważ satelita GOES-16 nie został uznany za operacyjnego, jego dane są nadal uznane jako wstępne i cały czas weryfikowane. Na szczęście dla celów tego przykładu, chodziło o znalezienie ładnego obrazu zaćmienia.”
Aby to zrobić, procedura przygotowania danych wyglądała następująco:
Aby uzyskać dostęp do danych znajdujących się w Amazon S3, wykorzystany został bezpłatny JavaScript z pakietu AWS SDK (pomaga on pozbyć się skomplikowanego kodowania, udostępniając obiekty JavaScript dla usług AWS, w tym Amazon S3, Amazon EC2, DynamoDB i Amazon SWF). Pakiet został użyty do wyszukiwania i identyfikowania plików, których pobranie było wymagane na podstawie różnych parametrów wejściowych. W celu ograniczenia wyszukiwania, użyto produktu ABI-L1b-RadF, o którym można dowiedzieć się więcej na stronie:
W projekcie wykorzystano dane pochodzące z Kolorado, zarejestrowane pomiędzy godziną 10:00 a 14:00 dnia 21 sierpnia 2017 roku.
Dało to wynik 60 różnych scen (mniej więcej jedna co 5 minut dla używanych zbiorów danych). Warto wspomnieć, że aby zbierać i przeszukiwać dane za pomocą pakietu AWS S3 SDK, trzeba posiadać konto i powiązany z nim klucz. Poniżej przekazujemy link do dokumentacji Amazon, w której znajdą Państwo informacje nt. wymagań dot. rejestracji:
Następnie pobrane zostały dane ze wspomnianego okresu, które łącznie zajmowały 900 MB. W kolejnym kroku został napisany kod IDL, który wyszukiwał pliki, wyodrębniał wartości promieniowania i umieszczał poprawne dane na wykresie. Chris Torrence, długoletni programista IDL, dodał wsparcie dla odwzorowania kartograficznego GOES w IDL, a odwzorowanie to jest częścią najnowszej wersji IDL 8.6.1. Aby go użyć, można wystarczy określić rzut mapy "GOES-R" podczas tworzenia obrazu lub odwzorowania. Poniżej znajduje się przykład IDL, pokazujący, jak zapisać takieg odwzorowanie do pliku CONUS GOES:
Z tego miejsca kod został właśnie zamknięty w pętli, aby możliwe było wygenerowanie mapy dla każdego pliku, uchwycenie wyglądu mapy, a następnie dodanie każdej klatki animacji do pliku MP4 za pomocą pakietu IDL. Oto link do wygenerowanej animacji, pokazującej, jak cień księżyca przechodzi przez terytorium USA:
Wszystkie potrzebne do wykonania animacji pliki znaleźć można na stronie:
Przed przystąpieniem do szczegółów, prezentujemy pojedynczą klatkę wygenerowanej animacji - obraz został przetworzony przy użyciu funkcji programu IDL: hist_equal() zawierającą tabelę kolorów stosowaną do podkreślenia cienia rzucanego przez księżyc.

Autor miał zastrzeżenia dotyczące jakości danych GOES dostępnych w AWS. Na stronie internetowej, o której wspomnimy poniżej, stwierdził: „Dane GOES-16 ABI L1b i CMI zostały wstępnie zatwierdzone, ale należy pamiętać, że ponieważ satelita GOES-16 nie został uznany za operacyjnego, jego dane są nadal uznane jako wstępne i cały czas weryfikowane. Na szczęście dla celów tego przykładu, chodziło o znalezienie ładnego obrazu zaćmienia.”
Aby to zrobić, procedura przygotowania danych wyglądała następująco:
- Potwierdzenie, że dane GOES (Geostationary Operational Environmental Satellite) są dostępne na platformie Earth on AWS
- Użycie węzła node.js, w celu utworzenia skryptu, wykorzystującego moduły open-source JavaScript z NPM do kwerendy i pobrania danych na zasoby lokalne
- Utworzenie za pomocą IDL skryptu wyodrębniającego dane i prawidłowego ich wyświetlania na mapie
- Rozbudowa skryptu w celu przetworzenia szeregu obrazów i wygenerowania animacji wideo
Aby uzyskać dostęp do danych znajdujących się w Amazon S3, wykorzystany został bezpłatny JavaScript z pakietu AWS SDK (pomaga on pozbyć się skomplikowanego kodowania, udostępniając obiekty JavaScript dla usług AWS, w tym Amazon S3, Amazon EC2, DynamoDB i Amazon SWF). Pakiet został użyty do wyszukiwania i identyfikowania plików, których pobranie było wymagane na podstawie różnych parametrów wejściowych. W celu ograniczenia wyszukiwania, użyto produktu ABI-L1b-RadF, o którym można dowiedzieć się więcej na stronie:
![]() |
http://www.goes-r.gov/ |
W projekcie wykorzystano dane pochodzące z Kolorado, zarejestrowane pomiędzy godziną 10:00 a 14:00 dnia 21 sierpnia 2017 roku.
Dało to wynik 60 różnych scen (mniej więcej jedna co 5 minut dla używanych zbiorów danych). Warto wspomnieć, że aby zbierać i przeszukiwać dane za pomocą pakietu AWS S3 SDK, trzeba posiadać konto i powiązany z nim klucz. Poniżej przekazujemy link do dokumentacji Amazon, w której znajdą Państwo informacje nt. wymagań dot. rejestracji:
![]() |
https://aws.amazon.com/premiumsupport/knowledge-center/create-access-key/ |
Następnie pobrane zostały dane ze wspomnianego okresu, które łącznie zajmowały 900 MB. W kolejnym kroku został napisany kod IDL, który wyszukiwał pliki, wyodrębniał wartości promieniowania i umieszczał poprawne dane na wykresie. Chris Torrence, długoletni programista IDL, dodał wsparcie dla odwzorowania kartograficznego GOES w IDL, a odwzorowanie to jest częścią najnowszej wersji IDL 8.6.1. Aby go użyć, można wystarczy określić rzut mapy "GOES-R" podczas tworzenia obrazu lub odwzorowania. Poniżej znajduje się przykład IDL, pokazujący, jak zapisać takieg odwzorowanie do pliku CONUS GOES:
data = NCDF_Parse(file, /READ_DATA)
center_lon = data['geospatial_lat_lon_extent', $
'geospatial_lon_nadir', '_DATA']
radiance = data['Rad','_DATA']
xscale = data['x', 'scale_factor', '_DATA']
xoffset = data['x', 'add_offset', '_DATA']
x_radians = data['x', '_DATA']*double(xscale) + xoffset
yscale = data['y', 'scale_factor', '_DATA']
yoffset = data['y', 'add_offset', '_DATA']
y_radians = data['y', '_DATA']*double(yscale) + yoffset
i = image(hist_equal(radiance), x_radians, y_radians, $
RGB_TABLE=15, $
LIMIT=[15,-120, 50, -60], MARGIN=[0.1,0.02,0.08,0.02], $
MAP_PROJECTION='GOES-R', GRID_UNITS='meters', $
CENTER_LONGITUDE=center_lon, $
DIMENSIONS=[1000,600], $
TITLE='GOES-16 Level 1b Radiance CONUS')
mc = mapContinents(/COUNTRIES)
mc = mapContinents(/US)
center_lon = data['geospatial_lat_lon_extent', $
'geospatial_lon_nadir', '_DATA']
radiance = data['Rad','_DATA']
xscale = data['x', 'scale_factor', '_DATA']
xoffset = data['x', 'add_offset', '_DATA']
x_radians = data['x', '_DATA']*double(xscale) + xoffset
yscale = data['y', 'scale_factor', '_DATA']
yoffset = data['y', 'add_offset', '_DATA']
y_radians = data['y', '_DATA']*double(yscale) + yoffset
i = image(hist_equal(radiance), x_radians, y_radians, $
RGB_TABLE=15, $
LIMIT=[15,-120, 50, -60], MARGIN=[0.1,0.02,0.08,0.02], $
MAP_PROJECTION='GOES-R', GRID_UNITS='meters', $
CENTER_LONGITUDE=center_lon, $
DIMENSIONS=[1000,600], $
TITLE='GOES-16 Level 1b Radiance CONUS')
mc = mapContinents(/COUNTRIES)
mc = mapContinents(/US)
Z tego miejsca kod został właśnie zamknięty w pętli, aby możliwe było wygenerowanie mapy dla każdego pliku, uchwycenie wyglądu mapy, a następnie dodanie każdej klatki animacji do pliku MP4 za pomocą pakietu IDL. Oto link do wygenerowanej animacji, pokazującej, jak cień księżyca przechodzi przez terytorium USA:
![]() |
https://www.facebook.com/HarrisGeospatialSolutions/videos/10155456330801006/ |
Wszystkie potrzebne do wykonania animacji pliki znaleźć można na stronie:
![]() |
https://github.com/znorman17/goes-tools |