การดำเนินการที่เลื่อนเวลา

เอกสารไคลเอ็นต์กับเซิร์ฟเวอร์อธิบายวิธีที่ออบเจ็กต์ที่อ้างอิงในสคริปต์อาจเป็นฝั่งไคลเอ็นต์หรือฝั่งเซิร์ฟเวอร์ สคริปต์ที่สมบูรณ์จะมีไม่เพียงออบเจ็กต์ที่คุณต้องการใช้เท่านั้น แต่ยังมีคําสั่งชุดหนึ่งที่บอก Earth Engine ว่าต้องทําอย่างไรกับออบเจ็กต์เหล่านั้น เอกสารนี้อธิบายวิธีส่งคำสั่งเหล่านั้นไปยัง Google เพื่อประมวลผล และวิธีส่งผลลัพธ์กลับไปยังไคลเอ็นต์เพื่อแสดง

เมื่อคุณเขียนสคริปต์ใน Earth Engine (JavaScript หรือ Python) โค้ดดังกล่าวจะไม่ทำงานบนเซิร์ฟเวอร์ Earth Engine ของ Google โดยตรง แต่ไลบรารีไคลเอ็นต์จะเข้ารหัสสคริปต์เป็นชุดออบเจ็กต์ JSON ส่งออบเจ็กต์เหล่านั้นไปยัง Google แล้วรอการตอบกลับ ออบเจ็กต์แต่ละรายการแสดงชุดการดำเนินการที่จําเป็นต่อการรับเอาต์พุตหนึ่งๆ เช่น รูปภาพที่จะแสดงในไคลเอ็นต์ ลองดูโค้ดต่อไปนี้

เครื่องมือแก้ไขโค้ด (JavaScript)

var image = ee.Image('CGIAR/SRTM90_V4');
var operation = image.add(10);
print(operation.toString());
print(operation);

การตั้งค่า Python

ดูข้อมูลเกี่ยวกับ Python API และการใช้ geemap สําหรับการพัฒนาแบบอินเทอร์แอกทีฟได้ที่หน้า สภาพแวดล้อม Python

import ee
import geemap.core as geemap

Colab (Python)

image = ee.Image('CGIAR/SRTM90_V4')
operation = image.add(10)
print(operation)
print(operation.getInfo())

คำสั่งพิมพ์แรกจะแสดงโครงสร้าง JSON ที่ไลบรารีไคลเอ็นต์ใช้อธิบายรูปภาพนั้นแก่เซิร์ฟเวอร์ที่ Google

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"
})
    

คำสั่งพิมพ์ที่ 2 จะส่งคำขอไปยัง Google และแสดงผลลัพธ์การตอบกลับ POST จากเซิร์ฟเวอร์ Google หากต้องการดูการตอบกลับในรูปแบบ 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() ในออบเจ็กต์เซิร์ฟเวอร์จะทริกเกอร์คำขอ ระบบจะไม่ประมวลผลในเซิร์ฟเวอร์จนกว่าจะมีการขอผลลัพธ์นั้นอย่างชัดเจน โปรดทราบว่า print() ในเครื่องมือแก้ไขโค้ด JavaScript เป็นฟังก์ชันฝั่งไคลเอ็นต์พิเศษที่รวมการเรียกใช้ getInfo() แบบอะซิงโครนัส สำหรับ Python เราจะเรียกใช้โดยตรง

อีกตัวอย่างหนึ่งของคําขอคือการแสดงในเครื่องมือแก้ไขโค้ดหรือองค์ประกอบแผนที่ของ geemap เมื่อส่งคำขอนี้ไปยัง Google ระบบจะแสดงเฉพาะชิ้นส่วนแผนที่ที่จําเป็นในการแสดงผลลัพธ์ในเครื่องมือแก้ไขโค้ดหรือองค์ประกอบแผนที่ของ geemap กล่าวโดยละเอียดคือ ตำแหน่งของแผนที่และระดับการซูมจะเป็นตัวกำหนดว่าข้อมูลใดจะได้รับการดำเนินการประมวลผลและเปลี่ยนเป็นภาพที่แสดงบนแผนที่ได้ หากคุณเลื่อนหรือซูม โปรดทราบว่าระบบจะประมวลผลไทล์อื่นๆ แบบล่าช้า ระบบแบบออนดีมานด์นี้ช่วยให้การประมวลผลเป็นแบบขนานและมีประสิทธิภาพ แต่ก็หมายความว่ารูปภาพที่แสดงบนแผนที่จะสร้างขึ้นจากอินพุตที่แตกต่างกันโดยขึ้นอยู่กับระดับการซูมและตำแหน่งของขอบเขตแผนที่ ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีกำหนดอินพุตสำหรับการคํานวณจากคําขอในเอกสารการปรับขนาด