1. Cel i zakres
Narzędzie odpowiada na trzy pytania o dowolny obszar wskazany w pliku GeoPackage: ile sztucznego światła nocą dociera do obszaru i jego otoczenia oraz jak zmienia się ono w czasie, jak silnie obszar i jego sąsiedztwo są przekształcone przez człowieka oraz jaką część zajmują obszary Natura 2000 i czy zmiany pokrycia terenu w sieci Natura 2000 różnią się od zmian poza nią.
Zakresem pracy jest suma wszystkich obiektów wskazanej warstwy pliku GPKG. Może to być park, gmina, zlewnia, pole badań, także kilka rozłącznych obiektów. Obszar nie musi być parkiem krajobrazowym ani leżeć w Polsce. Warstwy Natura 2000 istnieją tylko w Unii Europejskiej, więc poza nią odpowiednie tabele są puste, a narzędzie zapisuje o tym uwagę i liczy dalej.
Główną część pracy wykonuje masowe pobieranie: dla obszaru z GPKG skrypt sam pobiera z Google Earth Engine (GEE) roczne mediany VIIRS, wszystkie miesięczne kompozyty VIIRS, gHM, raster Natura 2000, tło Sentinel-2 i mapy Dynamic World, a następnie zapisuje je jako GeoTIFF i w lokalnej pamięci podręcznej.
2. Przewodnik krok po kroku: jak to działa i jak uruchomić u siebie
Ta część jest napisana dla osoby, która nigdy nie programowała. Nie trzeba nic instalować na komputerze: wszystko działa w przeglądarce, na koncie Google. Interfejsy Google się zmieniają, więc nazwy przycisków mogą się nieco różnić od opisanych, a przewodnik nie zawiera zrzutów ekranu.
2.1. Co to robi, prostym językiem
Satelity fotografują Ziemię także nocą i mierzą, jak jasno świecą miasta, drogi i oświetlone miejsca. Narzędzie bierze Twój obszar (na przykład park, gminę albo teren badań), pobiera dla niego zdjęcia satelitarne z ogólnodostępnego magazynu danych Google Earth Engine i liczy trzy rzeczy:
- jak jasno świeci obszar i jego otoczenie w nocy oraz czy z roku na rok jest jaśniej, czy ciemniej;
- jak bardzo teren i jego sąsiedztwo zostały przekształcone przez człowieka (zabudowa, rolnictwo, drogi);
- jaką część zajmują obszary Natura 2000 (sieć ochrony przyrody w Unii Europejskiej).
Na końcu dostajesz gotowe tabele, wykresy, mapy, animacje i pliki do programów GIS (na przykład QGIS). Całość jest uruchamiana w Google Colab: to „komputer w przeglądarce”, który Google udostępnia po zalogowaniu kontem Google. Ty wpisujesz tylko trzy rzeczy: gdzie leży plik z obszarem, gdzie zapisać wyniki i identyfikator własnego projektu Earth Engine.
2.2. Słowniczek
| Pojęcie | Co to znaczy |
|---|---|
| Obszar (AOI) | Miejsce, które badasz: granica parku, gminy, zlewni albo dowolnego terenu. |
| Plik GPKG (GeoPackage) | Plik z granicą obszaru, który otwiera i zapisuje program QGIS. Jeden plik może zawierać kilka obiektów; narzędzie weźmie je wszystkie razem. |
| Google Earth Engine (GEE) | Bezpłatny dla badań i edukacji serwis Google z ogromnym zbiorem zdjęć satelitarnych. Narzędzie prosi go o dane dla Twojego obszaru. |
| Projekt GEE i jego identyfikator | Twoje „konto robocze” w Google Cloud, z którego korzystasz z Earth Engine. Identyfikator to krótki napis typu moj-projekt-123456. To nie jest nazwa wyświetlana projektu. |
| Google Colab | Strona, na której uruchamia się notatnik z kodem bez instalowania czegokolwiek. |
| Notatnik | Dokument złożony z komórek z opisem i kodem; uruchamia się je po kolei jednym poleceniem. |
| Dysk Google | Twoje miejsce w chmurze Google, skąd notatnik czyta plik z obszarem i dokąd zapisuje wyniki. |
| Radiancja | Miara jasności nocnego światła widzianego z satelity. Większa liczba oznacza jaśniej. |
| GeoTIFF | Plik ze zdjęciem lub mapą, który zna swoje położenie na Ziemi; otwiera się go w QGIS. |
2.3. Czego potrzebujesz
- konta Google (wystarczy zwykłe konto Gmail),
- pliku GPKG z granicą obszaru (zob. krok 3),
- przeglądarki internetowej.
Krok 2 (projekt Earth Engine) wykonuje się raz; potem w kolejnych pracach używasz tego samego identyfikatora.
Krok 1. Załóż lub wybierz konto Google
Zaloguj się na konto Google, którego będziesz używać do wszystkiego poniżej (Dysk, Colab, Earth Engine). Używaj wszędzie tego samego konta, bo to najczęstsze źródło błędów „brak dostępu”.
Krok 2. Załóż własny projekt Google Earth Engine
Według oficjalnej instrukcji Google dostęp do Earth Engine wymaga projektu w Google Cloud, włączenia interfejsu Earth Engine API i zarejestrowania projektu [20]. Po kolei:
- Utwórz projekt. Wejdź na console.cloud.google.com/projectcreate, wpisz dowolną nazwę (na przykład swiatlo-nocne) i kliknij przycisk tworzenia. Google nada projektowi identyfikator (zwykle nazwa z dopisanym numerem). Zapisz go: to jest wartość do wpisania w ustawieniach. Identyfikator widać potem na liście projektów u góry strony Google Cloud, obok nazwy.
- Włącz Earth Engine API. Wejdź na stronę interfejsu Earth Engine API, upewnij się, że u góry wybrany jest Twój projekt, i kliknij Enable (Włącz).
- Zarejestruj projekt. Wejdź na console.cloud.google.com/earth-engine/configuration. Do użytku niekomercyjnego (badania, edukacja) wypełnij krótką ankietę; dokumentacja Google podaje, że wtedy nie trzeba konfigurować płatności, a po rejestracji dostęp włącza się od razu [20]. Zastosowania komercyjne mają osobne zasady; warunki sprawdź na stronie Google, bo się zmieniają.
Po tym kroku masz identyfikator projektu, na przykład swiatlo-nocne-123456. Nie jest to hasło i nie trzeba go chronić, ale musi być wpisany dokładnie.
Krok 3. Przygotuj plik z obszarem i wgraj go na Dysk Google
- W QGIS zaznacz warstwę z granicą obszaru, kliknij ją prawym przyciskiem myszy, wybierz Eksportuj, potem Zapisz obiekty jako i jako format wskaż GeoPackage. Nazwij plik na przykład
obszar.gpkg. Układ współrzędnych musi być nadany (QGIS robi to sam). - Wejdź na drive.google.com, utwórz folder o nazwie
zanieczyszczenie_swiatlemi wgraj do niego plikobszar.gpkg(przycisk Nowy, potem Przesyłanie pliku).
Przy pierwszym uruchomieniu wybierz niewielki obszar. Przekonasz się, że wszystko działa, zanim zaczniesz pobierać dane dla dużego terenu.
Krok 4. Otwórz notatnik w Colabie
Kliknij Otwórz w Colabie i zaloguj się tym samym kontem Google. Zobaczysz notatnik z opisem i komórkami kodu. Niczego nie instaluj i nie zmieniaj, poza komórką z ustawieniami z kroku 5.
Krok 5. Wpisz trzy ustawienia
Przewiń do komórki pod nagłówkiem 1. Ustawienia. Na samej górze są trzy wiersze do uzupełnienia:
'aoi_gpkg': '/content/drive/MyDrive/zanieczyszczenie_swiatlem/obszar.gpkg',
'folder_wynikow': '/content/drive/MyDrive/zanieczyszczenie_swiatlem/wyniki',
'projekt_gee': 'TWOJ-PROJEKT-GEE',
- aoi_gpkg: ścieżka do pliku z obszarem. Początek
/content/drive/MyDrive/oznacza Twój Dysk Google; dalej wpisz nazwę folderu i pliku z kroku 3. Jeśli zrobiłeś wszystko dokładnie tak jak wyżej, nie musisz nic zmieniać. - folder_wynikow: miejsce na wyniki. Folder powstanie sam, nie trzeba go zakładać.
- projekt_gee: wstaw identyfikator projektu z kroku 2 w miejsce
TWOJ-PROJEKT-GEE.
Zostaw cudzysłowy i przecinki na końcu wierszy. Pozostałe ustawienia mają dobre wartości domyślne (na przykład pierścień 5 km wokół obszaru i lata od 2014).
Krok 6. Uruchom wszystko
- W menu Runtime (po polsku Środowisko wykonawcze) wybierz Run all (Uruchom wszystko) albo naciśnij Ctrl+F9.
- Colab zapyta o dostęp do Dysku Google: zezwól, bo stamtąd czyta plik z obszarem i tam zapisuje wyniki.
- Colab poprosi o potwierdzenie dostępu do Earth Engine: otwórz podany link, wybierz to samo konto Google, zezwól na dostęp i, jeśli pojawi się kod, wklej go z powrotem w okienku w Colabie [21].
- Poczekaj. Czas zależy od wielkości obszaru i liczby lat. Nie zamykaj karty. Komórki wypisują postęp pod sobą.
Zanim zacznie się pobieranie, notatnik sprawdza trzy wpisane pola. Jeśli coś jest nie tak (brak identyfikatora, zła ścieżka do pliku, brak zapisu w folderze), zatrzyma się od razu z komunikatem po polsku, co poprawić. Jeśli bieg się przerwie (zamknięta karta, limit czasu Colaba), uruchom go jeszcze raz: pobrane dane są zapisane w folderze wyników i nie będą pobierane od nowa.
Krok 7. Odbierz wyniki
Wejdź na Dysk Google, do folderu zanieczyszczenie_swiatlem/wyniki/<nazwa obszaru>:
| Podfolder | Co tam jest i czym to otworzyć |
|---|---|
02_ryciny | Wykresy i mapy w plikach PNG. Otwierają się jak zwykłe zdjęcia. |
01_tabele | Tabele w plikach CSV. Otwierają się w Excelu lub Arkuszach Google. |
03_animacje | Animacje (GIF i MP4) zmian światła nocą w kolejnych latach i miesiącach. |
04_rastry | Pobrane zdjęcia i mapy w plikach GeoTIFF. Otwiera je QGIS. |
06_raport | Opis źródeł i parametrów biegu. Warto go dołączyć do swojej pracy. |
2.4. Jak czytać wyniki
- Radiancja to jasność nocnego światła: większa liczba oznacza jaśniej. Tabela trendu podaje, o ile zmienia się ona średnio na rok i ile to procent. Wartość p mówi, jak łatwo taki układ wyników mógłby powstać przypadkiem: im mniejsza, tym mniej prawdopodobny przypadek (często przyjmuje się próg 0,05). Nie dowodzi to, co jest przyczyną zmiany.
- gHM to wskaźnik od 0 do 1: im bliżej 1, tym teren bardziej przekształcony przez człowieka. Narzędzie podaje średnią i udział powierzchni powyżej umownego progu 0,4.
- Natura 2000: tabela pokazuje, jaką część obszaru zajmuje sieć. Poza Unią Europejską tabela jest pusta i to jest poprawne.
- Zmiany wewnątrz i na zewnątrz Natura 2000 są opisem, a nie oceną skuteczności ochrony (powody w sekcji 5.5).
2.5. Najczęstsze problemy
| Co widzisz | Co to znaczy i co zrobić |
|---|---|
| „BŁĄD USTAWIEŃ ... projekt_gee” | Nie wpisano identyfikatora projektu. Wstaw go w miejsce TWOJ-PROJEKT-GEE (krok 5). |
| „nie znaleziono pliku GPKG” | Ścieżka jest błędna albo nie zezwolono na dostęp do Dysku. Sprawdź nazwę folderu i pliku (także wielkość liter) i zezwól na dostęp do Dysku przy uruchamianiu. |
| „Nie udało się połączyć z Earth Engine” | Zwykle: identyfikator jest błędny (wpisano nazwę zamiast identyfikatora), nie włączono Earth Engine API albo projekt nie jest zarejestrowany, albo logujesz się innym kontem niż to, które ma dostęp. Wróć do kroku 2 i sprawdź kolejno te trzy rzeczy. |
| Tabele Natura 2000 są puste | Obszar leży poza Unią Europejską; sieć Natura 2000 tam nie istnieje. To nie jest błąd. |
| Błąd pamięci albo bieg trwa bardzo długo | Obszar jest bardzo duży. Wybierz mniejszy albo w ustawieniach zmniejsz kafel_px do 256 lub zwiększ skala_m do 960 (mniej szczegółowa, ale lżejsza siatka). |
| Bieg się przerwał | Uruchom ponownie (Run all). Dane już pobrane są w pamięci podręcznej w folderze wyników. |
Jeśli komunikat jest inny, skopiuj ostatnie linijki błędu i zgłoś je w zakładce Issues repozytorium.
2.6. Czy to kosztuje
Colab ma wersję bezpłatną, która wystarcza do niewielkich i średnich obszarów. Earth Engine do użytku niekomercyjnego nie wymaga według dokumentacji Google konfiguracji płatności [20]. Zasady Google (limity, warunki użytku niekomercyjnego) mogą się zmienić, więc przed większą pracą przeczytaj aktualną instrukcję dostępu do Earth Engine.
3. Dane
| Warstwa | Identyfikator w GEE | Rola w analizie |
|---|---|---|
VIIRS DNB, miesięczne kompozyty z korektą światła rozproszonego (pasma avg_rad, cf_cvg) | NOAA/VIIRS/DNB/MONTHLY_V1/VCMSLCFG | Sztuczne światło nocą: radiancja w nW/(cm²·sr) i liczba obserwacji bezchmurnych. Producent: Earth Observation Group, Colorado School of Mines. |
| Global Human Modification | CSP/HM/GlobalHumanModification | Wskaźnik 0–1, stan około 2016 r., rozdzielczość około 1 km [10]. |
| World Database on Protected Areas | WCMC/WDPA/current/polygons | Granice obszarów Natura 2000 (siedliskowe i ptasie) oraz rezerwatów przyrody. |
| Sentinel-2 z maską Cloud Score+ | COPERNICUS/S2_SR_HARMONIZED | Tło map (kompozyt medianowy) [13]. |
| Dynamic World | GOOGLE/DYNAMICWORLD/V1 | Pokrycie terenu 10 m do porównania zmian w Natura 2000 i poza nią [12]. |
Do publikacji zaleca się wskazać datowaną wersję WDPA (WCMC/WDPA/RRRRMM/polygons), żeby wynik był odtwarzalny. Kolekcja bieżąca zmienia się w czasie.
4. Metoda krok po kroku
- Zakres pracy. Skrypt wczytuje wskazaną warstwę GPKG i łączy wszystkie obiekty w jeden obszar (AOI). Wybiera układ metryczny: PL-1992 (EPSG:2180) w Polsce, w innych miejscach strefę UTM właściwą dla środka obszaru. Opcjonalnie dzieli AOI na dwie części według atrybutu (na przykład park i otulina), żeby policzyć je osobno.
- Strefy i siatka. Tworzy pierścień o promieniu 5 km wokół AOI (otoczenie, z którego dociera rozproszone światło) oraz siatkę 30 m wyrównaną do tej samej siatki co w notatniku głównym, dzięki czemu rastry z obu narzędzi się pokrywają. Dane VIIRS i gHM liczone są na siatce grubszej, 480 m (16 pikseli 30 m), zbliżonej do natywnej rozdzielczości VIIRS. Piksel gruby należy do strefy, jeśli co najmniej połowa zawartych w nim pikseli 30 m leży w tej strefie.
- Pobieranie z GEE. Każdy obraz jest pobierany kaflami 512 × 512 pikseli przez
ee.data.computePixels, z ponawianiem błędów przejściowych i zapisem atomowym do pamięci podręcznej (.npz), której klucz zależy od definicji obrazu. Wiele obrazów pobiera się równolegle. Przerwany bieg wznawia się bez ponownych zapytań do GEE. - Światło nocą, wyniki roczne. Dla każdego roku skrypt bierze mediany z miesięcznych obrazów, odrzucając piksele bez obserwacji (
cf_cvg= 0). Mediana ogranicza wpływ jednorazowych zdarzeń (pożary, zorza, statki), których wersja 1 produktu nie filtruje. Radiancja jest zapisywana jako liczba całkowita (wartość × 100), brak danych jako −999999. W każdej strefie liczona jest średnia, mediana i suma radiancji. Suma jest wskaźnikiem przyjętym w ocenie polskich parków [1], bo uwzględnia powierzchnię oświetloną, a nie tylko typowe jasności. - Światło nocą, wyniki miesięczne. Wszystkie dostępne miesięczne kompozyty (radiancja i liczba obserwacji) są pobierane i zapisywane jako wielopasmowy GeoTIFF. Z nich powstaje tabela miesięczna, mapa cieplna lat × miesiące i animacja.
- Trend. Na rocznych wartościach średniej radiancji w strefie (co najmniej pięć lat danych) liczone jest nachylenie Theila-Sena (mediana nachyleń wszystkich par punktów) [14] oraz test Manna-Kendalla na istnienie monotonicznego trendu [15]. Tabela podaje nachylenie w nW/(cm²·sr) na rok, zmianę względną w procentach na rok (nachylenie podzielone przez średnią z okresu) i wartość p. Statystyka testu to
S = Σ sgn(xj − xi) dla i < j; Var(S) = n(n − 1)(2n + 5) / 18Wariancja jest podana bez poprawki na powtórzenia wartości, a test zakłada brak autokorelacji szeregu (zob. ograniczenia).
Z = (S − 1)/√Var(S) dla S > 0, Z = (S + 1)/√Var(S) dla S < 0; p = 2Φ(−|Z|) - Modyfikacja przez człowieka. Warstwa gHM jest pobierana na siatce 480 m. W każdej strefie liczona jest średnia i mediana oraz udział powierzchni powyżej progu 0,4. Próg 0,4 jest umowną granicą silnej modyfikacji, ustawioną w skrypcie. Producent warstwy nie definiuje klas ani progów w opisie zbioru w GEE, więc próg można i należy dostosować do pytania badawczego.
- Natura 2000. Z WDPA wybierane są poligony o oznaczeniach siedliskowych (Habitats Directive Site, Site of Community Importance) i ptasich (Birds Directive Site) oraz rezerwaty. Skrypt rasteryzuje je na siatce analizy i liczy udział sieci Natura 2000 w AOI i w pierścieniu.
- Zmiany pokrycia terenu w Natura 2000 i poza nią. Źródłem map jest (a) plik RF 5 klas z notatnika głównego, jeśli istnieje i siatka się zgadza, albo (b) Dynamic World: modalna etykieta z sezonu czerwiec-wrzesień dla dwóch epok, z 10 m agregowana większością do 30 m i sprowadzona do pięciu klas (zabudowa, lasy, wody, trawy i krzewy, uprawy; gleba odkryta i śnieg trafiają do klasy trawy i krzewy). Dla każdej strefy i dla pikseli wewnątrz i na zewnątrz sieci Natura 2000 liczone są udziały nowej zabudowy, ubytku i przyrostu lasu. Grupy mniejsze niż 100 pikseli są pomijane.
- Wyniki i raport. Tabele CSV, ryciny PNG, animacje (GIF, MP4), rastry GeoTIFF, wektory GPKG oraz raport: parametry biegu (JSON), opis źródeł i ograniczeń (Markdown) i lista błędów modułów, jeśli wystąpiły.
5. Podstawy naukowe
5.1. Dlaczego światło nocą jest presją na przyrodę
Sztuczne światło nocą zaburza naturalny cykl światła i ciemności, który reguluje zegary biologiczne, żerowanie, rozmnażanie i migracje wielu grup organizmów. Mechanizmy opisano w przeglądzie Gastona i in. [4], a postulaty badawcze i polityczne w pracy Hölkera i in. [5]. Wpływ nie kończy się na granicy oświetlonego miejsca: światło rozproszone w atmosferze (poświata nocnego nieba) sięga obszarów odległych od miast. Globalny atlas jasności nocnego nieba pokazuje skalę tego zjawiska [6], a analizy nakładania atlasu na sieci obszarów chronionych wykazały, że znaczna część obszarów ważnych dla bioróżnorodności i obszarów chronionych leży pod rozjaśnionym niebem [8],[9]. Dla polskich parków narodowych i krajobrazowych opracowano skalę ELP oceniającą oddziaływanie światła [1]. Stąd potrzeba oceny nie tylko samego obszaru, lecz także jego otoczenia, co realizuje pierścień presji.
5.2. Dlaczego VIIRS DNB
Radiometr VIIRS na satelitach serii Suomi NPP i NOAA-20 ma pasmo dzień/noc (DNB) bardzo czułe na słabe światło, co umożliwia obserwację oświetlenia nocnego w skali globalnej [2]. Miesięczne kompozyty uśredniają obserwacje bezchmurne, a roczne szeregi tworzy się z kompozytów miesięcznych [3]. Wersja z korektą światła rozproszonego (VCMSLCFG) poszerza obszar użytecznych obserwacji i poprawia zakres dynamiki, ale według opisu zbioru nie filtruje świateł chwilowych ani nie oddziela świateł od tła. Dlatego narzędzie używa mediany rocznej z miesięcy z obserwacjami, a nie pojedynczych miesięcy, i zapisuje obok radiancji liczbę obserwacji (cf_cvg).
Wskaźnik sumy radiancji w strefie, a nie samej średniej, odpowiada praktyce oceny polskich obszarów chronionych [1]: duży, słabo oświetlony obszar i mały, silnie oświetlony mogą mieć podobną średnią, ale różne sumy. Kierunek trendu radiancji dla Ziemi jest przedmiotem badań: analiza satelitarna wykazała wzrost oświetlonej powierzchni i radiancji w latach 2012-2016 [7], jednak lokalnie (na przykład po wymianie opraw na LED) wynik może być przeciwny, bo czujnik jest ślepy na światło niebieskie.
5.3. Modyfikacja przez człowieka
Wskaźnik gHM łączy w jednym gradiencie 0-1 wpływ zabudowy, rolnictwa, transportu, energetyki, wydobycia i innych presji [10],[11]. Daje to miarę presji, której nie widać w samym świetle: obszar może być ciemny i jednocześnie otoczony silnie przekształconym krajobrazem. Używamy go jako zmiennej opisowej, w jednym stanie czasowym, bez interpretacji przyczynowej.
5.4. Trend nieparametryczny
Nachylenie Theila-Sena jest odporne na wartości odstające i nie zakłada rozkładu normalnego [14], a test Manna-Kendalla ocenia, czy szereg ma monotoniczny trend [15]. Szereg roczny dla jednego obszaru ma kilkanaście punktów, więc moc testu jest ograniczona; istotność statystyczna nie przesądza o znaczeniu ekologicznym.
5.5. Porównanie wewnątrz i na zewnątrz Natura 2000
Różnica zmian pokrycia terenu wewnątrz i na zewnątrz obszarów chronionych nie jest oceną skuteczności ochrony. Obszary chronione są lokalizowane nieprzypadkowo, częściej tam, gdzie presja rozwojowa jest mniejsza (wyżej, dalej od miast) [16], a szacunki skuteczności bez kontroli tej różnicy lokalizacji są zawyżone [17]. Dlatego narzędzie podaje tylko opis porównawczy, bez wniosku o efekcie przyczynowym.
6. Ograniczenia
- Rozdzielczość i widmo. VIIRS (około 500 m) nie rozróżnia pojedynczych źródeł. Pasmo DNB nie rejestruje światła niebieskiego poniżej około 500 nm, więc przejście na oświetlenie LED o dużej temperaturze barwowej może być niedoszacowane lub wyglądać jak spadek radiancji.
- Luki sezonowe. Latem w średnich i wysokich szerokościach geograficznych (w tym w Polsce) krótkie noce i światło rozproszone ograniczają liczbę użytecznych obserwacji. Mediana roczna z miesięcy z obserwacjami może więc różnić się składem miesięcy między latami. Niepełny rok bieżący warto wyłączyć z analizy przez zawężenie
viirs_lata. - Światła chwilowe. Wersja 1 kompozytów nie filtruje zorzy, pożarów, statków i innych świateł tymczasowych. Mediana rocznych ogranicza, lecz nie usuwa tego wpływu.
- gHM. Jeden stan (około 2016), więc nie opisuje zmian w czasie. Próg 0,4 jest umowny i nie wynika z opisu zbioru w GEE.
- WDPA. Granice mogą odbiegać od rejestrów krajowych (dla Polski: Generalna Dyrekcja Ochrony Środowiska). Wersja bieżąca zmienia się w czasie.
- Test trendu. Test Manna-Kendalla w tej postaci zakłada brak autokorelacji szeregu; autokorelacja zawyża istotność [18],[19]. Brak poprawki na powtórzenia wartości. Przy krótkim szeregu wynik należy traktować orientacyjnie.
- Porównanie w Natura 2000. Opis, nie efekt przyczynowy (zob. 5.5). Dynamic World jest klasyfikacją spektralną o 10 m i przy agregacji do 30 m część zmian drobnych znika; zabudowę w obrębie lasu i wyręby mogą mylić się z innymi klasami.
- Status testów. Notatnik i skrypt przetestowano na syntetycznym zastępniku modułu
ee(pliki w katalogutesty/): sprawdzono przepływ danych, kafle, pamięć podręczną, georeferencję GeoTIFF, tabele, ryciny i animacje. To nie jest uruchomienie na prawdziwym GEE, a strona nie zawiera żadnych wyników z danych rzeczywistych. Pierwsze uruchomienie na własnym obszarze należy zacząć od małego pliku GPKG.
7. Uruchomienie dla zaawansowanych
Osoby początkujące powinny zacząć od przewodnika w sekcji 2. Ta część opisuje uruchomienie skryptu na własnym komputerze i pełną listę ustawień.
7.1. Notatnik (Google Colab)
Otwórz notatnik w Colabie, uzupełnij trzy pola wymagane w komórce 1. Ustawienia (aoi_gpkg, folder_wynikow, projekt_gee) i uruchom wszystkie komórki. Wyniki trafiają do <folder_wynikow>/<nazwa AOI>/.
7.2. Skrypt Python (komputer lokalny, serwer)
Skrypt wymaga Pythona 3 i konta z dostępem do projektu Earth Engine. Trzy pola wymagane są na górze pliku w sekcji USTAWIENIA DO WPISANIA: PROJEKT_GEE (można też podać zmienną środowiskową GEE_PROJECT), PLIK_GPKG i FOLDER_WYNIKOW. Te same wartości można przekazać w wierszu poleceń. Przed pobieraniem skrypt sprawdza, czy pola są wypełnione, czy plik istnieje i czy w folderze wyników można zapisywać.
pip install -r requirements.txt
# sprawdzenie ustawień i połączenia z Earth Engine, bez pobierania danych
python zanieczyszczenie_swiatlem.py --projekt MOJ_PROJEKT_GEE --gpkg obszar.gpkg --out wyniki --tylko-sprawdz
# pełny bieg
python zanieczyszczenie_swiatlem.py --projekt MOJ_PROJEKT_GEE --gpkg obszar.gpkg --out wyniki
# dowolne ustawienie można nadpisać (wartość w formacie JSON)
python zanieczyszczenie_swiatlem.py --projekt MOJ_PROJEKT_GEE --gpkg obszar.gpkg --out wyniki \
--ustaw animacje.miesieczna=false --ustaw presje.skala_m=960 --ustaw bufory_m=[2000,5000]
Przy pierwszym uruchomieniu skrypt sam uruchomi logowanie do Earth Engine [21]. Plik zanieczyszczenie_swiatlem.py ma format Jupytext (komórki # %%), więc można go także otworzyć jako notatnik. Kod wyjścia 2 oznacza, że jakiś moduł przerwał się błędem; raport i pozostałe wyniki są zapisane.
7.3. Ustawienia
| Ustawienie (skrypt / notatnik) | Domyślnie | Znaczenie |
|---|---|---|
wymagane: PROJEKT_GEE / projekt_gee | (do wpisania) | Identyfikator projektu Google Cloud z włączonym Earth Engine. |
wymagane: PLIK_GPKG / aoi_gpkg | obszar.gpkg | Zakres pracy: plik GPKG (suma wszystkich obiektów warstwy). |
wymagane: FOLDER_WYNIKOW / folder_wynikow | wyniki | Folder wyników; w nim powstaje folder z nazwą obszaru. |
WARSTWA_GPKG / aoi_warstwa | pierwsza warstwa | Warstwa w pliku GPKG. |
NAZWA_OBSZARU / nazwa | nazwa pliku GPKG | Nazwa w tytułach rycin i plikach wyników. |
PROMIEN_PRESJI_M / presja_promien_m | 5000 | Promień pierścienia presji wokół AOI, w metrach. |
LATA_VIIRS / presje.viirs_lata | (2014, 2026) | Lata do analizy; lata bez miesięcy w kolekcji są pomijane. Niepełny rok bieżący warto wyłączyć. |
aoi_kolumna_typu | None | Opcjonalny podział AOI na dwie części według atrybutu. |
presje.skala_m | 480 | Siatka VIIRS i gHM (wielokrotność 30 m). |
presje.natura.zrodlo_zmian | auto | Źródło map pokrycia: auto, rf_geotiff lub dw. |
pobieranie.* | GeoTIFF włączony | Zapis warstw, miesięczne VIIRS, tło S2, przycięcie do stref, ZIP, równoległość. |
kafel_px, watki | 512, 8 | Wydajność pobierania; przy błędach pamięci GEE zmniejsz kafel do 256. |
7.3. Wtyczka do QGIS
Dla osób pracujących w QGIS przygotowano wtyczkę Zanieczyszczenie światłem nocnym (Night-time Light Pollution) z interfejsem w języku polskim i angielskim. Obejmuje wyłącznie światło nocne VIIRS (jasność roczna i miesięczna, trend, sezonowość, mapy, animacje, GeoTIFF, raport). Obszar wskazuje się warstwą poligonową z projektu lub plikiem; biblioteki Pythona wtyczka instaluje do osobnego folderu, nie zmieniając instalacji QGIS, a zakładka Dostęp do GEE prowadzi krok po kroku przez założenie projektu Google Cloud i logowanie do Earth Engine.
- Pobierz plik
zanieczyszczenie_swiatla_nocnego-1.0.1.zip(kod źródłowy w kataloguqgis_plugin). - W QGIS (3.22 lub nowszy) wybierz Wtyczki, Zarządzanie wtyczkami, Zainstaluj z pliku ZIP i wskaż pobrany plik.
- W oknie wtyczki otwórz zakładkę Dostęp do GEE, kliknij kolejno Zainstaluj biblioteki, Zaloguj do Earth Engine i Sprawdź połączenie, a potem wróć do zakładki Analiza.
Wtyczka ma status eksperymentalny. Okno i silnik sprawdzono na zaślepkach Earth Engine i QGIS, bez prawdziwego QGIS, więc pierwsze uruchomienie traktuj jako test i zgłoś uwagi w repozytorium.
8. Co powstaje w folderze wyników
| Folder | Zawartość |
|---|---|
01_tabele | Roczna i miesięczna radiancja w strefach, trend Theila-Sena i Manna-Kendalla, gHM, udział Natura 2000, zmiany pokrycia terenu w sieci i poza nią, manifest pobranych plików. |
02_ryciny | Panel światła nocą (mapy, szeregi, trend), mapa cieplna lat × miesięcy, gHM, mapa i wykres Natura 2000. |
03_animacje | Animacja roczna i (opcjonalnie) miesięczna światła nocą, GIF i MP4. |
04_rastry | GeoTIFF: VIIRS roczne i miesięczne, liczba obserwacji, gHM, Natura 2000, strefy analizy, tło Sentinel-2, mapy Dynamic World. |
05_wektory, 06_raport | Strefy (GPKG); parametry biegu (JSON) i opis źródeł oraz ograniczeń (Markdown). |
9. Literatura
- T. Ściężor et al., „Ecological Light Pollution (ELP) Scale as a Measure of Light Pollution Impact on Protected Areas: Case Study of Poland,” Sustainability, vol. 17, no. 11, art. 4824, 2025, doi: 10.3390/su17114824.
- C. D. Elvidge, K. Baugh, M. Zhizhin, F.-C. Hsu, T. Ghosh, „VIIRS night-time lights,” Int. J. Remote Sens., 2017, doi: 10.1080/01431161.2017.1342050.
- C. D. Elvidge, M. Zhizhin, T. Ghosh, F.-C. Hsu, J. Taneja, „Annual time series of global VIIRS nighttime lights derived from monthly averages: 2012 to 2019,” Remote Sens., 2021, doi: 10.3390/rs13050922.
- K. J. Gaston, J. Bennie, T. W. Davies, J. Hopkins, „The ecological impacts of nighttime light pollution: a mechanistic appraisal,” Biol. Rev., 2013, doi: 10.1111/brv.12036.
- F. Hölker et al., „The dark side of light: a transdisciplinary research agenda for light pollution policy,” Ecol. Soc., 2010, doi: 10.5751/ES-03685-150413.
- F. Falchi et al., „The new world atlas of artificial night sky brightness,” Sci. Adv., 2016, doi: 10.1126/sciadv.1600377.
- C. C. M. Kyba et al., „Artificially lit surface of Earth at night increasing in radiance and extent,” Sci. Adv., 2017, doi: 10.1126/sciadv.1701528.
- J. K. Garrett, P. F. Donald, K. J. Gaston, „Skyglow extends into the world's Key Biodiversity Areas,” Anim. Conserv., 2019, doi: 10.1111/acv.12480.
- K. J. Gaston, J. P. Duffy, J. Bennie, „Quantifying the erosion of natural darkness in the global protected area system,” Conserv. Biol., 2015, doi: 10.1111/cobi.12462.
- C. M. Kennedy et al., „Managing the middle: a shift in conservation priorities based on the global human modification gradient,” Glob. Change Biol., 2019, doi: 10.1111/gcb.14549.
- D. M. Theobald et al., „Earth transformed: detailed mapping of global human modification from 1990 to 2017,” Earth Syst. Sci. Data, 2020, doi: 10.5194/essd-12-1953-2020.
- C. F. Brown et al., „Dynamic World, near real-time global 10 m land use land cover mapping,” Sci. Data, 2022, doi: 10.1038/s41597-022-01307-4.
- V. J. Pasquarella, C. F. Brown, W. Czerwinski, W. J. Rucklidge, „Comprehensive quality assessment of optical satellite imagery using weakly supervised video learning,” in Proc. IEEE/CVF Conf. Comput. Vis. Pattern Recognit. Workshops (CVPRW), 2023, pp. 2125-2135.
- P. K. Sen, „Estimates of the regression coefficient based on Kendall's tau,” J. Am. Stat. Assoc., 1968, doi: 10.1080/01621459.1968.10480934.
- H. B. Mann, „Nonparametric tests against trend,” Econometrica, 1945, doi: 10.2307/1907187.
- L. Joppa, A. Pfaff, „High and far: biases in the location of protected areas,” PLoS ONE, 2009, doi: 10.1371/journal.pone.0008273.
- K. S. Andam, P. J. Ferraro, A. Pfaff, G. A. Sanchez-Azofeifa, J. A. Robalino, „Measuring the effectiveness of protected area networks in reducing deforestation,” Proc. Natl. Acad. Sci. USA, 2008, doi: 10.1073/pnas.0800437105.
- K. H. Hamed, A. R. Rao, „A modified Mann-Kendall trend test for autocorrelated data,” J. Hydrol., 1998, doi: 10.1016/S0022-1694(97)00125-X.
- S. Yue, P. Pilon, B. Phinney, G. Cavadias, „The influence of autocorrelation on the ability to detect trend in hydrological series,” Hydrol. Process., 2002, doi: 10.1002/hyp.1095.
- Google, „Get Earth Engine access,” dokumentacja Google Earth Engine (strona sprawdzona 13.11.2026). [Online]. Dostępne: developers.google.com/earth-engine/guides/access
- Google, „Python install: authentication and initialization,” dokumentacja Google Earth Engine (strona sprawdzona 13.11.2026). [Online]. Dostępne: developers.google.com/earth-engine/guides/python_install
Rejestry obszarów chronionych, kolekcje VIIRS, gHM i Dynamic World są opisane w katalogu danych Google Earth Engine pod identyfikatorami z tabeli w sekcji 3; opis zbioru VIIRS VCMSLCFG podaje ograniczenia wersji 1 cytowane w sekcji 5.2.
10. Jak cytować
Archiwum wydania v1.0.0 ma stały identyfikator DOI w Zenodo: 10.5281/zenodo.24186500 (rekord). Zalecany zapis (IEEE):
Plik CITATION.cff w repozytorium zawiera te same dane w formacie czytelnym dla programów (Zotero, GitHub). Strona opisuje bieżący stan gałęzi głównej repozytorium; archiwum DOI zawiera stan z dnia wydania. Przy publikacji wyników podaj wersję i datę uruchomienia (zapisuje je plik z parametrami biegu w folderze 06_raport).