คำถามที่พบบ่อย

คำถามทั่วไป

ฉันมีปัญหาและต้องการความช่วยเหลือ

โพสต์คำถามตามคำแนะนำนี้ โดยระบุข้อมูลให้มากที่สุด (ดูคำแนะนำของ Stack Overflow เกี่ยวกับการถามคำถามที่ดี) ซึ่งโดยปกติแล้วจะหมายความว่า

  • การส่งลิงก์ไปยังสคริปต์ในตัวแก้ไขโค้ด (คลิกปุ่ม "รับลิงก์" เพื่อรับลิงก์)

  • การแชร์ชิ้นงาน ที่จำเป็นต่อการเรียกใช้สคริปต์

  • สำหรับงานแบบกลุ่มที่ไม่สำเร็จ ให้รายงานรหัสของงานที่ไม่สำเร็จ รหัสงานจะมีลักษณะ ดังนี้ 4C25GIJBMB52PXTEJTF4JLGL คุณดูได้ในแท็บงานของ ตัวแก้ไขโค้ด ดูข้อมูลเพิ่มเติม

ฉันจะอ่านเกี่ยวกับสถาปัตยกรรมของ Earth Engine ได้จากที่ใด

ดูเอกสารนี้ Gorelick et al. 2017

ดูหน้าEDU และ แหล่งข้อมูลการฝึกอบรม

ดูหลักสูตร EE ฟรีนี้ โดย Ujaval Gandhi ซึ่งมีวิดีโอที่แนะนำการรับรู้จากระยะไกล

การเขียนโปรแกรม Earth Engine

ข้อผิดพลาดในการเขียนโค้ดที่พบบ่อยมีอะไรบ้าง

ดูคู่มือการแก้ไขข้อบกพร่อง

เหตุใดฉันจึงได้รับข้อผิดพลาด "... ไม่ใช่ฟังก์ชัน"

ข้อผิดพลาดนี้เกิดขึ้นเมื่อ Earth Engine ไม่พบเมธอดที่เรียก ตรวจสอบสาเหตุที่พบบ่อยต่อไปนี้

การสะกดหรือการคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่: เมธอดคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ตรวจสอบ การสะกดคำกับเอกสารอ้างอิง API

Error: img.normalizedDiff(...) -> Correct: img.normalizedDifference(...)

การแคสต์ประเภทที่ขาดหายไป: ค่าที่แสดงจากฟังก์ชันต่างๆ เช่น .get() เป็นอินสแตนซ์ ee.ComputedObject ทั่วไปและต้องแคสต์อย่างชัดเจน ดูการแคสต์ประเภทออบเจ็กต์ที่ไม่รู้จัก

Error: dict.get('val').add(5) -> Correct: ee.Number(dict.get('val')).add(5)

การใช้ทั้งเมธอดฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์: ตรวจสอบว่าคุณไม่ได้ใช้เมธอด JavaScript หรือ Python มาตรฐาน (เช่น .push() หรือ .append()) ในออบเจ็กต์ Earth Engine ดูหลีกเลี่ยงการผสมฟังก์ชันไคลเอ็นต์และเซิร์ฟเวอร์

Error: list.push(4) or list.append(4) -> Correct: list.add(4)

วิธีการที่ไม่พร้อมใช้งาน: หากมีการพิมพ์ออบเจ็กต์อย่างถูกต้องและวิธีการ มีอยู่ในเอกสารประกอบหรือเคยใช้งานได้แต่ตอนนี้ใช้งานไม่ได้ โปรดรายงานข้อบกพร่อง

ทำไมฉันจึงใช้คณิตศาสตร์พื้นฐาน เช่น ee.Image("image") * 2 ไม่ได้

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

ฉันจะใช้ลูป for หรือคำสั่ง if/else ได้อย่างไร

การเขียนโปรแกรม Earth Engine จะใช้ภาษาฟังก์ชัน ดังนั้นควรแสดงลูปและการดำเนินการแบบมีเงื่อนไขโดยใช้แนวคิดที่เทียบเท่ากัน เช่น map หรือ filter ดูรายละเอียดเพิ่มเติมได้ที่หน้านี้

ฉันจะแสดงป้ายกำกับข้อความในรูปภาพหรือวิดีโอได้อย่างไร

ไม่มีการรองรับป้ายกำกับข้อความในตัว แต่คุณทำสิ่งต่อไปนี้ได้

ฉันใช้ชุดสีมาตรฐานได้ไหม

ใช้แพ็กเกจ JS ของบุคคลที่สาม ee-palettes

ฉันจะสร้างเว็บไซต์ของตัวเองที่ใช้ Earth Engine ได้อย่างไร

ใช้แอป Earth Engine สำหรับแอปพลิเคชันพื้นฐาน ในกรณีที่ซับซ้อนมากขึ้น คุณสามารถสร้างแอป App Engine ที่ขับเคลื่อนด้วย EE

รหัสแผนที่ทำงานอย่างไร

รหัสแผนที่ (เรียกว่า mapid ใน API) คือคีย์ที่ช่วยให้ไคลเอ็นต์ดึงข้อมูลแผนที่ได้ รหัสแต่ละรายการคือแฮชที่สร้างขึ้นโดยการระบุนิพจน์รูปภาพไปยัง ปลายทาง getMapId รหัสที่ได้คือคีย์ที่ชี้ไปยังทั้งการแสดงรูปภาพและข้อมูลเข้าสู่ระบบของผู้ใช้ ซึ่งจะใช้เพื่อสร้าง ไทล์ในขั้นตอนต่อๆ ไป

การขอไทล์แผนที่จะต้องระบุตำแหน่งของไทล์ (x, y, zoom) รวมถึง mapid (คีย์ของรูปภาพและข้อมูลเข้าสู่ระบบ) คุณสามารถใช้ รหัสเดียวกันซ้ำเพื่อโหลดแผนที่หลายแผ่นได้ ไม่มีข้อจำกัดในการนำmapidคีย์กลับมาใช้ใหม่ แต่คีย์จะหมดอายุหลังจากผ่านไป 2-3 ชั่วโมง เราไม่ได้เผยแพร่กรอบเวลาที่เฉพาะเจาะจงเกี่ยวกับระยะเวลาที่คุกกี้จะคงอยู่ แต่โค้ดที่คุณเขียนควรมีความยืดหยุ่นต่อการหมดอายุของรหัส

