Python इंस्टॉल करना

Python के लिए सहायता

Earth Engine की Python क्लाइंट लाइब्रेरी, Google Cloud के साथ काम करने वाले Python के उन वर्शन के साथ काम करती है. Python के रिलीज़ शेड्यूल (पीईपी 602; Python वर्शन की स्थिति) के हिसाब से, सहायता को हर साल अपडेट किया जाता है. काम न करने वाले Python वर्शन का इस्तेमाल करने पर, पुष्टि करने में समस्याएं आ सकती हैं. साथ ही, कुछ कार्रवाइयां पूरी न हो पाने या गड़बड़ी का पता चलने जैसी समस्याएं भी आ सकती हैं.

इंस्टॉल करने के विकल्प

अगर Google Colab का इस्तेमाल किया जा रहा है, तो Earth Engine की Python क्लाइंट लाइब्रेरी का नया वर्शन, pip के ज़रिए पहले से इंस्टॉल हो चुका है. Earth Engine और Colab का इस्तेमाल शुरू करने के लिए, नीचे दी गई नोटबुक आज़माएं:

अगर Colab का इस्तेमाल नहीं किया जा रहा है, तो Earth Engine क्लाइंट लाइब्रेरी को मैन्युअल तरीके से इंस्टॉल किया जा सकता है. साथ ही, conda (इसका सुझाव दिया जाता है) या pip का इस्तेमाल करके, इसे अपने सिस्टम पर अपडेट किया जा सकता है:


pip का इस्तेमाल करके, एपीआई को किसी भी Python एनवायरमेंट में इंस्टॉल करें. टर्मिनल या कमांड प्रॉम्प्ट से:

pip install earthengine-api

इंस्टॉल होने के बाद, यहां बताए गए तरीके के मुताबिक, Earth Engine API को इंपोर्ट, पुष्टि, और शुरू किया जा सकता है.

एपीआई को अपडेट करें:

pip install earthengine-api --upgrade

पैकेज इंपोर्ट करना

Python API पैकेज को ee कहा जाता है. इसे हर नए Python सेशन और स्क्रिप्ट के लिए इंपोर्ट और शुरू किया जाना चाहिए:

import ee

पुष्टि करना और शुरू करना

Earth Engine की Python क्लाइंट लाइब्रेरी का इस्तेमाल करने से पहले, आपको पुष्टि करनी होगी. साथ ही, Python क्लाइंट को शुरू करने के लिए, पुष्टि के बाद मिले क्रेडेंशियल का इस्तेमाल करना होगा. चलाएं:

ee.Authenticate()

इससे आपके एनवायरमेंट के लिए पुष्टि करने का सबसे सही मोड चुना जाएगा. साथ ही, आपको अपनी स्क्रिप्ट के ऐक्सेस की पुष्टि करने के लिए कहा जाएगा. शुरू करने के लिए, आपको ऐसा प्रोजेक्ट देना होगा जिसका मालिकाना हक आपके पास हो या जिसका इस्तेमाल करने की अनुमतियां आपके पास हों. इस प्रोजेक्ट का इस्तेमाल, Earth Engine के सभी ऑपरेशन चलाने के लिए किया जाएगा:

ee.Initialize(project='my-project')

पुष्टि करने के तरीकों और Cloud प्रोजेक्ट के बारे में ज़्यादा जानने के लिए, पुष्टि करने के तरीके के बारे में बताने वाली गाइड देखें. साथ ही, समस्या हल करने के लिए भी यह गाइड देखें.

सभी को नमस्कार!

यहां एक छोटी स्क्रिप्ट दी गई है. इससे यह पता चलेगा कि आपके पास Earth Engine के साथ काम करने के लिए सभी ज़रूरी चीज़ें हैं या नहीं.

import ee
ee.Authenticate()
ee.Initialize(project='my-project')
print(ee.String('Hello from the Earth Engine servers!').getInfo())

सिंटैक्स

Python और JavaScript, दोनों एपीआई एक ही सर्वर-साइड फ़ंक्शन को ऐक्सेस करते हैं. हालांकि, भाषा के सिंटैक्स में अंतर की वजह से, क्लाइंट-साइड एक्सप्रेशन (क्लाइंट बनाम सर्वर के बारे में ज़्यादा जानें) अलग-अलग हो सकते हैं. नीचे दी गई टेबल में, सिंटैक्स के उन सामान्य अंतरों की सूची दी गई है जो आपको JavaScript API के मुकाबले Python API का इस्तेमाल करते समय दिखेंगे.

JavaScript और Python के बीच सिंटैक्स में आम अंतर
प्रॉपर्टी JavaScript Python
फ़ंक्शन की परिभाषा
function myFun(arg) {
  return arg;
}

var myFun = function(arg) {
  return arg;
};
def my_fun(arg):
  return arg
