Su Kaynakları (1984-2015)

GSW veri kümesi, yüzey suyu verilerini farklı şekillerde sunan birçok veri katmanı içerir. Öncelikle, 1984 Mart ile 2015 Ekim arasındaki dönemde yüzey suyunun nerede ve ne sıklıkta oluştuğunun özetini sağlayan su oluşumu katmanını görselleştirerek başlayacağız.

Eğitimin bu bölümünde:

  1. yüzey suyu oluşumunu görselleştirmek için bir harita katmanı ekleme,
  2. harita katmanının değerlerinin nasıl sorgulanacağını gösterme,
  3. Görselleştirmeyi iyileştirmek için özel stil ekleme,
  4. eşik değeri kullanarak ikili su maskesi katmanı oluşturma,
  5. haritayı dünyanın ilgi çekici yerlerinin ortasına getirin ve
  6. Komut dosyasını daha okunabilir ve sürdürülebilir hale getirmek için nasıl yeniden düzenleyeceğinizi gösterin.

Temel Görselleştirme Oluşturma

İlk olarak aşağıdaki ifadeleri kod düzenleyiciye kopyalayın:

Kod Düzenleyici (JavaScript)

var gsw = ee.Image('JRC/GSW1_0/GlobalSurfaceWater');
var occurrence = gsw.select('occurrence');
Map.addLayer(occurrence);

İlk ifadede GSW veri kümesi için Earth Engine Image nesnesine referans verilir ve bu nesne gsw adlı bir değişkende saklanır. İkinci ifade, GSW veri kümesinin tek bir katmanını seçer ve bunu occurrence adlı bir değişkende saklar. Üçüncü ifade, oluşum resmini Kod Düzenleyici'nin etkileşimli haritasına ekler.

Kod Düzenleyici'nin "Çalıştır" düğmesini tıklayın. Birkaç saniye sonra, 1. Şekil'e benzer şekilde kıyı şeritleri boyunca gri renklendirme içeren bir harita görmeniz gerekir.

varsayılan görselleştirme
Şekil 1. Küresel yüzey suyu oluşumu veri katmanının varsayılan görselleştirilmesi.

Çoğu bölgede GSW veri kümesi şeffaf görünür.Bunun nedeni, Landsat görüntüleri toplanmayan (ör. okyanus alanları) veya 32 yıl boyunca yapılan gözlemlerde su tespit edilmeyen konumların maskelenmiş olmasıdır.

Değerleri İnceleme

Su oluşumu katmanının değerlerini keşfetmek için kod düzenleyicinin inceleyici sekmesini kullanacağız. Önce inceleyici sekmesini, ardından bir konum seçmek için haritayı tıklayın. İnceleyici sekmesinde, tıkladığınız yerde bulunan her katmanla ilgili bilgiler gösterilir.

denetçi sekmesi
Şekil 2. Örnek denetçi sekmesi çıkışı.

Yukarıdaki örnekte, value adlı katmanın değeri 98'dir. Birimler yüzde puanı olarak ifade edilir. Bu nedenle, konum yaklaşık olarak% 98 oranında suyla kaplı olarak sınıflandırılmıştır. Bu değer, Data Users Guide (v2) 'de açıklandığı gibi, mevsimsel değişikliklere göre normalleştirme yapan aylık yüzey suyu oluşumu değerlerinin ortalamasıdır.

Kodunuzu İyileştirmek İçin Yeniden Düzenleme

Komut dosyamız yalnızca iki ifade içeriyor ancak kodu yeniden düzenleyerek nihai komut dosyamızın zaman içinde okunmasını ve bakımını kolaylaştırabiliriz. Şu anda Map.addLayer() ifadesi tek bir bağımsız değişkeni occurrence geçiriyor. Bu bağımsız değişken, haritada göstermek istediğimiz Earth Engine görüntü nesnesidir. Ancak Map.addLayer() yöntemi, kendisine ek bağımsız değişkenler iletilmesine de olanak tanır. Hangi bağımsız değişkenlerin kullanılabildiğini hızlıca görmek için imlecinizi açma parantezinden sonra yerleştirin ve addLayer yöntemiyle ilgili 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çebilirsiniz.)