การสร้างรหัสเหล่านี้เกี่ยวข้องกับการจัดเก็บข้อมูลจำนวนเล็กน้อยและการตรวจสอบ ข้อมูลเข้าสู่ระบบ ดังนั้นจึงควรนำรหัสกลับมาใช้ซ้ำให้นานที่สุด ไม่มีโควต้า API ที่เชื่อมโยงกับปลายทาง getMapId โดยเฉพาะ แต่เวิร์กโฟลว์ใดๆ ที่เกี่ยวข้องกับการสร้างออบเจ็กต์ mapid ในอัตราที่ใกล้เคียงกับอัตราการ ดึงข้อมูลไทล์อาจมีข้อผิดพลาด Earth Engine ไม่มีปลายทาง API สำหรับนำออก แสดง หรือจัดการรหัสเหล่านี้ เนื่องจากเป็นทรัพยากรชั่วคราว

เหตุใด ee.Algorithms.If() จึงพิมพ์ทั้งกรณีที่เป็นจริงและเป็นเท็จ

function a() { print("true"); }
function b() { print("false"); }
// Prints 'true' and 'false'.
ee.Algorithms.If(true, a(), b());

If() อัลกอริทึมทำงานเหมือนกับอัลกอริทึมอื่นๆ ทั้งหมดใน Earth Engine โดยอาร์กิวเมนต์ทั้งหมดต้องได้รับการประเมินก่อนที่อัลกอริทึมจะทำงานได้ อัลกอริทึมจะได้รับทั้งผลลัพธ์ trueCase และ falseCase จากนั้นจะเลือก และแสดงผลลัพธ์หนึ่งตามอาร์กิวเมนต์ condition แต่ต้องมีการ เรียกใช้ทั้ง 2 เส้นทางเพื่อให้ระบบส่งค่าเหล่านั้นไปยังอัลกอริทึมตั้งแต่แรก

ฉันได้รับข้อผิดพลาด "ขนาดเพย์โหลดของคำขอเกินขีดจำกัด"

คุณพยายามส่งคำขอขนาดใหญ่มากไปยัง Earth Engine โดยปกติแล้ว ปัญหานี้จะเกิดขึ้นเมื่อโค้ดใช้ลูป "for" ฝั่งไคลเอ็นต์จำนวนมาก หรือสร้าง FeatureCollection จากออบเจ็กต์เรขาคณิตจำนวนมาก ในกรณีหลัง แทนที่จะสร้างรูปทรงเรขาคณิตดังกล่าวในสคริปต์ ให้สร้างไฟล์ CSV ที่มีรูปทรงเหล่านั้น แล้วอัปโหลดลงในชิ้นงานตาราง

ee.Image.clip() กับ ee.Filter.bounds() แตกต่างกันอย่างไร

ดูเธรด GIS Stack Exchange นี้ ฟังก์ชัน ee.Image.clip() จะมาสก์พิกเซลที่ไม่ได้ตัดกับ ee.Geometry หรือ ee.Feature ที่ระบุ ทำให้พิกเซลเหล่านั้นโปร่งใสในภาพข้อมูล และไม่รวมในการคำนวณ คุณ นึกภาพได้ว่าเป็นการตัดพิกเซลออกจากรูปภาพ

ฟังก์ชัน ee.Filter.bounds() จะกรองออบเจ็กต์ ee.Image ออกจาก ee.ImageCollection โดยอิงตาม การตัดกันของรูปภาพกับ ee.Geometry หรือ ee.Feature โดยใช้เพื่อจำกัด ขอบเขตของการวิเคราะห์เฉพาะรูปภาพที่ตัดกับภูมิภาคที่กำหนด ซึ่งช่วยเพิ่มประสิทธิภาพการแสดงออก

วิธีแปลงพิกเซลรูปภาพเป็นคอลเล็กชันฟีเจอร์ โดยมี 1 ฟีเจอร์ต่อ 1 พิกเซล

ใช้ฟังก์ชัน ee.Image.sample() ดูตัวอย่างการใช้งานได้ในหน้าเอกสารอ้างอิง API ของฟังก์ชัน

ee.ImageCollection.merge() กับ ee.ImageCollection.combine() แตกต่างกันอย่างไร

ฟังก์ชัน ee.ImageCollection.merge() จะผสานรวมรูปภาพทั้งหมดจาก 2 คอลเล็กชันเป็นคอลเล็กชันเดียว ไม่ว่ารูปภาพที่เกี่ยวข้องจะมีแบนด์ ข้อมูลเมตา CRS หรือสเกลที่ตรงกันหรือไม่ก็ตาม ซึ่งเป็นการรวมคอลเล็กชัน 2 รายการ combine() วิธีการ จะรวมแบนด์ของรูปภาพที่ตรงกันจาก 2 คอลเล็กชันเป็นคอลเล็กชันเดียว รูปภาพที่ตรงกันจะมีรหัสเดียวกัน (system:index พร็อพเพอร์ตี้) ซึ่งเป็นการรวมภายในของคอลเล็กชัน 2 รายการตามรหัสรูปภาพ โดยจะรวมแบนด์จากรูปภาพที่ตรงกัน สำหรับรูปภาพที่ตรงกัน ระบบจะต่อแถบจากรูปภาพรอง เข้ากับรูปภาพหลัก (การเขียนทับเป็นตัวเลือก) หากไม่มีรูปภาพที่ตรงกัน ระบบจะแสดงผลคอลเล็กชันว่าง

วิธีกรองคอลเล็กชันรูปภาพในช่วงวันที่หลายช่วง

ดูเธรด GIS Stack Exchange นี้ merge()รวมคอลเล็กชันหลายรายการเข้าด้วยกันหรือใช้ ee.Filter.or()

วิธีสร้างกรอบล้อมรอบจุดที่ระบุ

