تصدير الصور

يمكنك تصدير الصور من 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 للحصول على معلومات عن واجهة برمجة التطبيقات Python API واستخدام IDE geemap لتطوير التطبيقات التفاعلي.

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. اطّلِع على أمثلة على ملفّات Affine المصفّحات.

محرِّر الرموز البرمجية (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 للحصول على معلومات عن واجهة برمجة التطبيقات Python API واستخدام IDE geemap لتطوير التطبيقات التفاعلي.

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 المقابلة، سيكون المتبقي هو صفر. تحدِّد هذه المَعلمات شبكة وحدات البكسل التي يكون فيها أصل الإسقاط في углу بكسل. يختلف هذا الاتفاق عن مَعلمات الترجمة التي يستخدمها بعض مزوّدي البيانات، والتي تستخدِم شبكات تمّ إزاحتها عن نقطة بدء العملية الإسقاط. على سبيل المثال، تستخدم صور Landsat التي يوفّرها USGS مَعلمات التحويل التي يتمّ إزاحتها بمقدار 1/2 بكسل من نقطة بداية الإسقاط (إزاحة 15 مترًا للشرائح التي تبلغ مساحتها 30 مترًا)، في حين تستخدم صور Sentinel-2 التي يوفّرها ESA مَعلمات التحويل التي تكون متوافقة مع نقطة بداية الإسقاط. إذا كانت قيمةcrsTransform المحدّدة في عملية التصدير لا تتطابق مع قيمةcrsTransform للملف الأصلي، ستتم إعادة تحليل وحدات البكسل الناتجة (باستخدام أسلوب "أقرب جار" بشكلٍ default)، ما سيؤدي إلى تغيُّر موضع الصورة الناتجة مقارنةً بالملف الأصلي.

باختصار، إذا كنت بحاجة إلى مطابقة وحدات بكسل الصورة التي تم تصديرها مع صورة معيّنة، احرص على استخدام المَعلمتَين crs وcrsTransform للتحكّم بشكل كامل في الشبكة.

إلى Drive

لتصدير صورة إلى حسابك على Drive، استخدِم 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 للحصول على معلومات عن واجهة برمجة التطبيقات Python API واستخدام IDE geemap لتطوير التطبيقات التفاعلي.

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

عند تنفيذ هذا الرمز، سيتم إنشاء مهمة تصدير في علامة التبويب "محرِّر الرموز البرمجية" المهام. انقر على الزر تشغيل بجانب المهمة لبدء تنفيذها. (اطّلِع على مزيد من المعلومات عن "مدير المهام" من قسم "محرِّر الرموز"). سيتم إنشاء الصورة في حسابك على Drive باستخدام fileFormat المحدّد.

إلى "مساحة التخزين في السحابة الإلكترونية"

لتصدير صورة إلى حزمة Google Cloud Storage، استخدِم Export.image.toCloudStorage(). لتصدير صورة Landsat في المثال السابق إلى Cloud Storage بدلاً من Drive، استخدِم:

محرِّر الرموز البرمجية (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 للحصول على معلومات عن واجهة برمجة التطبيقات Python API واستخدام IDE geemap لتطوير التطبيقات التفاعلي.

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

كما هو الحال مع عمليات التصدير إلى Drive، ابدأ عملية التصدير من علامة التبويب المهام. يمكن أن يؤثر موقع حزمة 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 للحصول على معلومات عن واجهة برمجة التطبيقات Python API واستخدام IDE geemap لتطوير التطبيقات التفاعلي.

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. للحصول على مجموعة من وحدات البكسل بحجم محدّد مسبقًا (مثل صورة مصغّرة بحجم 256 x ‏256 ) تغطي منطقة معيّنة، حدِّد 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 للحصول على معلومات عن واجهة برمجة التطبيقات Python API واستخدام IDE geemap لتطوير التطبيقات التفاعلي.

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 للحصول على معلومات عن واجهة برمجة التطبيقات Python API واستخدام IDE geemap لتطوير التطبيقات التفاعلي.

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' في عملية التصدير للحصول على صورة باستخدام الإسقاط نفسه المعروض في خريطة "أداة التعديل البرمجي". اطّلِع على القسم المعنيّ بضبط عمليات تصدير الصور للحصول على تفاصيل عن تحديد درجة الدقة ونظام التنسيقات للناتج.