अनाम फ़ंक्शन मैपिंग
var foo = col.map(function(arg) {
  return arg;
});
foo = col.map(lambda arg: arg)
वैरिएबल की परिभाषा
var myVar = 'var';
my_var = 'var'
तार्किक ऑपरेटर
var match = such.and(that);
var match = such.or(that);
var match = such.not(that);
match = such.And(that)
match = such.Or(that)
match = such.Not(that)
मल्टी-लाइन वाला तरीका
var foo = my.really()
              .reallyLong()
              .methodChain();
foo = (my.really()
       .reallyLong()
       .methodChain())
डिक्शनरी की कुंजियां
var dic = {'key': value};
var dic = {key: value};
dic = {'key': value}
डिक्शनरी ऑब्जेक्ट का ऐक्सेस
var value = dic.key;
var value = dic['key'];
value = dic['key']
फ़ंक्शन के आर्ग्युमेंट की परिभाषा
// Positional arguments.
var foo = fun(argX, argY, argZ);
// Keyword arguments object.
var foo = fun({y: argY});
# Positional arguments.
foo = fun(arg_x, arg_y, arg_z)
# Keyword arguments dictionary.
foo = fun(**{'y': arg_y})
# Keyword arguments.
foo = fun(x=arg_x, z=arg_z)
बूलियन
var t = true;
var f = false;
t = True
f = False
शून्य वैल्यू
var na = null;
na = None
टिप्पणी
//
#

तारीख के ऑब्जेक्ट

datetime मॉड्यूल की मदद से, क्लाइंट-साइड तारीख ऑब्जेक्ट तय करें और उनमें बदलाव करें. अपनी स्क्रिप्ट में मॉड्यूल शामिल करें:

import datetime

ee.Date को क्लाइंट-साइड तारीख में बदलना:

ee_date = ee.Date('2020-01-01')
py_date = datetime.datetime.utcfromtimestamp(ee_date.getInfo()['value']/1000.0)

क्लाइंट-साइड की तारीख को ee.Date: में बदलना

py_date = datetime.datetime.utcnow()
ee_date = ee.Date(py_date)

डेटा एक्सपोर्ट करने में

Python API की मदद से डेटा एक्सपोर्ट करने के लिए, ee.batch मॉड्यूल का इस्तेमाल करना ज़रूरी है. यह Export फ़ंक्शन के लिए इंटरफ़ेस उपलब्ध कराता है. पैरामीटर आर्ग्युमेंट को वैसे ही पास करें जैसे JavaScript API के साथ किया जाता है. हालांकि, ऊपर दी गई सिंटैक्स टेबल में बताए गए अंतरों का ध्यान रखें. टास्क एक्सपोर्ट करने के लिए, पहले से तय किए गए टास्क पर start() का इस्तेमाल करके, टास्क एक्सपोर्ट करने की प्रोसेस शुरू की जानी चाहिए. किसी टास्क के स्टेटस के बारे में जानकारी पाने के लिए, उस पर status() तरीके को कॉल करें. इस उदाहरण में, ee.Image ऑब्जेक्ट को एक्सपोर्ट करने का तरीका बताया गया है.

एक्सपोर्ट टास्क बनाने के लिए:

task = ee.batch.Export.image.toDrive(image=my_image,  # an ee.Image object.
                                     region=my_geometry,  # an ee.Geometry object.
                                     description='mock_export',
                                     folder='gdrive_folder',
                                     fileNamePrefix='mock_export',
                                     scale=1000,
                                     crs='EPSG:4326')

एक्सपोर्ट टास्क शुरू करने के लिए:

task.start()

एक्सपोर्ट टास्क की स्थिति देखें:

task.status()

task.status() का नतीजा एक डिक्शनरी होती है, जिसमें टास्क की स्थिति और उसका आईडी जैसी जानकारी होती है.

{
  'state': 'READY',
  'description': 'my_export_task',
  'creation_timestamp_ms': 1647567508236,
  'update_timestamp_ms': 1647567508236,
  'start_timestamp_ms': 0,
  'task_type': 'EXPORT_IMAGE',
  'id': '56TVJIZABUMTD5CJ5YHTMYK4',
  'name': 'projects/earthengine-legacy/operations/56TVJIZABUMTX5CJ5HHTMYK4'
}

state फ़ील्ड का इस्तेमाल करके, टास्क की प्रोग्रेस पर नज़र रखी जा सकती है. state वैल्यू की सूची और टास्क के लाइफ़साइकल के बारे में ज़्यादा जानकारी के लिए, प्रोसेसिंग के लिए इस्तेमाल होने वाले एनवायरमेंट पेज पर जाएं.

ऑब्जेक्ट प्रिंट करना

Python में Earth Engine ऑब्जेक्ट को प्रिंट करने पर, ऑब्जेक्ट के लिए सीरियलाइज़ किया गया अनुरोध प्रिंट होता है, न कि ऑब्जेक्ट. इसकी वजह जानने के लिए, क्लाइंट बनाम सर्वर पेज पर जाएं.