// Buffer the point by a chosen radius and then get the bounding box.
var LNG = -117.298;
var LAT = 45.162;
var point = ee.Geometry.Point([LNG, LAT]);
var buffer = point.buffer(30000); // half of box width as buffer input
var box = buffer.bounds(); // draw a bounding box around the buffered point
Map.centerObject(box);
Map.addLayer(point);
Map.addLayer(box);

// Map the buffer and bounds procedure over a point feature collection.
var pointCol = ee.FeatureCollection([
  ee.Feature(ee.Geometry.Point([LNG + 1, LAT])),
  ee.Feature(ee.Geometry.Point([LNG - 1, LAT]))
]);
var boxCol = pointCol.map(function(feature) {
  var box = feature.buffer(30000).bounds();
  return feature.setGeometry(box.geometry());
});
Map.addLayer(boxCol);

Data Catalog

คุณเพิ่มชุดข้อมูล X ได้ไหม

รายงานข้อบกพร่องของคำขอชุดข้อมูลตามคำแนะนำในการขอชุดข้อมูล

นอกจากนี้ คุณยังอัปโหลดข้อมูลลงในโฟลเดอร์หน้าแรกของ Earth Engine ได้ด้วย ดูการนำเข้าข้อมูลแรสเตอร์และการนำเข้าข้อมูลตาราง

ชุดข้อมูลที่มีอยู่มีเวอร์ชันใหม่

รายงานข้อบกพร่องของชุดข้อมูลตามคำแนะนำในการขอชุดข้อมูล และระบุว่าคุณกำลังขออัปเดตชุดข้อมูล

ชุดข้อมูลที่มีอยู่ไม่อัปเดตหรือไม่มีชิ้นงาน

ก่อนรายงานปัญหา ให้ตรวจสอบว่าชิ้นงานที่เลือกมีอยู่ในเว็บไซต์ของผู้ให้บริการชุดข้อมูลจริงหรือไม่ (หากเป็นไปได้) ดูรายละเอียดเพิ่มเติมได้ที่ คำแนะนำเกี่ยวกับรูปภาพที่หายไป

หากคุณกำลังมองหาเนื้อหาโดยการกรอง ImageCollection โปรดตรวจสอบว่า ตัวกรองของคุณไม่ได้จำกัดมากเกินไป

โดยเฉพาะอย่างยิ่ง โปรดทราบว่า

  • ESA ไม่ได้สร้าง SR ของ Sentinel-2 (ข้อมูลระดับ 2) สำหรับฉากระดับ 1 ในช่วงแรก

  • Landsat ไม่มีพื้นที่ครอบคลุมทั่วโลกก่อนปี 2000

ชุดข้อมูลที่มีอยู่มีค่าที่ไม่ถูกต้อง

โพสต์ในฟอรัมนักพัฒนาแอป ใส่สคริปต์ที่ซูมเข้าไปที่ความละเอียดเดิมของชิ้นงานและทำให้เห็นค่าที่ไม่ถูกต้องอย่างชัดเจน อธิบายว่าคุณเห็น มูลค่าทางเลือกที่ใด

ฉันจะถามเกี่ยวกับชุดข้อมูลได้จากที่ใดอีก

หากมีคำถามเกี่ยวกับชุดข้อมูลของ NASA โปรดดูฟอรัมข้อมูลโลกของ NASA

หากมีคำถามเกี่ยวกับกล่องเครื่องมือที่ทำงานในชุดข้อมูลโคเปอร์นิคัส โปรดดูฟอรัม S1, S2 และ S3

แคตตาล็อก EE มีขนาดเท่าใด

ณ เดือนตุลาคม 2023 แคตตาล็อกมีชุดข้อมูลกว่า 1, 000 ชุด มีขนาดบนดิสก์ มากกว่า 90 เพตะไบต์ (หลังจากพิจารณาการบีบอัดแบบไม่สูญเสียข้อมูล)

มีการอัปเดตข้อมูลใน EE บ่อยเพียงใด

โดยปกติแล้ว ชุดข้อมูลที่ใช้งานอยู่ทั้งหมดจะได้รับการอัปเดตอย่างน้อยวันละครั้ง (แม้ว่าชุดข้อมูลดังกล่าวบางชุดอาจไม่มีข้อมูลใหม่ทุกวัน) ชุดข้อมูลบางชุดจะอัปเดตวันละหลายครั้ง อย่างไรก็ตาม ไม่มีนโยบายที่รับประกันว่าจะมี ชิ้นงานล่าสุดในแคตตาล็อก

ฉันจะดูเนื้อหาในแคตตาล็อก EE โดยใช้โปรแกรมได้อย่างไร

ระบบจะส่งออกรายการชุดข้อมูลในรูปแบบ STAC ไปยัง Bucket ของ Google Cloud Storage gs://earthengine-stac ไฟล์รายการคือ catalog.json

ฉันใช้ข้อมูลหรือภาพจาก Google Maps เพื่อการวิเคราะห์ได้ไหม

Google ไม่ได้อนุญาตให้ใช้สิทธิ์หรือขายข้อมูลแผนที่ฐานสำหรับการวิเคราะห์

ฉันจะดูวันที่นำเข้าชิ้นงานได้อย่างไร

'system:version'พร็อพเพอร์ตี้เนื้อหาคือการประทับเวลาการส่งผ่านข้อมูล ซึ่งจัดรูปแบบเป็น ไมโครวินาทีตั้งแต่ Unix Epoch ต่อไปนี้เป็นตัวอย่างที่แปลงการประทับเวลาการส่งผ่านข้อมูล ของรูปภาพ Landsat เป็นรูปแบบที่มนุษย์อ่านได้

var image = ee.Image('LANDSAT/LC08/C02/T1_L2/LC08_044034_20210508');
print('Ingest date', ee.Date(image.getNumber('system:version').divide(1000)));

แคตตาล็อก Earth Engine มีข้อมูลเมตา JSON-LD ไหม

ได้ ข้อมูลเมตา JSON-LD จะฝังอยู่ในหน้า HTML ของแคตตาล็อก เช่น หน้า Sentinel-2 มีบล็อกต่อไปนี้

