دعم لغة Python
تتوافق مكتبة برامج Python لـ Earth Engine مع إصدارات Python المتوافقة مع Google Cloud. يتم تعديل مستوى الدعم سنويًا وفقًا لجدول إصدارات Python (PEP 602؛ حالة إصدارات Python). قد يؤدي استخدام إصدارات Python غير المتوافقة إلى حدوث أخطاء في المصادقة أو سلوك غير متوقّع أو تعذُّر تنفيذ عمليات معيّنة.
خيارات التثبيت
إذا كنت تستخدم Google Colab، سبق أن تم تثبيت أحدث إصدار من مكتبة برامج Python لـ Earth Engine (من خلال pip). جرِّب دفتر الملاحظات التالي للبدء باستخدام Earth Engine وColab:
إذا كنت لا تستخدم Colab، يمكن تثبيت مكتبة برامج Earth Engine يدويًا وتحديثها على نظامك باستخدام conda (إجراء يُنصح به) أو pip:
استيراد الحِزم
تُعرف حزمة واجهة برمجة التطبيقات Python باسم ee
. يجب استيراده وإعداده
لكل جلسة ونص برمجي جديدَين من Python:
import ee
المصادقة والإعداد
قبل استخدام مكتبة برامج Python لواجهة برمجة التطبيقات Earth Engine، عليك المصادقة واستخدام بيانات الاعتماد الناتجة لإعداد العميل 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 على الوظيفة نفسها من جهة الخادم، ولكن يمكن أن تختلف التعبيرات من جهة العميل (مزيد من المعلومات عن الفرق بين جهة العميل وخادم) بسبب الاختلافات في بنية اللغة. يتضمّن الجدول التالي قائمة بالاختلافات الشائعة في البنية التي ستواجهها عند استخدام Python API مقارنةً بـ JavaScript 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
. اطّلِع على صفحة Processing
البيئات للحصول على
قائمة بقيم state
ومزيد من المعلومات عن
رحلة المهام.
طباعة الكائنات
يؤدي طباعة عنصر Earth Engine في Python إلى طباعة الطلب التسلسلي للعنصر، وليس العنصر نفسه. يُرجى الرجوع إلى صفحة الاختلافات بين العميل والخادم لفهم سبب ذلك.
استخدِم getInfo()
على عناصر Earth Engine للحصول على العنصر المطلوب من الخادم
إلى العميل:
# 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()
يتم حظره إلى أن يتم عرض النتيجة على العميل.
بالإضافة إلى ذلك، يمكن أن تؤدي طلبات الحصول على الكثير من البيانات أو العمليات الحسابية المُكلفة إلى ظهور خطأ و/أو
توقُّف التطبيق. بشكل عام، من أفضل الممارسات
تصدير النتائج،
وبعد اكتمالها، استيرادها إلى نص برمجي جديد لإجراء مزيد من التحليل.
عناصر واجهة المستخدم
لا تتوفّر وحدة ui
في Earth Engine إلا من خلال رمز واجهة برمجة التطبيقات JavaScript
Editor. استخدام مكتبات تابعة لجهات خارجية لعناصر واجهة المستخدم في Python توفّر مكتبات مثل
geemap و
Folium و
ipyleaflet
عرض خرائط تفاعلية، في حين يمكن إنشاء الرسوم البيانية باستخدام
Matplotlib و
Altair أو
seaborn، على سبيل المثال لا الحصر. يمكنك الاطّلاع على أمثلة
في
دفتر ملاحظات إعداد Earth Engine في Colab لاستخدام geemap وMatplotlib.
لغة Python في دليل المطوّر
يتم تضمين رمز Python في دليل مطوّري Earth Engine. يمكن الاطّلاع على أمثلة على الرموز، عند توفّرها،
من خلال النقر على علامة التبويب "Colab (Python)" في أعلى مجموعات الرموز.
قد تتضمّن صفحات الإرشادات أيضًا أزرارًا في أعلى الصفحة لتشغيلها كدفتر ملاحظات Colab أو
عرضها على GitHub. يُقصد بتشغيل أمثلة رموز Python باستخدام
Google Colab. تعالج مكتبة geemap
استكشاف الخريطة والعناصر التفاعلية. تكون مكتبة برامج Python لخدمة Earth Engine و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
يمكن عرض فئات بيانات Earth Engine الجغرافية، مثل ee.Image
و
ee.FeatureCollection
، باستخدام عنصر 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)