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