<script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "BreadcrumbList",
    "itemListElement": [{
      "@type": "ListItem",
      "position": 1,
      "name": "Earth Engine Data Catalog",
      "item": "https://developers.google.com/earth-engine/datasets"
    },{
      "@type": "ListItem",
      "position": 2,
      "name": "Harmonized Sentinel-2 MSI: MultiSpectral Instrument, Level-1C",
      "item": "https://developers.google.com/earth-engine/datasets/catalog/COPERNICUS_S2_HARMONIZED"
    }]
  }
  </script>

Landsat

อัลกอริทึม simpleComposite มีการติดตั้งใช้งานอย่างไร

การใช้งานฝั่งเซิร์ฟเวอร์เทียบเท่ากับโค้ด JavaScript นี้

ฉันจะสร้างคอมโพสิตที่ไม่มีเมฆจากข้อมูลการสะท้อนพื้นผิวของ Landsat ได้อย่างไร

ข้อมูล Landsat ระดับ 2 (การสะท้อนของพื้นผิว) มีหลายแบนด์คุณภาพที่ ใช้เพื่อมาสก์เมฆและอาร์ติแฟกต์ของรูปภาพอื่นๆ ที่ไม่ต้องการได้ ตัวอย่าง การใช้แถบเหล่านี้เพื่อประมวลผลภาพ SR ของ Landsat 8 และสร้างค่ามัธยฐาน คอมโพสิตที่ไม่มีเมฆระบุไว้ใน โพสต์ GIS Stack Exchange นี้ เราใช้ขั้นตอนเดียวกันนี้ในการสร้างภาพคอมโพสิตที่ไม่มีเมฆเพื่อใช้ใน ตัวอย่างการจัดประเภทภายใต้การกำกับดูแลใน คำแนะนำสำหรับนักพัฒนาซอฟต์แวร์

จำเป็นต้องมีการปรับความสอดคล้องของค่าการสะท้อนพื้นผิวของ Landsat จากเซ็นเซอร์ต่างๆ ไหม

Roy และคณะ 2016 มีการวิเคราะห์ความแตกต่างของการสะท้อนระหว่าง TOA ของ Landsat 7-8 กับการสะท้อนพื้นผิว โดยได้เผยแพร่ค่าสัมประสิทธิ์ OLS และ RMA เพื่อให้ผู้อ่านสามารถ แปลงค่าการสะท้อนแสงของข้อมูลจากเซ็นเซอร์หนึ่งไปยังอีกเซ็นเซอร์หนึ่งได้ บรรทัดสุดท้าย ของเอกสารระบุว่า "แม้ว่าความแตกต่างของเซ็นเซอร์จะน้อยมาก แต่ก็อาจส่งผลกระทบอย่างมาก ขึ้นอยู่กับการใช้งานข้อมูล Landsat" อย่างไรก็ตาม การวิเคราะห์นี้อิงตามข้อมูลก่อนการเก็บรวบรวม

การปรับปรุงที่ดำเนินการในระหว่างการประมวลผลซ้ำของคอลเล็กชัน 1 และคอลเล็กชัน 2 อาจ ส่งผลต่อความสัมพันธ์ระหว่างเซ็นเซอร์ แต่เท่าที่ทราบมายังไม่มีการวิเคราะห์ใดๆ ที่คล้ายกับของ Roy และคณะ (2016) สำหรับข้อมูลของคอลเล็กชัน 1 หรือคอลเล็กชัน 2 แม้จะไม่มีการวิเคราะห์อย่างเป็นทางการ แต่ดูเหมือนว่าผู้ใช้ Landsat ที่มีอิทธิพลส่วนใหญ่เห็นพ้องต้องกันว่าไม่จำเป็นต้องมีการแก้ไขสำหรับข้อมูลคอลเล็กชัน 2 ระดับ 2 (การสะท้อนพื้นผิว) ตัวอย่างเช่น ในการตอบคำถามเกี่ยวกับความจำเป็นในการปรับเทียบ Collection 2 ระดับ 2 ให้สอดคล้องกัน Mike Wulder จากทีมวิทยาศาสตร์ Landsat ได้กล่าวว่าผลิตภัณฑ์การสะท้อนพื้นผิวของ Collection 2 เหมาะสมและเชื่อถือได้เป็นอย่างยิ่ง โดยไม่ต้องมีการปรับเซ็นเซอร์ข้าม ทั้งนี้ขึ้นอยู่กับลักษณะของการใช้งานที่สนใจ (รวมถึงการทำแผนที่การปกคลุมของพื้นดินและการตรวจหาการเปลี่ยนแปลง)

ฉันจะมาสก์เมฆและเงาของเมฆในภาพ MSS ได้อย่างไร

โมดูล msslib ของบุคคลที่สามสำหรับตัวแก้ไขโค้ด JavaScript มีการติดตั้งใช้งาน อัลกอริทึม MSScvm รวมถึงฟังก์ชันอื่นๆ ที่เป็นประโยชน์สำหรับการสำรวจและเตรียมข้อมูล MSS

การจัดการข้อมูล

ใครเป็นเจ้าของข้อมูลที่ฉันอัปโหลด

ตามข้อกำหนดในการให้บริการของ Earth Engine ลูกค้าเป็นเจ้าของข้อมูลที่อัปโหลดไปยัง Earth Engine

ฉันอัปโหลดข้อมูลไม่ได้

ตรวจสอบสถานะของงานการอัปโหลดในแผงงานที่มุมขวาบนของเครื่องมือแก้ไขโค้ด นอกจากนี้ คุณยังดูหน้างานเฉพาะได้ด้วย

หากไม่มีงาน แสดงว่าคุณอาจพยายามอัปโหลดไฟล์ผ่าน Code Editor แต่เนื่องจากปัญหาเครือข่าย ไฟล์จึงอัปโหลดไม่เสร็จ ระบบจึงไม่ได้สร้างงาน ลองใช้เบราว์เซอร์อื่นหรือ คอมพิวเตอร์เครื่องอื่น

หากมีงานที่ไม่สำเร็จ ให้ตรวจสอบข้อผิดพลาดที่แสดง หากไม่มีข้อความแสดงข้อผิดพลาดที่เฉพาะเจาะจง ให้ตรวจสอบก่อนว่าไฟล์ไม่เสียหายโดยการเรียกใช้ gdalinfo สำหรับไฟล์แรสเตอร์ หรือ ogr2ogr สำหรับไฟล์เวกเตอร์ คำสั่งเหล่านี้จะพยายามอ่านข้อมูลทั้งหมดจากไฟล์ต้นฉบับและ แสดงข้อผิดพลาดหากไฟล์เสียหาย

