इमेज एक्सपोर्ट करना

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

इसके बाद, प्रोजेक्शन पैरामीटर तय करें. इनका इस्तेमाल यहां दिए गए एक्सपोर्ट में किया जाएगा. हम 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 पैरामीटर का इस्तेमाल, crsTransform की xScale और yScale वैल्यू को भरने के लिए किया जाता है. हालांकि, xTranslation और yTranslation वैल्यू का हिसाब इस तरह लगाया जाता है कि अगर उन्हें xScale और yScale वैल्यू से भाग दिया जाए, तो शेष शून्य होगा. इन पैरामीटर से, पिक्सल ग्रिड के बारे में पता चलता है. इसमें प्रोजेक्शन का ओरिजन, पिक्सल के कोने पर होता है. यह कन्वेंशन, डेटा उपलब्ध कराने वाली कुछ कंपनियों के इस्तेमाल किए जाने वाले ट्रांसलेशन पैरामीटर से अलग है. ये कंपनियां, प्रोजेक्शन के ऑरिजिन से ऑफ़सेट की गई ग्रिड का इस्तेमाल करती हैं. उदाहरण के लिए, यूएसजीएस से मिली लैंडसैट इमेज में, ट्रांसलेशन पैरामीटर का इस्तेमाल किया जाता है. ये पैरामीटर, प्रोजेक्शन के ऑरिजिन से 1/2 पिक्सल ऑफ़सेट होते हैं. वहीं, ईएसए से मिली सेंटिनल-2 इमेज में, ट्रांसलेशन पैरामीटर का इस्तेमाल किया जाता है. ये पैरामीटर, प्रोजेक्शन के ऑरिजिन के साथ अलाइन होते हैं. अगर एक्सपोर्ट में बताए गए crsTransform, ओरिजनल इमेज के crsTransform से मैच नहीं होते हैं, तो आउटपुट पिक्सल को फिर से सैंपल किया जाएगा. इसके लिए, डिफ़ॉल्ट रूप से नियरेस्ट नेबर का इस्तेमाल किया जाएगा. इससे, आउटपुट इमेज, ओरिजनल इमेज से अलग दिखेगी.

कुल मिलाकर, अगर आपको एक्सपोर्ट की गई इमेज के पिक्सल को किसी इमेज से मैच करना है, तो पक्का करें कि आपने ग्रिड को पूरी तरह से कंट्रोल करने के लिए, 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 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()

इस कोड को चलाने पर, कोड एडिटर के टास्क टैब में एक एक्सपोर्ट टास्क बन जाएगा. टास्क शुरू करने के लिए, उसके बगल में मौजूद Run बटन पर क्लिक करें. (टास्क मैनेजर के बारे में ज़्यादा जानने के लिए, कोड एडिटर सेक्शन पर जाएं). इमेज, आपके Drive खाते में बनाई जाएगी. इसके लिए, fileFormat का इस्तेमाल किया जाएगा.

Cloud Storage में

किसी इमेज को Google Cloud Storage बकेट में एक्सपोर्ट करने के लिए, Export.image.toCloudStorage() का इस्तेमाल करें. पिछले उदाहरण में दी गई Landsat इमेज को Drive के बजाय 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()

Drive में एक्सपोर्ट करने की तरह ही, Tasks टैब से एक्सपोर्ट शुरू करें. 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 के तौर पर शामिल किया गया है. एक्सपोर्ट की गई इमेज, तय किए गए स्केल पर पिक्सल के साथ तय किए गए इलाके को कवर करेगी. अगर साफ़ तौर पर नहीं बताया गया है, तो आउटपुट का सीआरएस, एक्सपोर्ट की जाने वाली इमेज के पहले बैंड से लिया जाएगा.

एक्सपोर्ट की गई इमेज के लिए, dimensions, crs और/या crsTransform भी तय किया जा सकता है. crs और crsTransform के बारे में ज़्यादा जानकारी के लिए, ग्लॉसरी देखें. उदाहरण के लिए, किसी दूसरे डेटा सोर्स के साथ सटीक रूप से अलाइन किए गए पिक्सल का ब्लॉक पाने के लिए, dimensions, crs, और crsTransform की जानकारी दें. किसी क्षेत्र को कवर करने वाले, पहले से तय किए गए साइज़ के पिक्सल का ब्लॉक (उदाहरण के लिए, 256x256 थंबनेल इमेज) पाने के लिए, dimensions और region तय करें.

fileFormat पैरामीटर (डिफ़ॉल्ट रूप से 'GeoTIFF') का इस्तेमाल करके, इमेज के आउटपुट फ़ॉर्मैट की जानकारी दी जा सकती है. हालांकि, ऐसा तब ही किया जा सकता है, जब डेस्टिनेशन toAsset() न हो.

formatOptions पैरामीटर

कॉन्फ़िगरेशन के अन्य विकल्पों को formatOptions पैरामीटर के साथ सेट किया जाता है. यह एक डिक्शनरी होनी चाहिए, जिसमें फ़ॉर्मैट के अन्य विकल्पों के हिसाब से कुंजी दी गई हो. साथ ही, यह हर fileFormat के लिए खास होनी चाहिए. इसके बारे में यहां बताया गया है.

GeoTIFF

क्लाउड के लिए ऑप्टिमाइज़ किया गया GeoTIFF

क्लाउड के लिए ऑप्टिमाइज़ किए गए GeoTIFF को एक्सपोर्ट करने के लिए, formatOptions के लिए JavaScript लिटरल पास करें. इसमें cloudOptimized कुंजी को सही पर सेट किया गया हो. पिछले उदाहरण को जारी रखते हुए:

कोड एडिटर (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 में फिर से लोड किया जा सकता है या ऐसेट के तौर पर रजिस्टर किया जा सकता है. एक्सपोर्ट करने की पूरी जानकारी और विकल्पों के लिए, क्लाउड के लिए ऑप्टिमाइज़ किए गए GeoTIFF (सीओजी) की खास जानकारी देखें.

Nodata

formatOptions पैरामीटर में noData कुंजी का इस्तेमाल करके, GeoTIFF nodata वैल्यू की जानकारी दें. उदाहरण के लिए:

कोड एडिटर (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 में स्क्रीन पर रेंडर की गई इमेज को एक्सपोर्ट करने के लिए, विज़ुअलाइज़ेशन इमेज बनाएं. इसके लिए, विज़ुअलाइज़ेशन इमेज और कंपोज़िटिंग और मोज़ेकिंग सेक्शन में दिया गया तरीका अपनाएं. Code Editor, 'EPSG:3857' CRS का इस्तेमाल करता है. इसलिए, एक्सपोर्ट करते समय 'EPSG:3857' का सीआरएस तय करें, ताकि आपको Code Editor के मैप में दिखने वाली इमेज के प्रोजेक्शन में ही इमेज मिल सके. आउटपुट के रिज़ॉल्यूशन और कोऑर्डिनेट सिस्टम की जानकारी देने के बारे में ज़्यादा जानने के लिए, इमेज एक्सपोर्ट को कॉन्फ़िगर करने वाला सेक्शन देखें.