Warstwa danych Water Occurrence Change Intensity (Intensywność zmian występowania wody) zawiera miarę zmian wód powierzchniowych między 2 okresami: 1984–1999 i 2000–2015. Warstwa uśrednia zmiany w homologicznych parach miesięcy z obu epok. Więcej informacji o tej warstwie znajdziesz w przewodniku użytkownika dotyczącym danych (wersja 2) .
W tej części samouczka:
- dodać warstwę mapy z własnym stylem, aby zwizualizować intensywność zmian występowania wody, oraz
- podsumować intensywność zmian w określonym regionie zainteresowania za pomocą histogramu.
Wizualizacja
Podobnie jak w przypadku warstwy występowania wody, zaczniemy od dodania do mapy podstawowej wizualizacji intensywności zmian występowania, a następnie ją ulepszymy. Intensywność zmiany występowania jest podawana na 2 sposoby: jako wartości bezwzględne i znormalizowane. W tym samouczku użyjemy wartości bezwzględnych. Zacznij od wybrania warstwy intensywności bezwzględnej zmiany występowania z obrazu GSW:
Edytor kodu (JavaScript)
var change = gsw.select("change_abs");
W sekcji stałych w kodzie dodaj instrukcję, która tworzy nową zmienną definiującą styl warstwy. Ten styl pokazuje obszary, na których występowanie wody powierzchniowej zmniejszyło się (kolor czerwony) lub zwiększyło (kolor zielony). Obszary, na których występowanie wód powierzchniowych jest względnie niezmienione, są wyświetlane na czarno.
Edytor kodu (JavaScript)
var VIS_CHANGE = { min:-50, max:50, palette: ['red', 'black', 'limegreen'] };
Na końcu sekcji kodu Warstwy mapy dodaj instrukcję, która dodaje nową warstwę mapy do mapy.
Edytor kodu (JavaScript)
Map.setCenter(-74.4557, -8.4289, 11); // Ucayali River, Peru Map.addLayer({ eeObject: change, visParams: VIS_CHANGE, name: 'occurrence change intensity' });
Podsumowanie zmian w obszarze zainteresowania
W tej sekcji podsumujemy zakres zmian w określonym regionie zainteresowania. Aby określić region zainteresowania, kliknij narzędzie do rysowania wielokątów, które jest jednym z narzędzi do geometrii. Spowoduje to utworzenie nowej warstwy importu geometrii, która domyślnie nosi nazwę „geometria”. Aby zmienić nazwę, kliknij ikonę koła zębatego po prawej stronie nazwy warstwy. (Aby się pojawił, może być konieczne najechanie kursorem na nazwę warstwy).
Zmień nazwę warstwy na roi (od „region of interest”, czyli „obszar zainteresowania”). Następnie możemy kliknąć serię punktów na mapie, aby zdefiniować wielokątny obszar zainteresowania.
Teraz, gdy nasz region zainteresowania jest zdefiniowany i zapisany w zmiennej, możemy go użyć do obliczenia histogramu intensywności zmian dla ROI. Dodaj ten kod do sekcji Calculations (Obliczenia) skryptu.
Edytor kodu (JavaScript)
// Calculate a change intensity for the region of interest. var histogram = change.reduceRegion({ reducer: ee.Reducer.histogram(), geometry: roi, scale: 30, bestEffort: true, }); print(histogram);
Pierwsza instrukcja oblicza histogram wartości intensywności zmian występowania w ROI, próbkując w skali 30 m. Drugi wyświetla wynikowy obiekt na karcie Konsola edytora kodu. Możesz rozwinąć drzewo obiektów, aby wyświetlić wartości przedziałów histogramu. Dane liczbowe są dostępne, ale istnieją lepsze sposoby wizualizacji wyników.
Aby to poprawić, możemy zamiast tego wygenerować wykres histogramu. Zastąp instrukcję definiującą obiekt histogramu tymi instrukcjami:
Edytor kodu (JavaScript)
// Generate a histogram object and print it to the console tab. var histogram = ui.Chart.image.histogram({ image: change, region: roi, scale: 30, minBucketWidth: 10 }); histogram.setOptions({ title: 'Histogram of surface water change intensity.' });
Te instrukcje tworzą obiekt wykresu histogramu, który zastępuje drzewo obiektów histogramu na karcie Konsola wykresem. Metoda wykresu zawiera kilka argumentów, w tym scale, który określa skalę przestrzenną w metrach, w której próbkowany jest interesujący region, oraz minBucketWidth, który służy do kontrolowania szerokości zasobników histogramu.
Możesz interaktywnie przeglądać wartości na wykresie, najeżdżając kursorem na słupki histogramu.
Final Script
Poniżej znajdziesz cały skrypt dla tej sekcji. Zwróć uwagę, że skrypt zawiera instrukcje definiujące geometrię wielokąta (roi), która jest porównywalna z geometrią utworzoną za pomocą narzędzi geometrycznych edytora kodu.
Edytor kodu (JavaScript)
////////////////////////////////////////////////////////////// // Asset List ////////////////////////////////////////////////////////////// var gsw = ee.Image('JRC/GSW1_0/GlobalSurfaceWater'); var occurrence = gsw.select('occurrence'); var change = gsw.select("change_abs"); var roi = /* color: 0B4A8B */ee.Geometry.Polygon( [[[-74.17213, -8.65569], [-74.17419, -8.39222], [-74.38362, -8.36980], [-74.43031, -8.61293]]]); ////////////////////////////////////////////////////////////// // Constants ////////////////////////////////////////////////////////////// var VIS_OCCURRENCE = { min:0, max:100, palette: ['red', 'blue'] }; var VIS_CHANGE = { min:-50, max:50, palette: ['red', 'black', 'limegreen'] }; var VIS_WATER_MASK = { palette: ['white', 'black'] }; ////////////////////////////////////////////////////////////// // Calculations ////////////////////////////////////////////////////////////// // Create a water mask layer, and set the image mask so that non-water areas are transparent. var water_mask = occurrence.gt(90).mask(1); // Generate a histogram object and print it to the console tab. var histogram = ui.Chart.image.histogram({ image: change, region: roi, scale: 30, minBucketWidth: 10 }); histogram.setOptions({ title: 'Histogram of surface water change intensity.' }); print(histogram); ////////////////////////////////////////////////////////////// // Initialize Map Location ////////////////////////////////////////////////////////////// // Uncomment one of the following statements to center the map on // a particular location. // Map.setCenter(-90.162, 29.8597, 10); // New Orleans, USA // Map.setCenter(-114.9774, 31.9254, 10); // Mouth of the Colorado River, Mexico // Map.setCenter(-111.1871, 37.0963, 11); // Lake Powell, USA // Map.setCenter(149.412, -35.0789, 11); // Lake George, Australia // Map.setCenter(105.26, 11.2134, 9); // Mekong River Basin, SouthEast Asia // Map.setCenter(90.6743, 22.7382, 10); // Meghna River, Bangladesh // Map.setCenter(81.2714, 16.5079, 11); // Godavari River Basin Irrigation Project, India // Map.setCenter(14.7035, 52.0985, 12); // River Oder, Germany & Poland // Map.setCenter(-59.1696, -33.8111, 9); // Buenos Aires, Argentina\ Map.setCenter(-74.4557, -8.4289, 11); // Ucayali River, Peru ////////////////////////////////////////////////////////////// // Map Layers ////////////////////////////////////////////////////////////// Map.addLayer({ eeObject: water_mask, visParams: VIS_WATER_MASK, name: '90% occurrence water mask', shown: false }); Map.addLayer({ eeObject: occurrence.updateMask(occurrence.divide(100)), name: "Water Occurrence (1984-2015)", visParams: VIS_OCCURRENCE, shown: false }); Map.addLayer({ eeObject: change, visParams: VIS_CHANGE, name: 'occurrence change intensity' });
W następnej sekcji dowiesz się więcej o tym, jak woda zmieniała się w czasie, pracując z warstwą przejścia klasy wody.