클라이언트와 서버 비교 문서에서는 스크립트에서 참조되는 객체가 클라이언트 측 또는 서버 측일 수 있는 방법을 설명합니다. 전체 스크립트에는 사용하려는 객체뿐만 아니라 Earth Engine에 객체를 어떻게 처리할지 지시하는 일련의 안내가 포함됩니다. 이 문서에서는 이러한 안내가 처리를 위해 Google로 전송되는 방법과 결과가 표시되도록 클라이언트로 다시 전송되는 방법을 설명합니다.
Earth Engine에서 스크립트 (JavaScript 또는 Python)를 작성하면 Google의 Earth Engine 서버에서 코드가 직접 실행되지는 않습니다. 대신 클라이언트 라이브러리가 스크립트를 JSON 객체 세트로 인코딩하고 객체를 Google에 전송한 후 응답을 기다립니다. 각 객체는 특정 출력(예: 클라이언트에 표시할 이미지)을 가져오는 데 필요한 일련의 작업을 나타냅니다. 다음 코드를 살펴보세요.
코드 편집기 (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())
첫 번째 print 문이 클라이언트 라이브러리가 Google의 서버에 이미지를 설명하는 데 사용하는 JSON 구조를 출력합니다.
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" })
두 번째 print 문이 요청을 Google에 전송하고 Google 서버의 POST 응답을 출력합니다. JSON 형식으로 응답을 보려면 콘솔 오른쪽에 있는 출력된 객체 옆에 있는 JSON
링크를 클릭합니다.
{ "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 ] } ] }
요청이 있을 때까지는 처리를 위해 Google로 전송되는 항목이 없습니다. 이 예에서는 서버 객체에서 getInfo()
호출의 결과를 출력하면 요청이 트리거됩니다. 이 결과가 명시적으로 요청될 때까지 서버에서 처리가 이루어지지 않습니다. JavaScript 코드 편집기의 print()
는 비동기 getInfo()
호출을 래핑하는 특수한 클라이언트 측 함수입니다. Python의 경우 이를 직접 호출합니다.
요청의 또 다른 예는 Code Editor 또는 geemap 지도 요소에 표시하는 것입니다. 이 요청이 Google에 전송되면 Code Editor 또는 geemap 지도 요소에 결과를 표시하는 데 필요한 타일만 반환됩니다. 구체적으로 지도의 위치와 확대/축소 수준에 따라 처리되어 지도에 표시할 수 있는 이미지로 변환되는 데이터가 결정됩니다. 화면 이동이나 확대/축소를 하면 다른 타일은 지연 컴퓨팅됩니다. 이 주문형 시스템을 사용하면 병렬 처리와 효율적인 처리가 가능하지만 지도 경계의 확대/축소 수준과 위치에 따라 지도에 표시되는 이미지가 서로 다른 입력으로 생성된다는 의미이기도 합니다. 확장 문서에서 계산 입력이 요청에서 결정되는 방식을 자세히 알아보세요.