ตัวอย่างการเรียก gdalinfo

gdalinfo -mm -stats -checksum file.tif

ตัวอย่างการเรียกใช้ ogr2ogr ที่จะแปลง in.shp เป็น out.csv

ogr2ogr -lco GEOMETRY=AS_WKT -f CSV out.csv in.shp

หากไฟล์ดูถูกต้อง ให้โพสต์รหัสงานที่ล้มเหลวเป็นข้อความ (ไม่ใช่ภาพหน้าจอ) ในรายชื่ออีเมลสำหรับนักพัฒนาแอป รหัสงานมีรูปแบบดังนี้ 4C25GIJBMB52PXTEJTF4JLGL ทำให้ ไฟล์ต้นฉบับอ่านได้แบบสาธารณะหากเป็นไปได้ หากเป็นไฟล์ส่วนตัว ให้แชร์กับ earthengine@google.com เท่านั้นหากต้องการให้ทีม Earth Engine ตรวจสอบ หากแชร์ไฟล์ต้นฉบับไม่ได้ อย่างน้อย ให้ระบุเอาต์พุตของ gdalinfo -mm -stats -checksum

หาก Earth Engine ไม่รองรับการฉายภาพบางอย่าง คุณจะต้อง ฉายภาพข้อมูลใหม่ก่อนอัปโหลดโดยใช้ เช่น gdalwarp

ฉันจะอัปโหลดไฟล์ในรูปแบบ NetCDF หรือรูปแบบแรสเตอร์อื่นๆ ที่ไม่รองรับได้อย่างไร

อัปโหลดได้เฉพาะ GeoTIFF ไปยัง Earth Engine คุณแปลงรูปแบบอื่นๆ ที่เข้ากันได้กับ GDAL เป็น GeoTIFF ได้โดยใช้ gdal_translate ตัวอย่าง

gdal_translate -co COMPRESS=DEFLATE file.nc file.tif

โปรดทราบว่าไฟล์ NetCDF หรือ HDF บางไฟล์ประกอบด้วยชุดข้อมูลย่อยหลายชุดที่ค้นพบได้ด้วย gdalinfo ในกรณีนี้ คำสั่ง gdal_translate จะมีลักษณะดังนี้ (โปรดทราบว่าเส้นทาง จะอยู่ระหว่างเครื่องหมายคำพูดคู่)

gdal_translate HDF4_EOS:EOS_GRID:"/tmp/MCD12Q1.A2001001.h00v08.005.2011055224312.hdf":MOD12Q1:Land_Cover_Type_1 file.tif

บางครั้งไฟล์ NetCDF ไม่มีโปรเจ็กชันที่ GDAL รู้จัก ในกรณีนี้ คุณจะต้องตั้งค่าการฉายภาพและขอบเขตเชิงพื้นที่ในบรรทัดคำสั่ง gdal_translate ตัวอย่าง

gdal_translate -a_srs EPSG:4326 -a_ullr -180 90 180 -90 file.nc file.tid

ฉันใช้อัลกอริทึมการบีบอัดใดได้บ้างสำหรับ GeoTIFF ที่อัปโหลด

สำหรับการอัปโหลด คุณสามารถบีบอัด GeoTIFF ด้วย DEFLATE, JPEG, JPEG-XL/JXL, LERC, LERC_DEFLATE, LERC_ZSTD, LZMA, LZW, WEBP หรือ ZSTD สำหรับการอ่าน COG แบบสด คุณสามารถ ใช้ DEFLATE, JPEG, LZW หรือ ZSTD ZSTD เป็นตัวเลือกที่ดีโดยรวมเนื่องจากบีบอัดได้รวดเร็ว ในขณะที่ยังคงบีบอัดรูปภาพส่วนใหญ่ได้ดี

หากต้องการใช้การบีบอัด ZSTD เมื่อใช้ gdal_translate ให้เพิ่มตัวเลือกต่อไปนี้ หากข้อมูลมีค่าทศนิยม ให้เปลี่ยน PREDICTOR เป็น 3

gdal_translate in.tif out.tif \
  -co COPY_SRC_OVERVIEWS=YES \
  -co TILED=YES \
  -co BLOCKXSIZE=512 \
  -co BLOCKYSIZE=512 \
  -co COMPRESS=ZSTD \
  -co PREDICTOR=2 \
  -co ZSTD_LEVEL=22 \
  -co INTERLEAVE=BAND \
  -co NUM_THREADS=ALL_CPUS

การส่งผ่านข้อมูลแรสเตอร์ของฉันทำงานมาหลายวันแล้วและยังไม่เสร็จ

ใช้ gdalinfo เพื่อตรวจสอบว่าไฟล์ของคุณมีการตั้งค่าตัวเลือก GDAL ต่อไปนี้หรือไม่ INTERLEAVE=PIXEL สำหรับไฟล์ที่มีตัวเลือกนี้และมีหลายแถบ การส่งผ่านข้อมูลอาจไม่เสร็จสิ้น เนื่องจากเลย์เอาต์ของไฟล์ดังกล่าวทำให้การอ่านช้ามาก

ลองแปลงไฟล์ดังกล่าวเป็นเลย์เอาต์แบบแถบสลับก่อนอัปโหลด

gdal_translate -co "INTERLEAVE=BAND" src.tif dst.tif

แรสเตอร์ที่อัปโหลดไม่ตรงกับแผนที่ฐาน

หากข้อมูลออฟเซ็ตจากแผนที่ฐานเล็กน้อย แสดงว่าการฉายอาจมี การอ้างอิงที่ไม่ถูกต้อง (สมมติฐานเกี่ยวกับรูปร่างของโลก) ซึ่งมักเกิดขึ้นกับ การฉายภาพแบบไซน์ที่เข้ารหัสข้อมูลเมตา GDAL ไม่ได้ทั้งหมด เมื่อทราบว่าการฉายเป้าหมายควรเป็นอย่างไร (เช่น SR-ORG:6974 สำหรับไฟล์ที่ใช้การฉายแบบไซนูซอยด์ของ MODIS) ให้ตั้งค่าสถานะ --crs ระหว่างการอัปโหลดผ่านบรรทัดคำสั่ง หรือฟิลด์ crs ของไฟล์ Manifest การอัปโหลด

