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 का इस्तेमाल करके, इसे अपने सिस्टम पर अपडेट किया जा सकता है:
पैकेज इंपोर्ट करना
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 |
---|---|---|
फ़ंक्शन की परिभाषा |
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)