เอกสารไคลเอ็นต์กับเซิร์ฟเวอร์อธิบายวิธีที่ออบเจ็กต์ที่อ้างอิงในสคริปต์อาจเป็นฝั่งไคลเอ็นต์หรือฝั่งเซิร์ฟเวอร์ สคริปต์ที่สมบูรณ์จะมีไม่เพียงออบเจ็กต์ที่คุณต้องการใช้เท่านั้น แต่ยังมีคําสั่งชุดหนึ่งที่บอก 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);
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 กล่าวโดยละเอียดคือ ตำแหน่งของแผนที่และระดับการซูมจะเป็นตัวกำหนดว่าข้อมูลใดจะได้รับการดำเนินการประมวลผลและเปลี่ยนเป็นภาพที่แสดงบนแผนที่ได้ หากคุณเลื่อนหรือซูม โปรดทราบว่าระบบจะประมวลผลไทล์อื่นๆ แบบล่าช้า ระบบแบบออนดีมานด์นี้ช่วยให้การประมวลผลเป็นแบบขนานและมีประสิทธิภาพ แต่ก็หมายความว่ารูปภาพที่แสดงบนแผนที่จะสร้างขึ้นจากอินพุตที่แตกต่างกันโดยขึ้นอยู่กับระดับการซูมและตำแหน่งของขอบเขตแผนที่ ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีกำหนดอินพุตสำหรับการคํานวณจากคําขอในเอกสารการปรับขนาด