GSW veri kümesi, yüzey suyu verilerini farklı şekillerde sunan birçok veri katmanı içerir. Mart 1984 ile Ekim 2015 arasındaki tüm dönem boyunca yüzey suyunun nerede ve ne sıklıkta oluştuğunun özetini sunan su oluşumu katmanını görselleştirerek başlayacağız.
Eğitimin bu bölümünde şunlar ele alınacaktır:
- yüzey sularının oluşumunu görselleştirmek için bir harita katmanı ekleme,
- harita katmanının değerlerini nasıl sorgulayacağınızı,
- görselleştirmeyi iyileştirmek için özel stil ekleme,
- eşik değeri kullanarak ikili su maskesi katmanı oluşturma,
- haritayı dünyanın ilginç bölgelerine ortalayabilir ve
- Senaryoyu daha okunabilir ve bakımı kolay hale getirmek için nasıl yeniden düzenleyeceğinizi gösterin.
Temel Görselleştirme Oluşturma
Aşağıdaki ifadeleri Kod Düzenleyici'ye kopyalayarak başlayın:
Kod Düzenleyici (JavaScript)
var gsw = ee.Image('JRC/GSW1_0/GlobalSurfaceWater'); var occurrence = gsw.select('occurrence'); Map.addLayer(occurrence);
İlk ifade, GSW veri kümesi için Earth Engine Image nesnesine referans verir ve bunu gsw adlı bir değişkende depolar.
İkinci ifade, GSW veri kümesinin tek bir katmanını seçer ve bunu occurrence adlı bir değişkende depolar.
Üçüncü ifade, oluşum görüntüsünü Kod Düzenleyici'nin etkileşimli haritasına ekler.
Kod Düzenleyici'nin "Run" (Çalıştır) düğmesini tıklayın. Birkaç saniye sonra, Şekil 1'dekine benzer şekilde kıyı şeritleri boyunca gri renklendirme içeren bir harita görürsünüz.
Çoğu alanda GSW veri kümesi şeffaf görünür.Bunun nedeni, Landsat görüntülerinin toplanmadığı (ör. okyanus alanları) veya 32 yıl boyunca yapılan gözlemlerde suyun tespit edilmediği konumların maskelenmiş olmasıdır.
Değerleri İnceleme
Su varlığı katmanının değerlerini keşfetmek için Kod Düzenleyici'nin denetleyici sekmesini kullanacağız. Önce denetleyici sekmesini, ardından haritayı tıklayarak bir konum seçin. İnceleme sekmesinde, tıkladığınız yerde bulunan katmanların her biriyle ilgili bilgiler gösterilir.
Yukarıdaki örnekte, value adlı katmanın değeri 98'dir. Birimler yüzde puanı cinsinden ifade edilir. Dolayısıyla, konumun yaklaşık% 98'inde suyla kaplı olduğu sınıflandırılmıştır.
Değer, aylık yüzey suyu oluşum değerlerinin her birinin ortalamasıdır. Bu değer,
Veri Kullanıcı Rehberi'nde (v2)
açıklandığı gibi mevsimsel varyasyona göre normalleştirilir.
Kodunuzu İyileştirmek İçin Yeniden Düzenleme
Komut dosyamızda yalnızca iki ifade var ancak kodu yeniden düzenleyerek nihai komut dosyamızın zaman içinde daha kolay okunmasını ve yönetilmesini sağlayabiliriz.
Şu anda Map.addLayer() ifadesi, haritada görüntülemek istediğimiz Earth Engine görüntü nesnesi olan tek bir bağımsız değişkeni (occurrence) iletiyor. Ancak Map.addLayer() yöntemi, ek bağımsız değişkenlerin de iletilmesine olanak tanır. Kullanılabilir bağımsız değişkenleri hızlıca görmek için imlecinizi açılış parantezinden sonra yerleştirin ve addLayer yönteminin yardım dokümanını açmak için "Kod önerilerini göster" klavye kısayoluna basın. (Klavye kısayollarını görüntülemek için Yardım -> Kısayollar menüsünü seçin.)
Klavye kısayolları, Map.addLayer yöntemine iletilebilecek beş bağımsız değişken olduğunu gösterir: eeObject, visParams, name, shown ve opacity.
Mevcut komut dosyamızda, ilk bağımsız değişken eeObject olarak yorumlanan tek bir değişken occurrence iletiyoruz.
Hem değişken nesnesini hem de katmanı adlandıran ek bir bağımsız değişkeni iletmek için kodu, "adlandırılmış bağımsız değişkenleri" (eeObject ve name) kullanacak şekilde yeniden düzenleyebiliriz. Bu bağımsız değişkenler, aşağıda gösterildiği gibi bir
JSON veri yapısından
yönteme iletilir:
Kod Düzenleyici (JavaScript)
Map.addLayer({eeObject: occurrence, name: 'Water Occurrence (1984-2015)'});
Yeniden düzenleme değişikliklerinden sonra kodun hâlâ çalıştığından emin olmak için kodu tekrar çalıştırın. Sonuçta elde edilen harita değişmeden kalmalıdır.
Görselleştirme parametreleri ekleme
Ardından, suyun gri görünmesine neden olan varsayılan görselleştirme parametrelerini iyileştirmeye çalışacağız. VIS_OCCURRENCE değişkenini oluşturan yeni bir ifade ekleyin ve bunu addLayer yöntemine ek bir bağımsız değişken olarak iletin.
Kod Düzenleyici (JavaScript)
var VIS_OCCURRENCE = { min: 0, max: 100, palette: ['red', 'blue'] };
Kod Düzenleyici (JavaScript)
Map.addLayer({ eeObject: occurrence.updateMask(occurrence.divide(100)), name: 'Water Occurrence (1984-2015)', visParams: VIS_OCCURRENCE });
JSON yapısında VIS_OCCURRENCE depolanan görselleştirme parametreleri, minimum% 0 değeri için kırmızı, maksimum %100 değeri için mavi kullanılması gerektiğini gösterir.
.updateMask(occurrence.divide(100)) eklendiğinde piksellerin opaklığı/şeffaflığı, gerçekleşme değerine göre ayarlanır.
Senaryoyu tekrar çalıştırın ve stil değişikliklerimizden sonraki sonuçları inceleyin.
Su alanları artık mavi. İlerleme kaydedildi.
Eşik katmanı oluşturma
Su varlığı görüntüsü, %0 ile %100 arasında bir değer aralığı kullanarak suyun ne sıklıkta beklendiğiyle ilgili bilgiler içerir. Ancak, ikili su katmanı tanımlamak genellikle faydalıdır (ör. "su" ve "su olmayan") sınıflandırır. Bu basit ikili katmanı, diğer GSW katmanlarının yerleştirilebileceği temiz bir arka plan katmanı olarak kullanacağız. Bu eşik katmanını oluşturmak için aşağıdaki ifadeler kullanılabilir. Bu ifadeler, su ve su olmayan alanları ayırmak için% 90 eşik değerini kullanır.
Öncelikle su maskesinin stil bilgilerini tutmak için yeni bir görselleştirme değişkeni VIS_WATER_MASK tanımlıyoruz:
Kod Düzenleyici (JavaScript)
var VIS_WATER_MASK = { palette: ['white', 'black'] };
Ardından, büyüktür karşılaştırma operatörünü (.gt(90)) kullanarak bir su maskesi katmanı hesaplar ve daha önce maskelenmiş alanları .unmask() yöntemini kullanarak sıfıra ayarlarız:
Kod Düzenleyici (JavaScript)
// Create a water mask layer, and set the image mask so that non-water areas // are opaque. var water_mask = occurrence.gt(90).unmask(0);
Son olarak katmanı haritaya ekleyin. Bu katmanın diğer tüm katmanların altında oluşturulması için aşağıdaki ifadeyi diğer tüm Map.addLayer ifadelerinden önce yerleştirin.
Kod Düzenleyici (JavaScript)
Map.addLayer({ eeObject: water_mask, visParams: VIS_WATER_MASK, name: '90% occurrence water mask' });
Dünyanın İlginç Yerlerine Gitme
Kaydırarak ve yakınlaştırarak dünyayı keşfetmek eğlencelidir ancak dünya çok büyük olduğundan bazen doğrudan belirli bir konuma atlamak işe yarayabilir. Aşağıda, yüzey suyu açısından ilginç konumların küçük bir örneğini sunan bir dizi ifade verilmiştir. Aynı anda yalnızca bir ifadenin açıklama işaretini kaldırın. Komut dosyanız çalıştırıldığında bu konuma gider.
Kod Düzenleyici (JavaScript)
// Uncomment one of the following statements to center the map. // 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
Bunlar, ilgi çekici yerlerden yalnızca birkaçıdır. Sen de paylaş etiketini ekleyebilirsiniz.
Yeniden düzenleniyor...
GSW veri kümesinin bir sonraki katmanına geçmeden önce kodu biraz daha yeniden düzenleyeceğiz. Özellikle, benzer ifadelerimizi bir araya getireceğiz ve kodumuzu öğeler, sabitler, hesaplamalar, haritayı ortalama ve harita katmanları ekleme bölümlerine ayıracak bazı yorumlar ekleyeceğiz.
Yeniden düzenlenmiş son komut dosyası şu şekildedir:
Kod Düzenleyici (JavaScript)
////////////////////////////////////////////////////////////// // Asset List ////////////////////////////////////////////////////////////// var gsw = ee.Image('JRC/GSW1_0/GlobalSurfaceWater'); var occurrence = gsw.select('occurrence'); ////////////////////////////////////////////////////////////// // Constants ////////////////////////////////////////////////////////////// var VIS_OCCURRENCE = { min: 0, max: 100, palette: ['red', 'blue'] }; var VIS_WATER_MASK = { palette: ['white', 'black'] }; ////////////////////////////////////////////////////////////// // Calculations ////////////////////////////////////////////////////////////// // Create a water mask layer, and set the image mask so that non-water areas // are opaque. var water_mask = occurrence.gt(90).unmask(0); ////////////////////////////////////////////////////////////// // Initialize Map Location ////////////////////////////////////////////////////////////// // Uncomment one of the following statements to center the map. // 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 });
Sonraki bölümde, su varlığının zaman içinde nasıl değiştiğini inceleyeceksiniz.