Map.addLayer bağımsız değişkenleri
Şekil 3. addLayer yönteminin bağımsız değişkenlerini gösteren ekran görüntüsü.

Klavye kısayolları, Map.addLayer'ya iletilebilecek beş bağımsız değişken olduğunu gösteriyor: 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 nesneyi hem de katmanı adlandıran ek bir bağımsız değişkeni iletmek için kodu, aşağıda gösterildiği gibi JSON veri yapısı içinden yönteme iletilen "adlandırılmış bağımsız değişkenler" (eeObject ve name) kullanacak şekilde yeniden düzenleyebiliriz:

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şmemelidir.

Görselleştirme Parametreleri Ekleme

Ardından, suyumuzun gri görünmesine neden olan varsayılan görselleştirme parametrelerini iyileştirmek için çalışacağız. Değişken oluşturan yeni bir ifade ekleyin VIS_OCCURRENCE 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 depolanan görselleştirme parametreleri VIS_OCCURRENCE, minimum% 0 değer için kırmızı, maksimum %100 değer için mavi kullanılması gerektiğini gösterir. .updateMask(occurrence.divide(100)) öğesinin eklenmesi, piksellerin opaklığının/şeffaflığının oluşum değerine göre ayarlanmasına neden olur.

Komut dosyasını tekrar çalıştırın ve stil değişikliklerimizden elde edilen düzeltilmiş sonuçları görüntüleyin.

Yüzey Suyu Oluşumu
4. şekil Buenos Aires yakınlarındaki Paraná Deltası'nda su oluşumunun ekran görüntüsü. Minimum değer uç noktası için şeffaf kırmızı renk, maksimum değer uç noktası için ise düz mavi renk kullanılıyor.

Su alanları artık mavi renkte gösteriliyor. İlerleme durumu

Eşik katmanı oluşturma

Su oluşumu görüntüsünde, %0 ile %100 arasındaki değer aralığı kullanılarak suyun ne sıklıkta oluşmasının beklendiği hakkında bilgiler yer alır. Ancak, belirli bir oluşum yüzdesine (ör. eşik değeri) göre ikili bir su katmanı (ör. "su" ve "su olmayan") tanımlamak genellikle faydalıdı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ı, su ve su olmayan alanları ayırmak için% 90 eşik değerini kullanan aşağıdaki ifadelerle oluşturulabilir.

Ö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ız ve .unmask() yöntemini kullanarak daha önce maskelenmiş alanları 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'
});
%90 su maskesi
Şekil 5. Buenos Aires yakınlarındaki Paraná Deltası'nın% 90 su maskesinin ekran görüntüsü.

Dünyanın İlginç Yerlerine Gitme

Kaydırma ve yakınlaştırma yaparak dünyayı keşfetmek eğlencelidir ancak dünya çok büyük olduğundan bazen doğrudan belirli bir konuma gitmek faydalı olabilir. Aşağıda, yüzey suyu açısından ilginç yerlerle ilgili küçük bir örnek sunan bir dizi ifade yer almaktadır. Yalnızca ifadelerden birinin yorumunu 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

Bu, ilgi çekici yerlerin yalnızca küçük bir örneğidir. Dilerseniz kendi komutlarınızı da ekleyebilirsiniz.

Yine yeniden düzenleme...

GSW veri kümesinin bir sonraki katmanına geçmeden önce biraz daha kod yeniden düzenlemesi yapacağız. Özellikle, benzer ifadelerimizi gruplandıracak ve kodumuzu öğeler, sabitler, hesaplamalar, haritayı ortalama ve harita katmanları ekleme gibi bölümlere ayıracak bazı yorumlar ekleyeceğiz.

Son yeniden düzenlenmiş komut dosyası:

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 oluşumunun zaman içinde nasıl değiştiğini öğreneceksiniz.