คุณสามารถส่งออกรูปภาพจาก 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])
ถัดไป ให้กําหนดพารามิเตอร์ projection ที่จะใช้ในการส่งออกครั้งถัดไป เราใช้พารามิเตอร์ 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
หากต้องการส่งออกรูปภาพไปยังที่เก็บข้อมูล 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()
เช่นเดียวกับการส่งออกไปยังไดรฟ์ ให้เริ่มการส่งออกจากแท็บงาน ตำแหน่งที่เก็บข้อมูล 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'
ก็ได้ เช่น หากต้องการตั้งค่าให้ทุกกลุ่มใช้นโยบายการสร้างปิรามิด "ตัวอย่าง" โดยค่าเริ่มต้น ให้ใช้ {'.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 สำหรับ 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
ดูรายละเอียดได้ในเอกสารภาพรวม Image
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 ให้สร้างภาพการแสดงภาพตามที่แสดงในส่วนภาพการแสดงภาพและการคอมโพสและการสร้างภาพโมเสก เนื่องจากเครื่องมือแก้ไขโค้ดใช้ CRS 'EPSG:3857'
ให้ระบุ CRS ของ 'EPSG:3857'
ในการส่งออกเพื่อให้ได้รูปภาพในโปรเจ็กชันเดียวกับที่แสดงในแผนที่เครื่องมือแก้ไขโค้ด ดูรายละเอียดเกี่ยวกับการระบุความละเอียดและระบบพิกัดของเอาต์พุตได้ที่ส่วนเกี่ยวกับการกำหนดค่าการส่งออกรูปภาพ