หากข้อมูลปรากฏว่าบิดเบี้ยวอย่างมากหรืออยู่ในตำแหน่งที่ผิดโดยสิ้นเชิง แสดงว่าการ ฉายภาพหรือการแปลงแบบอัฟฟินอาจไม่ถูกต้อง

ภาพแรสเตอร์ของฉันแสดงเฉพาะซีกโลกตะวันออก

คุณอาจอัปโหลดแรสเตอร์ทั่วโลกที่ครอบคลุมช่วงลองจิจูด [0, 360] อย่างไรก็ตาม Earth Engine กำหนดให้แรสเตอร์อยู่ในช่วง [-180, 180] สลับครึ่งซ้ายและขวาของแรสเตอร์ก่อนส่งผ่านข้อมูล ดูคำแนะนำเหล่านี้ใน GIS Stack Exchange

เหตุใดรูปภาพการแยกประเภทที่ฉันส่งจึงดูเป็นจุดๆ

คุณอาจใช้MEAN นโยบายการเพิ่มจำนวนเริ่มต้น สำหรับรูปภาพการแยกประเภท ควรใช้นโยบายการสร้างพีระมิด MODE สำหรับรูปภาพ QA/บิตมาสก์ ควรใช้นโยบายการสร้างพีระมิด SAMPLE

ฉันได้รับข้อผิดพลาดต่อไปนี้: ไม่สามารถใช้ค่าข้อมูล -128.0 กับแถบ #0 ของประเภท Short<0, 255> ได้

GDAL ไม่สามารถถือว่าแถบแบบไบต์เดียวมีจำนวนเต็มที่ลงชื่อ ดังนั้นจึงอ่านแถบดังกล่าวเป็นจำนวนเต็มที่ไม่ได้ลงชื่อ ซึ่งจะขัดแย้งกับค่าลบ ไม่มีข้อมูล

หากค่าเป็นจำนวนเต็มที่ลงนามจริง ให้ใช้ การอัปโหลดไฟล์ Manifest และเพิ่มค่านี้ลงในส่วนชุดไทล์ที่มีไฟล์ของคุณ data_type: "INT8"

หากค่าเป็นจำนวนเต็มที่ไม่มีเครื่องหมาย แสดงว่าไฟล์มีค่า nodata ที่ไม่ถูกต้อง คุณสามารถ ลบล้างได้เมื่ออัปโหลดด้วยค่าข้อมูลที่ถูกต้อง (หรือค่าที่ไม่เคยเกิดขึ้น หากมี) นอกจากนี้ คุณยังใช้ gdal_translate -a_nodata เพื่อเปลี่ยนค่า nodata หรือใช้ gdal_edit.py -unsetnodata เพื่อนำค่าดังกล่าวออกได้ด้วย

ฉันจะอัปโหลดไฟล์ในรูปแบบเวกเตอร์ GeoJSON หรือรูปแบบอื่นที่ระบบไม่รองรับได้อย่างไร

ใช้ ogr2ogr เพื่อแปลรูปแบบที่เข้ากันได้กับ OGR เป็น CSV หรือ SHP ตัวอย่าง

or2ogr -f "ESRI Shapefile" file.shp file.kml

โปรดทราบว่าในการอัปโหลด CSV คอลัมน์เรขาคณิตอาจมี GeoJSON

ฉันต้องการอัปโหลดข้อมูลโดยใช้ Python หรืออัปโหลดหลายไฟล์พร้อมกัน

ใช้การอัปโหลดผ่านบรรทัดคำสั่ง การอัปโหลดดังกล่าวต้องวางไฟล์ต้นฉบับไว้ใน Bucket ของ GCS (Google Cloud Storage) ก่อน การใช้งาน GCS จะไม่มีค่าใช้จ่ายหากคุณใช้งานภายในขีดจำกัดของรุ่นฟรี โปรดดูหน้าการกำหนดราคา

ฉันต้องการอัปโหลดโมเสกแรสเตอร์ขนาดใหญ่ที่แยกออกเป็นหลายไทล์

หากไฟล์ทั้งหมดมีระบบการฉายภาพและขนาดพิกเซลเดียวกัน ให้อัปโหลดไฟล์เหล่านั้นพร้อมกันลงในชิ้นงานเดียวกัน ระบบจะต่อภาพเหล่านั้นโดยอัตโนมัติ

หากไฟล์มีระบบการฉายภาพหรือขนาดพิกเซลที่แตกต่างกัน คุณจะต่อภาพ เป็นชิ้นงานแรสเตอร์เดียวไม่ได้ แต่ให้อัปโหลดไทล์แต่ละรายการเป็นชิ้นงานแยกกันในImageCollectionเดียวกัน ซึ่งสามารถต่อกันเป็นภาพโมเสกได้โดยใช้ ImageCollection.mosaic()

ฉันพยายามอัปโหลดภาพโมเสกและได้รับข้อผิดพลาดเกี่ยวกับไทล์ที่ไม่ตรงกัน

ไทล์สำหรับโมเสกแรสเตอร์ของ Earth Engine ต้องมีการฉายภาพและขนาดพิกเซลเดียวกัน นอกจากนี้ ไทล์ต้องอยู่ในแนวเดียวกับขอบเขตพิกเซลพอดี

ฉันพยายามอัปโหลดไฟล์จาก Bucket ของ GCS แต่ Earth Engine หาไม่พบ

คุณอาจใช้บัญชี Google อื่นสำหรับการอัปโหลด GCS และสำหรับการเชื่อมต่อกับ Earth Engine ตรวจสอบว่าบัญชีที่คุณใช้เชื่อมต่อกับ Earth Engine อ่านไฟล์ GCS ได้ หากการเข้าสู่ระบบหลายบัญชีในเบราว์เซอร์ทำให้เกิดความสับสน ให้เชื่อมต่อกับ Earth Engine ในหน้าต่างเบราว์เซอร์ที่ไม่ระบุตัวตน