सर्वर से क्लाइंट पर अपनी पसंद का ऑब्जेक्ट पाने के लिए, Earth Engine ऑब्जेक्ट पर getInfo() को कॉल करें:

# Load a Landsat image.
img = ee.Image('LANDSAT/LT05/C02/T1_L2/LT05_034033_20000913')

# Print image object WITHOUT call to getInfo(); prints serialized request instructions.
print(img)

# Print image object WITH call to getInfo(); prints image metadata.
print(img.getInfo())
ध्यान दें कि getInfo() एक सिंक्रोनस ऑपरेशन है. इसका मतलब है कि getInfo() कॉल के बाद, एक्सप्रेशन के एक्ज़ीक्यूशन को तब तक ब्लॉक किया जाता है, जब तक क्लाइंट को नतीजा नहीं मिल जाता. इसके अलावा, बहुत ज़्यादा डेटा या महंगे कैलकुलेशन के अनुरोधों की वजह से, गड़बड़ी का मैसेज दिख सकता है और/या प्रोसेस रुक सकती है. आम तौर पर, सबसे सही तरीका यह है कि आप अपने नतीजे एक्सपोर्ट करें और फिर विश्लेषण के लिए, उन्हें नई स्क्रिप्ट में इंपोर्ट करें.

यूज़र इंटरफ़ेस (यूआई) ऑब्जेक्ट

Earth Engine ui मॉड्यूल सिर्फ़ JavaScript API कोड एडिटर के ज़रिए उपलब्ध है. Python में यूज़र इंटरफ़ेस (यूआई) एलिमेंट के लिए, तीसरे पक्ष की लाइब्रेरी का इस्तेमाल करना. geemap, Folium, और ipyleaflet जैसी लाइब्रेरी, इंटरैक्टिव मैप डिसप्ले की सुविधा देती हैं. वहीं, चार्ट बनाने के लिए, Matplotlib, Altair या seaborn जैसी लाइब्रेरी का इस्तेमाल किया जा सकता है. geemap और Matplotlib का इस्तेमाल करने के लिए, Colab सेटअप नोटबुक में Earth Engine के उदाहरण देखें.

डेवलपर गाइड में Python

Earth Engine डेवलपर गाइड में Python कोड शामिल है. जहां उपलब्ध हो, वहां कोड के उदाहरण देखे जा सकते हैं. इसके लिए, कोड ब्लॉक में सबसे ऊपर मौजूद "Colab (Python)" टैब पर क्लिक करें. गाइड पेजों पर सबसे ऊपर, पेज को Colab नोटबुक के तौर पर चलाने या GitHub पर देखने के लिए बटन भी हो सकते हैं. Python कोड के उदाहरणों को Google Colab का इस्तेमाल करके चलाया जा सकता है. इंटरैक्टिव मैप और ऑब्जेक्ट एक्सप्लोरेशन को geemap लाइब्रेरी मैनेज करती है. Earth Engine की Python क्लाइंट लाइब्रेरी और geemap, दोनों पहले से ही Colab में इंस्टॉल होती हैं.

Earth Engine का सेटअप

Python कोड चलाने के लिए, आपको Earth Engine लाइब्रेरी इंपोर्ट करनी होगी, पुष्टि करनी होगी, और उसे शुरू करना होगा. उदाहरणों में इन निर्देशों का इस्तेमाल किया गया है (विकल्पों के लिए, पुष्टि करना और शुरू करना पेज देखें).

import ee
ee.Authenticate()
ee.Initialize(project='my-project')

geemap की मदद से इंटरैक्टिव एक्सप्लोरेशन

geemap लाइब्रेरी का इस्तेमाल, मैप टाइल दिखाने और Earth Engine ऑब्जेक्ट के बेहतर तरीके से दिखाए गए डेटा को प्रिंट करने के लिए किया जाता है. लाइब्रेरी इन सुविधाओं के लिए, ipyleaflet और eerepr पर निर्भर करती है. geemap लाइब्रेरी और उसकी डिपेंडेंसी, Google Colab में पहले से इंस्टॉल होती हैं; इसे हर सेशन में इंपोर्ट करें.

import geemap.core as geemap

ee.Image और ee.FeatureCollection जैसी भौगोलिक Earth Engine डेटा क्लास को geemap.Map ऑब्जेक्ट का इस्तेमाल करके देखा जा सकता है. सबसे पहले, मैप ऑब्जेक्ट तय करें. इसके बाद, उसमें लेयर जोड़ें या उसके व्यूपोर्ट में बदलाव करें.

# Initialize a map object.
m = geemap.Map()

# Define an example image.
img = ee.Image.random()

# Add the image to the map.
m.add_layer(img, None, 'Random image')

# Display the map (you can call the object directly if it is the final line).
display(m)