Görüntüleri kullanarak hesaplama yapma

Artık bir görüntüyü nasıl yükleyeceğinizi ve görüntüleyeceğinizi bildiğinize göre, bu görüntüye bir hesaplama uygulayabilirsiniz. Örneğin, SRTM yükseklik görüntüsünü ee.Terrain paketinin slope yöntemine ileterek arazi eğimini hesaplayabilirsiniz.

Kod Düzenleyici (JavaScript)

// Load the SRTM image.
var srtm = ee.Image('CGIAR/SRTM90_V4');

// Apply an algorithm to an image.
var slope = ee.Terrain.slope(srtm);

// Display the result.
Map.setCenter(-112.8598, 36.2841, 9); // Center on the Grand Canyon.
Map.addLayer(slope, {min: 0, max :60}, 'slope');

ee.Terrain.slope(srtm) kodunda srtm resminin eğim algoritmasına bağımsız değişken olarak sağlandığını unutmayın. Sonuç, Şekil 3'e benzer şekilde görünmelidir.

Tutorial_api_03_slope.png
Şekil 3. Eğimli görüntü.

Görüntü matematiği

ee.Image sınıfında, bir resim nesnesinde çağrılabilecek yöntemler de vardır. Örneğin, görüntü bantlarını kullanarak matematiksel işlemler yapmak istediğinizi varsayalım (bazen bant matematiği veya harita cebiri olarak da adlandırılır). Örneğin, bir görünüm resminde trigonometrik işlemler yapmak isteyebilirsiniz. Bunu yapmak için önce bir en-boy oranı görüntüsünü radyana dönüştürün, ardından üzerinde sin() işlevini çağırın. srtm resmimizi yeniden kullanma,

Kod Düzenleyici (JavaScript)

// Get the aspect (in degrees).
var aspect = ee.Terrain.aspect(srtm);

// Convert to radians, compute the sin of the aspect.
var sinImage = aspect.divide(180).multiply(Math.PI).sin();

// Display the result.
Map.addLayer(sinImage, {min: -1, max: 1}, 'sin');

Sonuç, Şekil 4'e benzer şekilde görünmelidir. aspect.divide(180).multiply(Math.PI).sin() kodunu daha yakından incelemenizi öneririz. Bu şekilde birden fazla yöntemi zincirleyerek kod, "en boy oranını 180'e böl, sonucu π ile çarp ve son olarak sinüsünü al" diyor. Bu şekilde yöntemleri birleştirerek resimler üzerinde karmaşık matematiksel işlemler yapabilirsiniz. Matematiksel işlemlerin (add(), subtract(), multiply() vb.) tam listesi için Image dokümanlarına bakın.

Tutorial_api_04_sin.png
4. şekil. Arazi görünümü günahı.

Resim istatistikleri

Resimler üzerinde yapılan bir diğer faydalı işlem sınıfı, resim bölgelerindeki piksel istatistiklerinin veya raster-vektör katmanlarının hesaplanmasını içerir. Earth Engine'de istatistikleri hesaplamak için ee.Reducer paketindeki sınıflarla temsil edilen bir reducer kullanın. Örneğin, bir bölgedeki ortalama yükseklikle ilgilendiğinizi varsayalım. Geometri çizim araçlarını kullanarak bir poligon çizerek bölge tanımlayabilirsiniz. Bir bölgeyi etkileşimli olarak çizmek için poligon çizme aracını alın (), ardından ilgilendiğiniz alanın üzerinde bir poligon oluşturun ve işiniz bittiğinde Çıkış'ı tıklayın. Sonuçtaki ee.Geometry nesnesinin otomatik olarak geometry olarak adlandırıldığını ve komut dosyanızın en üstüne içe aktarma olarak eklendiğini unutmayın. İçe aktarma işlemlerinde değişken adını tıklayıp yeni adı yazarak bu değişkeni "polygon" olarak yeniden adlandırın.

Ardından, aşağıdaki kodu kullanarak poligondaki ortalama piksel değerini alın:

Kod Düzenleyici (JavaScript)