ฉันต้องการส่งออกชิ้นงานหลายรายการพร้อมกัน

คุณต้องส่งออกรูปภาพแต่ละรูปแยกกัน

ฉันต้องการย้ายหรือลบFolderหรือImageCollectionด้วยคำสั่งเดียว

คุณต้องย้าย หรือลบ ชิ้นงานแต่ละรายการก่อน จากนั้นจึงย้ายหรือลบโฟลเดอร์หรือคอลเล็กชันหลัก หากมี ชิ้นงานย่อยจำนวนมาก ให้เขียนเชลล์หรือลูป Python เพื่อวนซ้ำชิ้นงานเหล่านั้น

ฉันต้องการเข้าถึงข้อมูล Earth Engine จากภายนอก EE โดยตรง

QGIS มีปลั๊กอิน Earth Engine

GDAL มีไดรเวอร์ Earth Engine

ระบบอื่นๆ สามารถใช้ REST API ของ EE ได้

ฉันต้องการอัปเดตชิ้นส่วนของชิ้นงาน Earth Engine โดยไม่ต้องส่งผ่านข้อมูลอีกครั้งทั้งหมด

คุณจะอัปเดตข้อมูลแรสเตอร์หรือเวกเตอร์ที่อัปโหลดลงใน EE ไม่ได้ คุณอัปเดตได้เฉพาะพร็อพเพอร์ตี้ข้อมูลเมตาของเนื้อหา

ฉันกำลังจะเสียสิทธิ์เข้าถึงบัญชี ฉันควรทำอย่างไรกับชิ้นงาน

หากนโยบายของบัญชีเดิมอนุญาตให้โอนข้อมูลได้ โปรดแชร์ชิ้นงานกับบัญชีอื่น แล้วคัดลอกชิ้นงานเพื่อให้บัญชีใหม่เป็นเจ้าของ ใช้ยูทิลิตีการคัดลอกบรรทัดคำสั่ง หากมีชิ้นงานจำนวนมากที่ต้องย้าย

หากมีการลบบัญชี คุณจะเข้าถึงชิ้นงานที่เป็นของบัญชีนั้นไม่ได้อีก

รูปภาพที่ส่งออกอยู่ในตำแหน่งที่ไม่ถูกต้อง

สำหรับการฉายภาพบางอย่าง เช่น ไซนูซอยดัลหรือโคนิก บางครั้งไฟล์ GeoTIFF จะ จัดเก็บพารามิเตอร์การฉายภาพที่จำเป็นทั้งหมดไม่ได้ ซึ่งจะส่งผลให้ ไฟล์ที่ส่งออกปรากฏในตำแหน่งที่ไม่ถูกต้องเมื่อดูในเครื่องมือ GIS บนเดสก์ท็อป หรือนำเข้าอีกครั้งใน EE

หากต้องการแก้ไขปัญหานี้ ให้ระบุพารามิเตอร์การส่งออก crs ที่ทราบว่าทำงานได้ดี กับไฟล์ GeoTIFF เช่น ใช้รหัส EPSG สำหรับโซน UTM ที่มีพื้นที่ที่คุณสนใจ

ฉันควรใช้ตำแหน่ง Bucket ของ Cloud Storage ใดเพื่อจัดเก็บชิ้นงาน COG

คำตอบขึ้นอยู่กับสิ่งที่คุณพยายามเพิ่มประสิทธิภาพ หากคุณกำลังเพิ่มประสิทธิภาพ เพื่อการเข้าถึงการคำนวณที่มีเวลาในการตอบสนองต่ำ ตำแหน่ง Bucket ของ GCS ที่ดีที่สุดในการจัดเก็บชิ้นงาน COG คือ US-CENTRAL* ดูข้อมูลเกี่ยวกับข้อควรพิจารณาอื่นๆ ได้ที่หน้าตำแหน่งของ Bucket

ชิ้นงานคอลเล็กชันฟีเจอร์ที่ส่งออกไม่เก็บพร็อพเพอร์ตี้ที่ฉันตั้งค่าไว้

ฟังก์ชัน Export.table.* จะไม่เก็บรักษาพร็อพเพอร์ตี้ระดับตารางในเอาต์พุต เอาต์พุตหลายรูปแบบ (เช่น CSV, GeoJSON) ไม่รองรับข้อมูลเมตาดังกล่าว ฟังก์ชัน Export.table.toAsset อาจรองรับพร็อพเพอร์ตี้ระดับตาราง แต่ยังไม่รองรับในขณะนี้

ตารางที่ส่งออกไปยังไดรฟ์ในรูปแบบ CSV จะได้รับการแปลงเป็นรูปแบบ XLSX

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

  1. ใน Google ไดรฟ์บนเว็บ ให้คลิกฟันเฟืองการตั้งค่าที่ด้านขวาบน
  2. คลิกการตั้งค่า
  3. เลื่อนไปที่ "แปลงไฟล์ที่อัปโหลดเป็นรูปแบบเครื่องมือแก้ไข Google เอกสาร" แล้วล้างตัวเลือกนี้

ตัวแก้ไขโค้ด

ฉันลงชื่อเข้าใช้ตัวแก้ไขโค้ดไม่ได้เนื่องจากระบบแจ้งให้ฉันใช้บัญชีที่ไม่ถูกต้อง

ออกจากระบบ เลือกบัญชีที่ลงทะเบียนเพื่อใช้ Earth Engine ในหน้า "เลือกบัญชี" แล้วเลือกบัญชีเดียวกันอีกครั้งในหน้า "เลือกบัญชีเพื่อดำเนินการต่อใน Earth Engine ตัวแก้ไขโค้ด" หน้าที่ 2 (ข้อความอาจแตกต่างกัน)

ฉันต้องการถ่ายภาพหน้าจอแผนที่โลก แต่ไม่ชอบการฉายภาพแบบ Web Mercator

