İstemci ve sunucu dokümanında, komut dosyanızda referans verilen nesnelerin istemci tarafında veya sunucu tarafında nasıl olabileceği açıklanmaktadır. Komut dosyasının tamamı, yalnızca kullanmak istediğiniz nesneleri değil, aynı zamanda Earth Engine'a bu nesnelerle ne yapacağını bildiren bir talimat grubu da içerir. Bu dokümanda, bu talimatların işlenmek üzere Google'a nasıl gönderildiği ve sonuçların görüntülenmesi için istemciye nasıl geri gönderildiği açıklanmaktadır.
Earth Engine'da bir komut dosyası (JavaScript veya Python) yazdığınızda bu kod doğrudan Google'daki Earth Engine sunucularında ÇALIŞMAZ. Bunun yerine, istemci kitaplığı komut dosyasını bir dizi JSON nesnesine kodlar, nesneleri Google'a gönderir ve yanıt bekler. Her nesne, belirli bir çıkışı (ör. istemcide gösterilecek bir resim) elde etmek için gereken bir dizi işlemi temsil eder. Aşağıdaki kodu ele alalım:
Kod Düzenleyici (JavaScript)
var image = ee.Image('CGIAR/SRTM90_V4'); var operation = image.add(10); print(operation.toString()); print(operation);
import ee import geemap.core as geemap
Colab (Python)
image = ee.Image('CGIAR/SRTM90_V4') operation = image.add(10) print(operation) print(operation.getInfo())
İlk print ifadesi, istemci kitaplığının Google'daki sunucuya bu resmi tanımlamak için kullandığı JSON yapısını döndürür:
ee.Image({ "type": "Invocation", "arguments": { "image1": { "type": "Invocation", "arguments": { "id": "CGIAR/SRTM90_V4" }, "functionName": "Image.load" }, "image2": { "type": "Invocation", "arguments": { "value": 10 }, "functionName": "Image.constant" } }, "functionName": "Image.add" })
İkinci print ifadesi, isteği Google'a gönderir ve Google sunucularından gelen POST yanıtını döndürür. Yanıtı JSON biçiminde görmek için konsolun sağ tarafındaki basılı nesnenin yanındaki JSON
bağlantısını tıklayın:
{ "type": "Image", "bands": [ { "id": "elevation", "data_type": { "type": "PixelType", "precision": "int", "min": -32758, "max": 32777 }, "crs": "EPSG:4326", "crs_transform": [ 0.0008333333535119891, 0, -180, 0, -0.0008333333535119891, 60 ] } ] }
İstekte bulunulana kadar hiçbir şey işlenmek üzere Google'a gönderilmez. Bu örnekte, bir sunucu nesnesinde getInfo()
çağrısının sonucunun yazdırılması bir istek tetikler. Bu sonuç açıkça istenene kadar sunucuda işlem yapılmaz. JavaScript Kod Düzenleyici'deki print()
işlevinin, eşzamansız bir getInfo()
çağrısını sarmalayan özel bir istemci tarafı işlevi olduğunu unutmayın. Python için bu işlevi doğrudan çağırırız.
Bir şeyi istemenin başka bir örneği, Kod Düzenleyici'de veya geemap harita öğesinde görüntülemektir. Bu istek Google'a gönderildiğinde, yalnızca sonucu Kod Düzenleyici'de veya geemap harita öğesinde göstermek için gereken karolar döndürülür. Daha açık belirtmek gerekirse, haritanın konumu ve yakınlaştırma düzeyi, hangi verilerin işleneceğini ve haritada görüntülenebilecek resimlere dönüştürüleceğini belirler. Kaydırdığınızda veya yakınlaştırdığınızda diğer karoların yavaşça hesaplanacağını unutmayın. Bu isteğe bağlı sistem, paralelleştirmeye ve verimli işlemeye olanak tanır ancak haritada görüntülenen resmin, harita sınırlarının yakınlaştırma düzeyine ve konumuna bağlı olarak farklı girişlerden üretildiği anlamına da gelir. Bir hesaplamanın girişlerinin istekten nasıl belirlendiği hakkında daha fazla bilgi edinmek için Scale dokümanındaki