// Compute the mean elevation in the polygon.
var meanDict = srtm.reduceRegion({
  reducer: ee.Reducer.mean(),
  geometry: polygon,
  scale: 90
});

// Get the mean from the dictionary and print it.
var mean = meanDict.get('elevation');
print('Mean elevation', mean);

Bu konuda dikkat edilmesi gereken birkaç nokta vardır. İlk olarak, reduceRegion() işlevinin Image nesneleri için kullanılabilen bir yöntem olduğunu unutmayın (bölgeleri azaltma hakkında daha fazla bilgi edinin). İkinci olarak, yöntem bağımsız değişkenleri tek bir bağımsız değişken olarak iletilen bir JavaScript nesnesinde sağlanır. (Daha net bir ifadeyle, nesnenin anahtarları yöntem parametrelerinin adlarıdır. Değerler, yöntemin bağımsız değişkenleridir. Üçüncüsü, reducer parametresi hesaplanacak istatistik türünü, geometry parametresi ise istatistiğin hesaplanacağı bölgeyi belirtir. scale parametresi, kullanılacak piksel boyutunu metre cinsinden ifade eder. Belirsizliği önlemek için, Earth Engine girişlerden uygun ölçeği otomatik olarak belirleyemeyebileceğinden, küçültme yaparken ölçeği her zaman belirtmeniz gerekir. (Earth Engine'de ölçek hakkında daha fazla bilgi edinin).

Son olarak, reduceRegion() işlevinin döndürdüğü değer, anahtarların bant adları, değerlerin ise bantların piksel istatistikleri olduğu bir sözlüktür. Sözlükteki get() yöntemi, bağımsız değişken olarak sağlanan anahtara karşılık gelen değeri döndürür. Bu durumda, srtm resminde "elevation" adlı bir bant vardır. Bu nedenle, örnek kod bu istatistiği sözlükten alır ve yazdırır.

Bu kodu çalıştırdığınızda aşağıdaki gibi bir hata alırsanız:

Endişelenmeyin. Hatayı düzeltmek için yapabileceğiniz birkaç şey vardır. reduceRegion() yöntemi, hesaplamanıza gerçekten bu kadar çok piksel eklemek isteyip istemediğinizi değerlendirmenizi sağlayan bir kontrole sahiptir. Bu, yanlışlıkla saçma bir şey yapmanızı (ör. dünyadaki her bir metrelik pikselin ortalamasını hesaplamaya çalışmak) engellemek için tasarlanmıştır. Hatayı düzeltmek için bestEffort parametresini true olarak ayarlayın (parametre sözlüğüne bestEffort: true ekleyerek) veya maxPixels parametresini varsayılan değer olan 10 milyon pikselden daha yüksek bir değere ayarlayın ya da her ikisini de yapın. bestEffort doğruysa Earth Engine, maxPixels değerinin aşılmaması için ölçeği otomatik olarak yeniden hesaplar.

Konu dışı: Earth Engine'de ölçek

Önceki örnekte scale, SRTM görüntüsünün yaklaşık olarak doğal çözünürlüğüne ayarlanmıştır. Bir resmin doğal çözünürlüğünü şu yöntemlerle öğrenebilirsiniz:

Kod Düzenleyici (JavaScript)

var scale = srtm.projection().nominalScale();
print('SRTM scale in meters', scale);

Yerel çözünürlükten daha küçük bir ölçek belirtirseniz Earth Engine, girişteki görüntüyü en yakın komşuyu kullanarak yeniden örnekler ve bu küçük piksellerin tümünü hesaplamaya dahil eder. Ölçeği daha büyük olarak ayarlarsanız Earth Engine, girişin toplu bir sürümünden giriş piksellerini kullanır (ör. görüntü piramidinin daha yüksek bir düzeyinden pikselleri alır). Earth Engine'in ölçeği nasıl işlediği hakkında daha fazla bilgiyi bu dokümanda bulabilirsiniz.

Şimdiye kadar tek bantlı tek bir resimle çalıştınız. Bir sonraki sayfada, çok bantlı görüntüler ve görüntü koleksiyonları hakkında bilgi edineceksiniz.