คุณสามารถส่งออกรูปภาพจาก Earth Engine ใน GeoTIFF หรือ TFRecord รูปแบบ ดูตัวเลือกเอาต์พุตเพิ่มเติมได้ที่ พารามิเตอร์การกำหนดค่า
ตัวอย่างการตั้งค่า
เริ่มต้นด้วยการกำหนดข้อมูลรูปภาพที่จะส่งออก
ตัวแก้ไขโค้ด (JavaScript)
// Load a landsat image and select three bands. var landsat = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_123032_20140515') .select(['B4', 'B3', 'B2']); // Create a geometry representing an export region. var geometry = ee.Geometry.Rectangle([116.2621, 39.8412, 116.4849, 40.01236]);
import ee import geemap.core as geemap
Colab (Python)
# Load a landsat image and select three bands. landsat = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_123032_20140515').select( ['B4', 'B3', 'B2'] ) # Create a geometry representing an export region. geometry = ee.Geometry.Rectangle([116.2621, 39.8412, 116.4849, 40.01236])
จากนั้นกำหนดพารามิเตอร์การฉายภาพที่จะใช้ในการส่งออก
ต่อไปนี้ เราใช้พารามิเตอร์ crs เพื่อระบุระบบพิกัด
และพารามิเตอร์ crsTransform เพื่อระบุตารางพิกเซลอย่างแม่นยำ พารามิเตอร์
crsTransform คือรายการพารามิเตอร์จากเมทริกซ์การแปลงแบบแอฟฟิน
ตามลำดับแถวหลัก
[xScale, xShearing, xTranslation, yShearing, yScale, yTranslation]. ต้นกำเนิดของรูปภาพกำหนดโดยค่า xTranslation และ yTranslation และขนาดพิกเซลของรูปภาพกำหนดโดยค่า xScale และ yScale ดู
ตัวอย่างเมทริกซ์แอฟฟิน
ตัวแก้ไขโค้ด (JavaScript)
// Retrieve the projection information from a band of the original image. // Call getInfo() on the projection to request a client-side object containing // the crs and transform information needed for the client-side Export function. var projection = landsat.select('B2').projection().getInfo();
import ee import geemap.core as geemap
Colab (Python)
# Retrieve the projection information from a band of the original image. # Call getInfo() on the projection to request a client-side object containing # the crs and transform information needed for the client-side Export function. projection = landsat.select('B2').projection().getInfo()
การตั้งค่า scale
คุณสามารถระบุพารามิเตอร์ scale เป็นทางลัดได้ แล้ว Earth Engine จะคำนวณพารามิเตอร์ crsTransform ให้คุณ อย่างไรก็ตาม การตั้งค่ามาตราส่วนของรูปภาพเพียงอย่างเดียวไม่ได้ระบุต้นกำเนิดของการฉายภาพ และอาจส่งผลให้รูปภาพเลื่อนไปเทียบกับรูปภาพอื่นที่มีขนาดพิกเซลเท่ากัน
เหตุผลที่อาจเกิดการเลื่อนคือ ระบบใช้พารามิเตอร์ scale เพื่อป้อนค่า xScale และ yScale ของ crsTransform แต่จะคำนวณค่า xTranslation และ yTranslation เพื่อให้ผลหารของค่าดังกล่าวด้วยค่า xScale และ yScale ที่เกี่ยวข้องเป็น 0 พารามิเตอร์เหล่านี้ระบุตารางพิกเซลที่ต้นกำเนิดของการฉายภาพอยู่ที่มุมของพิกเซล อนุสัญญานี้แตกต่างจากพารามิเตอร์การแปลที่ผู้ให้บริการข้อมูลบางรายใช้ ซึ่งใช้ตารางที่ชดเชยจากต้นกำเนิดของการฉายภาพ ตัวอย่างเช่น รูปภาพ Landsat ที่ USGS ให้บริการใช้พารามิเตอร์การแปลที่ชดเชย 1/2 พิกเซลจากต้นกำเนิดของการฉายภาพ (ชดเชย 15 ม. สำหรับแถบความถี่ 30 ม.) ขณะที่รูปภาพ Sentinel-2 ที่ ESA ให้บริการใช้พารามิเตอร์การแปลที่สอดคล้องกับต้นกำเนิดของการฉายภาพ หาก crsTransform ที่ระบุในการส่งออกไม่ตรงกับ crsTransform ของรูปภาพต้นฉบับ ระบบจะสุ่มตัวอย่างพิกเซลเอาต์พุตใหม่ (ใช้เพื่อนบ้านที่ใกล้ที่สุดเป็นค่าเริ่มต้น) ซึ่งจะทำให้รูปภาพที่ได้เลื่อนไปเทียบกับรูปภาพต้นฉบับ
สรุปได้ว่า หากต้องการจับคู่พิกเซลของรูปภาพที่ส่งออกกับรูปภาพที่เฉพาะเจาะจง
ให้ใช้พารามิเตอร์ crs และ crsTransform เพื่อควบคุมตารางอย่างเต็มที่
ไปยังไดรฟ์
หากต้องการส่งออกรูปภาพไปยังบัญชีไดรฟ์ ให้ใช้ Export.image.toDrive() ตัวอย่างเช่น หากต้องการส่งออกบางส่วนของรูปภาพ Landsat ให้กำหนดภูมิภาคที่จะส่งออก แล้วเรียกใช้ Export.image.toDrive() ดังนี้
ตัวแก้ไขโค้ด (JavaScript)
// Export the image, specifying the CRS, transform, and region. Export.image.toDrive({ image: landsat, description: 'imageToDriveExample_transform', crs: projection.crs, crsTransform: projection.transform, region: geometry });
import ee import geemap.core as geemap
Colab (Python)
# Export the image, specifying the CRS, transform, and region. task = ee.batch.Export.image.toDrive( image=landsat, description='imageToDriveExample_transform', crs=projection['crs'], crsTransform=projection['transform'], region=geometry, ) task.start()
เมื่อเรียกใช้โค้ดนี้ ระบบจะสร้างงานส่งออกในแท็บงาน ของตัวแก้ไขโค้ด คลิกปุ่มเรียกใช้ ข้างงานเพื่อเริ่มงาน (ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวจัดการงานจากส่วนตัวแก้ไขโค้ด
ส่วน) ระบบจะสร้างรูปภาพในบัญชีไดรฟ์ด้วย fileFormat ที่ระบุ
ไปยัง Cloud Storage
หากต้องการส่งออกรูปภาพไปยัง Bucket ของ Google Cloud Storage ให้ใช้ Export.image.toCloudStorage() หากต้องการส่งออกรูปภาพ Landsat ในตัวอย่างก่อนหน้าไปยัง Cloud Storage แทนไดรฟ์ ให้ใช้โค้ดต่อไปนี้
ตัวแก้ไขโค้ด (JavaScript)
// Export the image to Cloud Storage. Export.image.toCloudStorage({ image: landsat, description: 'imageToCloudExample', bucket: 'your-bucket-name', fileNamePrefix: 'exampleExport', crs: projection.crs, crsTransform: projection.transform, region: geometry });
import ee import geemap.core as geemap
Colab (Python)
# Export the image to Cloud Storage. task = ee.batch.Export.image.toCloudStorage( image=landsat, description='imageToCloudExample', bucket='your-bucket-name', fileNamePrefix='exampleExport', crs=projection['crs'], crsTransform=projection['transform'], region=geometry, ) task.start()
เช่นเดียวกับการส่งออกไปยังไดรฟ์ ให้เริ่มการส่งออกจากแท็บงาน ตำแหน่ง Bucket ของ Cloud Storage อาจส่งผลต่อประสิทธิภาพและค่าใช้จ่ายในการจัดเก็บ โปรดดูข้อมูลเพิ่มเติมในรายการคำถามที่พบบ่อยเกี่ยวกับการพิจารณาตำแหน่ง
ไปยังชิ้นงาน
หากต้องการส่งออกรูปภาพไปยังชิ้นงานในโฟลเดอร์ชิ้นงาน Earth Engine ให้ใช้ Export.image.toAsset() หากต้องการจัดการชิ้นงาน Earth Engine หรือตรวจสอบโควต้าพื้นที่เก็บข้อมูลที่ใช้ไปเท่าใด
ให้ใช้ตัวจัดการชิ้นงาน ตัวอย่างต่อไปนี้แสดงการส่งออกบางส่วนของรูปภาพ Landsat โดยใช้นโยบายการสร้างพีระมิดที่แตกต่างกันสำหรับแถบความถี่เดียวกัน นโยบายการสร้างพีระมิดระบุวิธีที่ Earth Engine คำนวณเวอร์ชันชิ้นงานที่มีความละเอียดต่ำกว่า ดูข้อมูลเพิ่มเติม
เกี่ยวกับวิธีที่ Earth Engine จัดการความละเอียดหลายระดับได้ในเอกสารประกอบเกี่ยวกับมาตราส่วน
ตัวแก้ไขโค้ด (JavaScript)
// Get band 4 from the Landsat image, copy it. var band4 = landsat.select('B4').rename('b4_mean') .addBands(landsat.select('B4').rename('b4_sample')) .addBands(landsat.select('B4').rename('b4_max')); // Export the image to an Earth Engine asset. Export.image.toAsset({ image: band4, description: 'imageToAssetExample', assetId: 'exampleExport', crs: projection.crs, crsTransform: projection.transform, region: geometry, pyramidingPolicy: { 'b4_mean': 'mean', 'b4_sample': 'sample', 'b4_max': 'max' } });
import ee import geemap.core as geemap
Colab (Python)
# Get band 4 from the Landsat image, copy it. band_4 = ( landsat.select('B4') .rename('b4_mean') .addBands(landsat.select('B4').rename('b4_sample')) .addBands(landsat.select('B4').rename('b4_max')) ) # Export the image to an Earth Engine asset. task = ee.batch.Export.image.toAsset( image=band_4, description='imageToAssetExample', assetId='projects/your-project/assets/exampleExport', crs=projection['crs'], crsTransform=projection['transform'], region=geometry, pyramidingPolicy={ 'b4_mean': 'mean', 'b4_sample': 'sample', 'b4_max': 'max', }, ) task.start()
คุณสามารถระบุนโยบายการสร้างพีระมิดเริ่มต้นสำหรับทุกแถบความถี่ที่ไม่ได้
ระบุไว้อย่างชัดเจนได้โดยใช้คีย์ '.default' นอกจากนี้ คุณยังส่ง
คีย์ '.default' เพียงอย่างเดียวได้ด้วย ตัวอย่างเช่น หากต้องการตั้งค่าแถบความถี่ทั้งหมดเป็นนโยบายการสร้างพีระมิด "sample"
โดยค่าเริ่มต้น ให้ใช้ {'.default': 'sample'}
พารามิเตอร์การกำหนดค่า
โปรดสังเกตว่าพจนานุกรมพารามิเตอร์การกำหนดค่าที่ส่งไปยัง Export.image มี scale (เป็นเมตร) และภูมิภาคการส่งออกเป็น ee.Geometry รูปภาพที่ส่งออกจะครอบคลุมภูมิภาคที่ระบุด้วยพิกเซลที่มาตราส่วนที่ระบุ หากไม่ได้ระบุไว้อย่างชัดเจน ระบบจะใช้ CRS ของเอาต์พุตจากแถบความถี่แรกของรูปภาพที่จะส่งออก
นอกจากนี้ คุณยังระบุ dimensions, crs และ/หรือ crsTransform ของ
รูปภาพที่ส่งออกได้ด้วย ดูข้อมูลเพิ่มเติมเกี่ยวกับ crs และ crsTransform ได้ในอภิธานศัพท์
ตัวอย่างเช่น หากต้องการรับบล็อกพิกเซลที่จัดแนวกับแหล่งข้อมูลอื่นอย่างแม่นยำ
ให้ระบุ dimensions, crs และ crsTransform
หากต้องการรับบล็อกพิกเซลที่มีขนาดที่กำหนดไว้ล่วงหน้า (เช่น รูปภาพขนาดย่อ 256x256) ที่ครอบคลุมภูมิภาค ให้ระบุ dimensions และ region
คุณสามารถระบุรูปแบบเอาต์พุตของรูปภาพ (หากปลายทางไม่ใช่ toAsset()) ด้วย
พารามิเตอร์ fileFormat ('GeoTIFF' โดยค่าเริ่มต้น)
พารามิเตอร์ formatOptions
ตัวเลือกการกำหนดค่าอื่นๆ จะตั้งค่าด้วยพารามิเตอร์ formatOptions ซึ่งควรเป็นพจนานุกรมที่ใช้ตัวเลือกรูปแบบอื่นๆ เป็นคีย์ โดยเฉพาะสำหรับ fileFormat แต่ละรายการตามที่อธิบายไว้ด้านล่าง
GeoTIFF
GeoTIFF ที่ปรับให้เหมาะกับระบบคลาวด์
หากต้องการส่งออก GeoTIFF ที่ปรับให้เหมาะกับระบบคลาวด์ ให้ส่ง JavaScript
Literal สำหรับ formatOptions ซึ่งตั้งค่าคีย์ cloudOptimized เป็น
true ตัวอย่างต่อไปนี้
ตัวแก้ไขโค้ด (JavaScript)
// Export a cloud-optimized GeoTIFF. Export.image.toDrive({ image: landsat, description: 'imageToCOGeoTiffExample', crs: projection.crs, crsTransform: projection.transform, region: geometry, fileFormat: 'GeoTIFF', formatOptions: { cloudOptimized: true } });
import ee import geemap.core as geemap
Colab (Python)
# Export a cloud-optimized GeoTIFF. task = ee.batch.Export.image.toDrive( image=landsat, description='imageToCOGeoTiffExample', crs=projection['crs'], crsTransform=projection['transform'], region=geometry, fileFormat='GeoTIFF', formatOptions={'cloudOptimized': True}, ) task.start()
คุณสามารถโหลด GeoTIFF ที่ปรับให้เหมาะกับระบบคลาวด์ซ้ำจาก Cloud Storage ลงใน Image หรือลงทะเบียนเป็นชิ้นงานได้ ดูข้อกำหนดและตัวเลือกการส่งออกทั้งหมดได้ที่
ภาพรวมของ GeoTIFF ที่ปรับให้เหมาะกับระบบคลาวด์ (COG)
Nodata
ระบุค่า nodata ของ GeoTIFF โดยใช้คีย์ noData ภายในพารามิเตอร์ formatOptions เช่น
ตัวแก้ไขโค้ด (JavaScript)
// Set a nodata value and replace masked pixels around the image edge with it. var noDataVal = -9999; landsat = landsat.unmask(noDataVal); Export.image.toDrive({ image: landsat, description: 'imageNoDataExample', crs: projection.crs, scale: 2000, // large scale for minimal demo region: landsat.geometry(), // full image bounds fileFormat: 'GeoTIFF', formatOptions: { noData: noDataVal, } });
import ee import geemap.core as geemap
Colab (Python)
# Set a nodata value and replace masked pixels around the image edge with it. no_data_val = -9999 landsat = landsat.unmask(no_data_val) task = ee.batch.Export.image.toDrive( image=landsat, description='imageNoDataExample', crs=projection['crs'], scale=2000, # large scale for minimal demo region=landsat.geometry(), # full image bounds fileFormat='GeoTIFF', formatOptions={'noData': no_data_val}, ) task.start()
โปรดทราบว่าค่า nodata ควรอยู่ในช่วงที่ถูกต้องสำหรับ PixelType ของรูปภาพ คุณสามารถตรวจสอบ PixelType ได้โดย
การพิมพ์ข้อมูลเมตาของรูปภาพ และดู
พร็อพเพอร์ตี้ data_type ของแถบความถี่แรก นอกจากนี้ คุณยังตั้งค่า PixelType ของรูปภาพได้โดยการแคสต์ข้อมูลเป็นประเภทที่เฉพาะเจาะจงโดยใช้วิธีการของรูปภาพ เช่น toShort() หรือ toInt()
TFRecord
ดูหน้าข้อมูลรูปแบบ TFRecord
maxPixels
พารามิเตอร์ maxPixels มีไว้เพื่อป้องกันไม่ให้มีการสร้างการส่งออกขนาดใหญ่มากโดยไม่ได้ตั้งใจ หากค่าเริ่มต้นต่ำเกินไปสำหรับรูปภาพเอาต์พุตที่ต้องการ คุณสามารถเพิ่ม maxPixels ได้ เช่น
Export.image.toDrive({ image: landsat, description: 'maxPixelsExample', crs: projection.crs, crsTransform: projection.transform, region: geometry, maxPixels: 1e9 });
การส่งออกไฟล์ขนาดใหญ่
หากรูปภาพเอาต์พุตมีขนาดใหญ่ ระบบจะส่งออกเป็นหลายไฟล์ หากคุณส่งออกเป็น GeoTIFF ระบบจะแยกรูปภาพออกเป็นไทล์ ชื่อไฟล์ของแต่ละ
ไทล์จะมีรูปแบบเป็น baseFilename-yMin-xMin โดยที่ xMin และ yMin คือ
พิกัดของแต่ละไทล์ภายในกรอบล้อมรอบโดยรวมของรูปภาพที่ส่งออก
หากคุณส่งออกเป็น TFRecord ระบบจะต่อท้ายไฟล์ด้วย -00000, -00001,... -0000N สำหรับไฟล์ N+1 การรักษลําดับนี้ไว้มีความสําคัญหากคุณต้องการทําการอนุมานในไฟล์และอัปโหลดการคาดการณ์กลับไปยัง Earth Engine เป็นรูปภาพ ดูรายละเอียดได้ที่การอัปโหลดรูปภาพเป็นไฟล์ TFRecord
การส่งออกรูปภาพตามที่ปรากฏในตัวแก้ไขโค้ด
หากต้องการส่งออกภาพตามที่แสดงบนหน้าจอใน Earth Engine ให้สร้างรูปภาพการแสดงภาพตามที่แสดงในส่วนรูปภาพการแสดงภาพและส่วนการคอมโพสิตและการต่อภาพ เนื่องจากตัวแก้ไขโค้ดใช้
'EPSG:3857' CRS ให้ระบุ CRS เป็น 'EPSG:3857' ในการส่งออกเพื่อรับรูปภาพ
ในการฉายภาพเดียวกันกับที่แสดงในแผนที่ตัวแก้ไขโค้ด ดู
รายละเอียดเกี่ยวกับการระบุความละเอียดและระบบพิกัดของเอาต์พุตได้ในส่วน
เกี่ยวกับการกำหนดค่าการส่งออกรูปภาพ