การฉายแผนที่ที่ใช้ในตัวแก้ไขโค้ดคือ Web Mercator ('EPSG:3857') โดยจะขยายขนาดของออบเจ็กต์ที่อยู่ห่างจากเส้นศูนย์สูตร ทำให้ ภูมิภาคที่ละติจูดสูงดูใหญ่กว่าที่เป็นจริงมาก เมื่อเทียบกับภูมิภาคที่อยู่ใกล้เส้นศูนย์สูตร คุณเปลี่ยนการฉายภาพของ Canvas แผนที่ของ ตัวแก้ไขโค้ด ไม่ได้ แต่สามารถ "วาด" รูปภาพในการฉายภาพที่คุณ เลือกไปยัง Canvas ของ Web Mercator ได้โดยใช้เมธอด ee.Image.changeProj ดูตัวอย่างการแสดง DEM ทั่วโลกในแผนที่โปรแกรมแก้ไขโค้ดในการฉายภาพแบบ Robinson ได้ที่หน้าข้อมูลอ้างอิง API ของเมธอด โปรดทราบว่าเทคนิคนี้ควรใช้เพื่อวัตถุประสงค์ในการแสดงภาพเท่านั้น เนื่องจากเครื่องมือตรวจสอบและเครื่องมือวาดของตัวแก้ไขโค้ดยังคงทำงานใน Web Mercator

สคริปต์ของฉันบันทึกไม่ได้ (Script error: Unknown commit)

หากได้รับข้อความ Script error: Unknown commit เมื่อบันทึกสคริปต์ แสดงว่าที่เก็บที่คุณบันทึกอาจไม่ได้ซิงค์ สาเหตุของสถานะนี้อาจแตกต่างกันไปและระบุได้ยาก หากต้องการแก้ไขปัญหา ให้ลองรีเฟรชรายการสคริปต์โดยใช้ปุ่มที่มุมขวาบน ของแท็บสคริปต์ หากไม่ได้ผล ให้ลองสร้างที่เก็บข้อมูลใหม่จาก ปุ่มใหม่ในแท็บสคริปต์ แล้วบันทึกสคริปต์ไว้ที่นั่น (คุณอาจต้องย้ายสคริปต์ไปยังที่เก็บข้อมูลใหม่จากที่เก็บข้อมูลที่ไม่ได้ซิงค์ )

เหตุใดฉันจึงเห็นข้อผิดพลาด 400 ซ้ำๆ ในตัวแก้ไขโค้ด

หากคุณเห็นข้อผิดพลาด 400 ซ้ำๆ ในตัวแก้ไขโค้ด ให้ไปที่ https://myaccount.google.com/connections ค้นหา "Earth Engine Code Editor" ในรายการแอปและบริการ เลือกแอปดังกล่าว แล้ว เลือก "ลบการเชื่อมต่อทั้งหมดที่คุณมีกับ Earth Engine Code Editor" และ ยืนยัน จากนั้นเปิดตัวแก้ไขโค้ดและตรวจสอบสิทธิ์อีกครั้ง

ฉันจะกู้คืนสคริปต์และโฟลเดอร์ที่ลบไปแล้วได้อย่างไร

หากคุณลบสคริปต์หรือโฟลเดอร์ภายในที่เก็บที่มีอยู่โดยไม่ได้ตั้งใจ ระบบจะเก็บประวัติการคอมมิตทั้งหมดไว้ในบันทึก Git บนเซิร์ฟเวอร์ของเรา คุณสามารถกู้คืนสคริปต์หรือโฟลเดอร์ที่ลบไปแล้วได้โดยการโคลนที่เก็บในเครื่องโดยใช้เครื่องมือบรรทัดคำสั่ง Git มาตรฐาน

อย่างไรก็ตาม การลบที่เก็บทั้งหมด (users/username/repository) จะเป็นการนำที่เก็บและประวัติการคอมมิตออกจาก earthengine.googlesource.com อย่างถาวร และไม่สามารถยกเลิกหรือกู้คืนได้

ดูวิธีการสร้างข้อมูลเข้าสู่ระบบ Git, โคลนที่เก็บ และกู้คืนไฟล์หรือโฟลเดอร์ที่ลบไปแล้วแบบทีละขั้นตอนได้ที่คำแนะนำการกู้คืนสคริปต์และการย้ายข้อมูลที่เก็บ

ฉันจะเปลี่ยนชื่อรูทของที่เก็บสคริปต์ได้อย่างไร

ไดเรกทอรีรากของสคริปต์ (users/username) เชื่อมโยงกับการลงทะเบียนบัญชี Earth Engine เดิม คุณไม่สามารถเปลี่ยนชื่อโดยตรงในแบ็กเอนด์ได้ เนื่องจากจะทำให้สคริปต์ภายนอกหรือโปรเจ็กต์ของผู้ทำงานร่วมกันที่ นำเข้าโค้ดแบบแยกส่วนของคุณโดยใช้ require('users/username/repository:...') เส้นทางใช้งานไม่ได้

หากต้องการเนมสเปซใหม่ วิธีแก้ปัญหาที่รองรับคือการย้ายงาน ไปยังบัญชีใหม่ โดยทำดังนี้

  1. ลงทะเบียนบัญชี Earth Engine ใหม่โดยใช้ Google Identity ใหม่ (ซึ่งจะสร้างรูท users/new_username ที่สะอาด)
  2. ทำตามวิธีการย้ายข้อมูลที่เก็บ เพื่อโคลนที่เก็บเก่าและพุชประวัติทั้งหมดไปยังที่เก็บใหม่ ที่ว่างเปล่า

สิ่งสำคัญที่ควรพิจารณา

  • โมดูลสาธารณะ: หากคุณมีโมดูลสาธารณะที่ผู้อื่นใช้ เราขอแนะนำให้คุณเก็บรักษาบัญชีและที่เก็บข้อมูลเก่าให้ใช้งานอยู่เสมอเพื่อไม่ให้เวิร์กโฟลว์ของผู้อื่นหยุดชะงัก
  • สคริปต์ส่วนตัว: หากสคริปต์เป็นแบบส่วนตัวทั้งหมด คุณสามารถอัปเดต require()คำสั่งนำเข้าเพื่ออ้างอิงเส้นทางของที่เก็บใหม่ แล้วลบที่เก็บเก่าได้อย่างปลอดภัย