การส่งออกรูปภาพ

คุณสามารถส่งออกรูปภาพจาก 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]);

การตั้งค่า Python

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

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();

การตั้งค่า Python

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

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

การตั้งค่า Python

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

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

การตั้งค่า Python

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

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'
  }
});

การตั้งค่า Python

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

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

การตั้งค่า Python

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

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,
  }
});

การตั้งค่า Python

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

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