Bu Başlangıç Kılavuzu, Earth Engine JavaScript API ile programlamaya hızlı bir şekilde başlamanızı sağlamak için hazırlanmıştır. JavaScript'e giriş niteliğinde bir bakış ve Earth Engine API ile daha ayrıntılı alıştırmalar için eğitimleri inceleyin. Önerilen JavaScript kodlama stili için Google JavaScript Stil Kılavuzu'na bakın.
Google Earth Engine, kullanıcıların Google'ın altyapısında depolanan coğrafi referanslı görüntüler ve vektörler üzerinde algoritmalar çalıştırmalarına olanak tanır. Google Earth Engine API, görüntüleme ve analiz için verilere uygulanabilecek bir işlev kitaplığı sağlar. Earth Engine'ın herkese açık veri kataloğu, herkese açık çok sayıda görüntü ve vektör veri kümesi içerir. Gizli öğeler, kullanıcıların kişisel klasörlerinde de oluşturulabilir.
Bu dokümanları kullanma
Earth Engine dokümanları, coğrafi veri analizine aşina olan kullanıcılar için tasarlanmıştır. Dokümanlar öncelikle veri türüne göre yapılandırılmıştır. Örneğin, soldaki gezinme menüsünde Image
,
ImageCollection
,
Feature
,
FeatureCollection
,
Geometry
,
Reducer
,
Chart
, Join
ve
Array
gibi önemli veri türleriyle ilgili bölümlere veya sayfalara bağlantılar bulunur. Bu kılavuzda, bu türlerle ilgili yalnızca başlangıç için gereken bilgiler verilmektedir. Makine öğrenimi, özel veya sensöre özel algoritmalar (ör. Landsat algoritmaları), herkese açık uygulamalar, veri (öğe) yönetimi ve Earth Engine'ın işleyişiyle ilgili önemli ayrıntılar için bölümler de bulunmaktadır.
Bu konulardan herhangi birine başlamadan önce buradan başlayın.
Kod Düzenleyici
Kod Düzenleyici, Earth Engine uygulamalarını geliştirmek için kullanılan etkileşimli bir ortamdır (Şekil 1). Orta panelde JavaScript kod düzenleyici bulunur. Düzenleyicinin üzerinde, mevcut komut dosyasını kaydetme, çalıştırma ve haritayı temizleme düğmeleri bulunur. Bağlantı Al düğmesi, adres çubuğunda komut dosyası için benzersiz bir URL oluşturur. Alt paneldeki harita, senaryo tarafından eklenen katmanları içerir. Üst tarafta, veri setleri ve yerler için bir arama kutusu bulunur. Sol panelde kod örnekleri, kayıtlı komut dosyalarınız, aranabilir bir API referansı ve gizli veriler için bir öğe yöneticisi bulunur. Sağ panelde haritayı sorgulamayla ilgili bir denetleyici, çıkış konsolu ve uzun süreli görevler için bir yönetici bulunur. Sağ üstteki yardım düğmesinde Kod Düzenleyici kılavuzundan ve Yardım alma kılavuzundan daha fazla bilgi edinin.
bu kılavuzun ve yardım alabileceğiniz diğer kaynakların bağlantıları yer alır.
Kod Düzenleyici'de kod açma ve çalıştırma
Aşağıdaki adımlarda, Earth Engine'un nasıl açılacağı ve bir resim gösteren özel bir komut dosyasının nasıl çalıştırılacağı gösterilmektedir. En iyi sonuçlar için Google'ın web tarayıcısı olan Chrome'un en son sürümünü buradan yükleyebilirsiniz.
- Earth Engine Code Editor'ı şu adresten açın: code.earthengine.google.com.
- Kod düzenleyicinin en solundaki Komut Dosyaları sekmesine gidin. Burada, Earth Engine verilerine erişen, görüntüleyen ve analiz eden örnek komut dosyalarının bir koleksiyonunu bulabilirsiniz.
- "Resim Koleksiyonu" bölümünde "Filtrelenmiş Kompozit" örneğini seçin. Orta konsolda bir komut dosyasının göründüğünü görürsünüz. Komut dosyasını yürütmek için Çalıştır düğmesine basın. Filtrelenmiş Kompozit örneğinde, Colorado ve Utah'ın kesişim noktasında veya sınırları içinde bulunan Landsat 7 görüntüleri seçilir. Ardından, seçilen resimlerin gerçek renkli bir birleşimini gösterir. Örnekler,
filter()
,clip()
veMap.addLayer()
gibi yaygın olarak kullanılan yöntemlerle ilgili bilgi verir.
Earth Engine veri yapıları
Earth Engine'daki en temel iki coğrafi veri yapısı, sırasıyla raster ve vektör veri türlerine karşılık gelen Image
ve Feature
'tir. Görüntüler, bantlardan ve bir özellik sözlüğünden oluşur.
Özellikler, bir Geometry
ve özellik dilinden oluşur. Bir resim grubu (ör. resim zaman serisi), bir ImageCollection
tarafından işlenir. Bir özellik koleksiyonu, FeatureCollection
tarafından yönetilir. Earth Engine'daki diğer temel veri yapıları Dictionary
,
List
, Array
, Date
,
Number
ve String
'tir (Temel veri türleri hakkında daha fazla bilgi edinmek için bu eğitime göz atın. Bunların hepsinin sunucu tarafı nesneler olduğunu ve istemci tarafı JavaScript nesneleriyle aynı şekilde işlenmediğini unutmayın (daha fazla bilgi edinin).
Earth Engine algoritmaları
API'de işlem yapmanın birkaç yolu vardır:
- Nesnelere bağlı yöntemleri çağırma.
- Algoritmaları çağırma.
- Kod Düzenleyici'ye özgü işlevleri çağırma.
- Yeni işlevler tanımlama
Kod Düzenleyici'nin Dokümanlar sekmesinde her API sınıfının yöntemleri listelenir. Örneğin, Image
sınıfında bir add()
yöntemi vardır:
Kod Düzenleyici (JavaScript)
var image3 = image1.add(image2);
Bu yöntem, image2
bantlarını image1
bantlarına ekler.
ee.Algorithms
kategorisi, özelleştirilmiş veya alana özel işleme için şu anda desteklenen algoritmaların listesini içerir. Örneğin, giriş Dijital Yükseklik Modeli'nden (DEM) topografik katmanlar oluşturmak için:
Kod Düzenleyici (JavaScript)
var terrainImage = ee.Algorithms.Terrain(dem);
Kod Düzenleyiciye özgü işlevler arasında, katmanların harita paneline nasıl eklendiğini veya Google Drive'a nasıl dışa aktarıldığını kontrol eden Map
ve Export
yöntemleri bulunur. JavaScript'te işlevler aşağıdakiler kullanılarak da oluşturulabilir:
Kod Düzenleyici (JavaScript)
var myFunction = function(args) { // do something return something; };
Eşleme bölümünde gösterildiği gibi, kullanıcı tanımlı işlevler aşağıdakileri kullanarak özel işlevler oluşturmak veya bir koleksiyonun öğelerini değiştirmek için yararlıdır:
Kod Düzenleyici (JavaScript)
var collection2 = collection1.map(aFunction);
Aşağıdaki bölümlerde, bu kavramlar çeşitli basit kullanım alanları için gösterilmektedir.
'Merhaba dünya!' JavaScript
Bilgileri konsola yazdırmak, bir nesne hakkında bilgi edinmek, bir hesaplamanın sayısal sonucunu görüntülemek, nesne meta verilerini görüntülemek veya hata ayıklama işlemine yardımcı olmak için temel bir işlemdir. Kod Düzenleyici'deki ikonik "Merhaba Dünya!" örneği:
Kod Düzenleyici (JavaScript)
print('Hello world!');
Bu satırı Kod Düzenleyici'nin kod düzenleyicisine kopyalayıp Çalıştır'ı tıklayın. Çıktının, Kod Düzenleyici'nin sağındaki Konsol sekmesinde görüntülendiğini unutmayın. Uzaktan algılamayla daha alakalı bir örnek için aşağıdaki komut, Landsat 8 görüntüsünün meta verilerini yazdırır:
Kod Düzenleyici (JavaScript)
print(ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318'));
Landsat görüntüleri için kullanılabilen meta verileri görmek üzere konsoldaki çıkışı dikkatlice inceleyin.
Haritaya veri ekleme
Bilgileri konsola yazdırmanın yanı sıra, coğrafi verileri görselleştirmenin yolu Map
veri eklemektir. Bunu yapmak için Map.addLayer()
'ü kullanın. Aşağıdaki örnekte, ee.Image()
kullanılarak bir Image
oluşturulur (bu resimlerin nasıl bulunacağı daha sonra ele alınacaktır), Map.addLayer()
ile haritaya eklenir ve harita resmin üzerine hizalanır:
Kod Düzenleyici (JavaScript)
// Load an image. var image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318'); // Center the map on the image. Map.centerObject(image, 9); // Display the image. Map.addLayer(image);
Map.centerObject()
parametresinin ikincisi, daha yüksek sayılar daha büyük ölçeği (daha fazla yakınlaştırılmış) gösterdiği bir yakınlaştırma düzeyidir. Map
işlevlerinin parametreleri, Dokümanlar sekmesinden erişilebilen API referansında ayrıntılı olarak açıklanmıştır. Resmin görünümü tatmin edici değilse görüntüleme parametrelerini Map.addLayer()
için ek bir bağımsız değişkenle yapılandırın. Örneğin:
Kod Düzenleyici (JavaScript)
// Load the image from the archive. var image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318'); // Define visualization parameters in an object literal. var vizParams = {bands: ['B5', 'B4', 'B3'], min: 0.02, max: 0.4, gamma: 1.3}; // Center the map on the image and display. Map.centerObject(image, 9); Map.addLayer(image, vizParams, 'Landsat 8 false color');
Görselleştirme parametrelerinin, görüntülenecek bantların listesini, minimum ve maksimum yansıtma değerini ve bir gama değerini içeren bir nesne değişmezi ile tanımlandığını unutmayın. (Landsat bantları hakkında daha fazla bilgiyi burada bulabilirsiniz. Görsel görselleştirme hakkında daha fazla bilgiye buradan ulaşabilirsiniz.
Haritaya özellik ve özellik koleksiyonları eklemek için Map.addLayer()
simgesini kullanın. Örneğin:
Kod Düzenleyici (JavaScript)
var counties = ee.FeatureCollection('TIGER/2018/Counties'); Map.addLayer(counties, {}, 'counties');
Resimleri, resim koleksiyonlarını ve özellik koleksiyonlarını bulma
Görüntüler, resim koleksiyonları ve özellik koleksiyonları, Earth Engine Data Catalog'ta arama yapılarak bulunabilir. Örneğin, arama alanına "Landsat 8" yazıldığında raster veri kümelerinin listesi gösterilir. (Earth Engine veri kümelerinin tam listesi Earth Engine Veri Kataloğu'ndadır.) Kısa bir açıklama, zamansal kullanılabilirlik, veri sağlayıcı ve koleksiyon kimliği hakkında bilgi edinmek için veri kümesi adını tıklayın. Komut dosyanızın en üstünde bu koleksiyon için bir değişken içeren İçe Aktarımlar bölümünü otomatik olarak oluşturmak üzere İçe Aktar düğmesini tıklayın.
Alternatif olarak, koleksiyon kimliğini kopyalayıp kodunuza yapıştırabilirsiniz. Örneğin, "Landsat 8" aramasının 1. Katman TOA sonucunu seçin ve kimliği aşağıdaki gibi kopyalayın:
Kod Düzenleyici (JavaScript)
var collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA');
Bu, Dünya'nın kara yüzeyini kapsayan birçok görüntünün yer aldığı bir koleksiyon olduğundan, koleksiyondaki tek bir görüntüyü bulmak için aramayı daraltmak amacıyla filtreleme yapmanız gerekir. Alternatif olarak, resim koleksiyonu, birleştirme ve mozaik oluşturma teknikleri kullanılarak tek bir resme indirilebilir. Filtreleme ve derleme hakkında daha fazla bilgiyi sonraki bölümlerde bulabilirsiniz (Küçültme bölümüne bakın).
Özellik koleksiyonları, Veri Kataloğu'ndan da kullanılabilir. Bu koleksiyonlar, resim koleksiyonlarından daha küçüktür ancak uluslararası, nüfus sayımı, su havzası ve korunan alan sınırları gibi çeşitli bilgileri bu koleksiyonlarda bulabilirsiniz. Kendi vektör veri kümelerinizi içe aktarma hakkında daha fazla bilgiyi burada bulabilirsiniz.
Filtreleme ve sıralama
Sonuç sayısını sınırlamak için genellikle bir koleksiyonu alana ve/veya zamana göre filtrelemek gerekir. Örneğin, San Francisco için bulutsuz bir görüntü bulmak amacıyla Landsat 8 görüntü koleksiyonunu sıralama görevini düşünün. Öncelikle, ilgilenilen bölgeyi tanımlamak gerekir. Bu konuda nokta kullanmak genellikle faydalıdır. Kod Düzenleyici'nin sağ tarafındaki Denetleyici sekmesini etkinleştirin ve ilgilendiğiniz alanın ortasına yakın bir yeri tıklayın, Denetleyici sekmesindeki koordinatları kopyalayın, ardından aşağıdakileri kullanarak bir Point
oluşturun:
Kod Düzenleyici (JavaScript)
var point = ee.Geometry.Point(-122.262, 37.8719);
Başlangıç ve bitiş tarihlerini oluşturun:
Kod Düzenleyici (JavaScript)
var start = ee.Date('2014-06-01'); var finish = ee.Date('2014-10-01');
Landsat 8 koleksiyonunu noktayı ve tarihleri kullanarak filtreleyin, ardından bir meta veri mülkü (Landsat 8 sahne meta verilerinin incelenmesi sırasında keşfedilen) kullanarak sıralayın:
Kod Düzenleyici (JavaScript)
var filteredCollection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA') .filterBounds(point) .filterDate(start, finish) .sort('CLOUD_COVER', true);
Bu koleksiyon güvenli bir şekilde basılıp incelenebilir. (Koleksiyonda çok fazla resim varsa baskı işlemi çok yavaş olur, zaman aşımı olur veya hata döndürülür). Koleksiyondaki resimlerin, ImageCollection
öğesinin "özellikler" özelliğinde depolanan bir List
olduğunu unutmayın. Koleksiyondaki herhangi bir resmin kimliği, yukarıdaki gibi Image
oluşturucuya kopyalanabilir. Alternatif olarak, ilk görüntüyü (en düşük bulut örtüsü) elde edin:
Kod Düzenleyici (JavaScript)
var first = filteredCollection.first();
Bağımsız değişken olarak ee.Filter
ile filter()
kullanarak Earth Engine filtreleme işlevinin tamamına erişin. (Yukarıdaki filterBounds()
ve filterDate()
yöntemleri kısayollardır.) Örneğin, aşağıdaki kod bir Filter
oluşturur, bu Filter
'yi bir FeatureCollection
'yi filtrelemek için kullanır ve sonucu gösterir:
Kod Düzenleyici (JavaScript)
// Load a feature collection. var featureCollection = ee.FeatureCollection('TIGER/2016/States'); // Filter the collection. var filteredFC = featureCollection.filter(ee.Filter.eq('NAME', 'California')); // Display the collection. Map.setCenter(-119.604, 37.798, 6); Map.addLayer(filteredFC, {}, 'California');
Bant matematik
Image
yöntemlerini kullanarak resimlerde matematik işlemleri gerçekleştirin. Buna bant yeniden birleştirme işlemleri (spektral indeksler), görüntü farklaştırma veya sabit çarpma gibi matematiksel işlemler dahildir. Örneğin, 20 yıl arayla çekilmiş Normalleştirilmiş Fark Bitki Örtüsü İndeksi (NDVI) resimleri arasındaki farkı hesaplayabilirsiniz:
Kod Düzenleyici (JavaScript)
// This function gets NDVI from Landsat 5 imagery. var getNDVI = function(image) { return image.normalizedDifference(['B4', 'B3']); }; // Load two Landsat 5 images, 20 years apart. var image1 = ee.Image('LANDSAT/LT05/C02/T1_TOA/LT05_044034_19900604'); var image2 = ee.Image('LANDSAT/LT05/C02/T1_TOA/LT05_044034_20100611'); // Compute NDVI from the scenes. var ndvi1 = getNDVI(image1); var ndvi2 = getNDVI(image2); // Compute the difference in NDVI. var ndviDifference = ndvi2.subtract(ndvi1);
Bu örnekte kullanıcı tanımlı bir function
değerinin kullanıldığına dikkat edin. İşlevler hakkında daha fazla bilgiyi sonraki bölümde bulabilirsiniz.
Eşleme (for döngüsü yerine yapılması gerekenler)
Bir koleksiyondaki öğeleri iterasyonla işlemek için map()
değerini kullanın. (For döngüleri, Earth Engine'da bunu yapmanın doğru yolu DEĞİLDİR ve kullanılmamalıdır). map()
işlevi, ImageCollection
, FeatureCollection
veya List
'e uygulanabilir ve bağımsız değişkeni olarak function
değerini kabul eder. İşlevin bağımsız değişkeni, eşlendiği koleksiyonun bir öğesidir. Bu, koleksiyondaki her öğeyi aynı şekilde değiştirmek için (ör. ekleme) kullanışlıdır. Örneğin, aşağıdaki kod bir ImageCollection
içindeki her görüntüye NDVI bandı ekler:
Kod Düzenleyici (JavaScript)
// This function gets NDVI from Landsat 8 imagery. var addNDVI = function(image) { return image.addBands(image.normalizedDifference(['B5', 'B4'])); }; // Load the Landsat 8 TOA data, filter by location and date. var collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA') .filterBounds(ee.Geometry.Point(-122.262, 37.8719)) .filterDate('2014-06-01', '2014-10-01'); // Map the function over the collection. var ndviCollection = collection.map(addNDVI);
Sık karşılaşılan bir diğer görev de FeatureCollection
içindeki özelliklere yeni bir özellik (veya "özellik" ya da "alan") eklemektir. Aşağıdaki örnekte, yeni mülk iki mevcut özelliği içeren bir hesaplamadır:
Kod Düzenleyici (JavaScript)
// This function creates a new property that is the sum of two existing properties. var addField = function(feature) { var sum = ee.Number(feature.get('property1')).add(feature.get('property2')); return feature.set({'sum': sum}); }; // Create a FeatureCollection from a list of Features. var features = ee.FeatureCollection([ ee.Feature(ee.Geometry.Point(-122.4536, 37.7403), {property1: 100, property2: 100}), ee.Feature(ee.Geometry.Point(-118.2294, 34.039), {property1: 200, property2: 300}), ]); // Map the function over the collection. var featureCollection = features.map(addField); // Print a selected property of one Feature. print(featureCollection.first().get('sum')); // Print the entire FeatureCollection. print(featureCollection);
add()
yönteminin kullanılabilmesi için özellik değerinin sayı olarak tanınması amacıyla ee.Number
değerine dönüştürme işleminin gerekli olduğunu unutmayın. Koleksiyonun türü map()
tarafından değiştirilebilir. Örneğin:
Kod Düzenleyici (JavaScript)
// This function returns the image centroid as a new Feature. var getGeom = function(image) { return ee.Feature(image.geometry().centroid(), {foo: 1}); }; // Load a Landsat 8 TOA collection. var collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA') .filterBounds(ee.Geometry.Point(-122.262, 37.8719)) .filterDate('2014-06-01', '2014-10-01'); // Map the function over the ImageCollection. var featureCollection = ee.FeatureCollection(collection.map(getGeom)); // Print the collection. print(featureCollection);
Resim merkezine göre oluşturulan her özellik için eklenen özelliğe (foo
) dikkat edin. Son satırda, cast işlevi, elde edilen koleksiyonu FeatureCollection
olarak tanınabilir hale getirir.
Azalan
Azaltma, Earth Engine'da zaman, alan, bant, dizi ve diğer veri yapıları genelinde verileri toplama yöntemidir. API'de bu amaç için çeşitli yöntemler vardır. Örneğin, bir ImageCollection
'ün kompozisyonunu oluşturmak için koleksiyondaki resimleri tek bir resime indirgemek üzere reduce()
'ü kullanın. Basit bir örnek olarak, daha önce tanımlanan Landsat 8 koleksiyonundaki en az bulutlu beş görüntünün medyan birleşimini oluşturmayı gösterebiliriz:
Kod Düzenleyici (JavaScript)
// Load a Landsat 8 TOA collection. var collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA') // Filter by date and location. .filterBounds(ee.Geometry.Point(-122.262, 37.8719)) .filterDate('2014-01-01', '2014-12-31') // Sort by increasing cloudiness. .sort('CLOUD_COVER'); // Compute the median of each pixel for each band of the 5 least cloudy scenes. var median = collection.limit(5).reduce(ee.Reducer.median());
Azaltma, Feature
veya FeatureCollection
ile tanımlanan bölgelerdeki bir resmin istatistiklerini elde etmenin de yoludur. Görevin, ilgilenilen bir alan içindeki ortalama piksel değerlerini hesaplamak olduğunu varsayalım. Bu amaçla reduceRegion()
'ü kullanın. Örneğin:
Kod Düzenleyici (JavaScript)
// Load and display a Landsat TOA image. var image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318'); Map.addLayer(image, {bands: ['B4', 'B3', 'B2'], max: 0.3}); // Create an arbitrary rectangle as a region and display it. var region = ee.Geometry.Rectangle(-122.2806, 37.1209, -122.0554, 37.2413); Map.addLayer(region); // Get a dictionary of means in the region. Keys are bandnames. var mean = image.reduceRegion({ reducer: ee.Reducer.mean(), geometry: region, scale: 30 });
Azaltıcı dokümanından azaltıcılar hakkında daha fazla bilgi edinin.
Maskeleme
ee.Image
içindeki her pikselin hem bir değeri hem de 0 (veri yok) ile 1 arasında değişen bir maskesi vardır. Maskelenmiş pikseller (mask==0) veri yok olarak değerlendirilir. 0 < mask ≤ 1 olan piksellerin bir değeri vardır ancak sayısal hesaplamalar için maske tarafından ağırlıklandırılır.
Maskeleri kullanarak pikselleri saydam hale getirebilir veya analizden hariç tutabilirsiniz. Maske değeri sıfır olduğunda pikseller maskelenir. Görüntü farkı örneğine devam edecek olursak, fark aralığında NDVI'nin arttığı ve azaldığı alanları görüntülemek için bir maske kullanın:
// This function gets NDVI from Landsat 5 imagery. var getNDVI = function(image) { return image.normalizedDifference(['B4', 'B3']); }; // Load two Landsat 5 images, 20 years apart. var image1 = ee.Image('LANDSAT/LT05/C02/T1_TOA/LT05_044034_19900604'); var image2 = ee.Image('LANDSAT/LT05/C02/T1_TOA/LT05_044034_20100611'); // Compute NDVI from the scenes. var ndvi1 = getNDVI(image1); var ndvi2 = getNDVI(image2); // Compute the difference in NDVI. var ndviDifference = ndvi2.subtract(ndvi1); // Load the land mask from the SRTM DEM. var landMask = ee.Image('CGIAR/SRTM90_V4').mask(); // Update the NDVI difference mask with the land mask. var maskedDifference = ndviDifference.updateMask(landMask); // Display the masked result. var vizParams = {min: -0.5, max: 0.5, palette: ['FF0000', 'FFFFFF', '0000FF']}; Map.setCenter(-122.2531, 37.6295, 9); Map.addLayer(maskedDifference, vizParams, 'NDVI difference');
Bu örnekte, NDVI farkının maskesinin updateMask()
ile arazi maskesi tarafından güncellendiğine dikkat edin. Bu işlem, NDVI fark maskesinin sıfır olmadığı her yerde NDVI fark piksellerinin maskesini arazi maskesine ayarlar.
Maskeleme, verileri analizden hariç tutmak için de kullanışlıdır. Azaltma bölümündeki reduceRegion()
örneğini inceleyin. Görevin, bulutlu pikseller hariç olmak üzere Kaliforniya'nın Santa Clara ilçesi için mevsimsel ortalama NDVI değerini hesaplamak olduğunu varsayalım. Aşağıdaki örnekte filtreleme, harita çıkarma, azaltma ve bulut maskesi kullanımı gibi birden fazla kavram gösterilmektedir:
Kod Düzenleyici (JavaScript)
// This function gets NDVI from a Landsat 8 image. var addNDVI = function(image) { return image.addBands(image.normalizedDifference(['B5', 'B4'])); }; // This function masks cloudy pixels. var cloudMask = function(image) { var clouds = ee.Algorithms.Landsat.simpleCloudScore(image).select(['cloud']); return image.updateMask(clouds.lt(10)); }; // Load a Landsat collection, map the NDVI and cloud masking functions over it. var collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA') .filterBounds(ee.Geometry.Point([-122.262, 37.8719])) .filterDate('2014-03-01', '2014-05-31') .map(addNDVI) .map(cloudMask); // Reduce the collection to the mean of each pixel and display. var meanImage = collection.reduce(ee.Reducer.mean()); var vizParams = {bands: ['B5_mean', 'B4_mean', 'B3_mean'], min: 0.02, max: 0.4}; Map.addLayer(meanImage, vizParams, 'mean'); // Load a region in which to compute the mean and display it. var counties = ee.FeatureCollection('TIGER/2018/Counties'); var santaClara = ee.Feature(counties.filter(ee.Filter.eq('NAME', 'Santa Clara')).first()); Map.addLayer(santaClara); // Get the mean of NDVI in the region. var mean = meanImage.select(['nd_mean']).reduceRegion({ reducer: ee.Reducer.mean(), geometry: santaClara.geometry(), scale: 30 }); // Print mean NDVI for the region. mean.get('nd_mean').evaluate(function(val){ print('Santa Clara spring mean NDVI:', val); });