# الملحق ز: نموذج شيفرة مفتوحة المصدر والحساب

يتوفر الكود مفتوح المصدر لحسابات رصيد التنوع البيولوجي للجمهور على [Savimbo GitHub](https://github.com/savimbo).&#x20;

لدينا نية لجعل هذا الكود أسهل استخدامًا وإتاحته لمشاريع الشعوب الأصلية والمجتمعات المحلية عبر واجهة يمكنها الإضافة التلقائية إلى، ومن، قاعدة بيانات Airtable مجانية بعد أن نبدأ إصدار شهادات التنوع البيولوجي في 2024. Airtable مجانية [التسجيل ](https://airtable.com/invite/r/fxsn6mcE)متاح الآن. يمكن لمشاريع الشعوب الأصلية التسجيل في قائمة الانتظار عبر هذه الواجهة الآن والحصول على قوالب قاعدة بيانات Airtable عبر مراسلة <ops@savimbo.com>

تتوفر أيضًا حسابات تجريبية على Google Earth Engine؛ وقد تعهدت Google Earth Engine بتوفير حسابات مجانية لمجموعات الشعوب الأصلية المشاركة في تغير المناخ. غير تجاري [التسجيل](https://earthengine.google.com/noncommercial/) متاح.&#x20;

**الشكل 11. مثال على كود Google Earth Engine**&#x20;

<figure><img src="https://lh6.googleusercontent.com/rVQ0Wv_v9_eXa7qOghqAvJhwResowct17qRiUSD-lO_eatzZqyiNhfpKmprKNcRWdVXXkv2FuYyAetkdA1BzOcf6d7EWeGqmRpKVVMGmk89gLOQd8i1K-Ia4A7ixXu0Xo2XSlovBPF8KPN24COHu6a4" alt=""><figcaption><p><em><strong>الشكل 11</strong></em>. مثال على كود Google Earth Engine</p></figcaption></figure>

مثال على الكود، الكود قيد المراجعة الخارجية. يمكن الوصول إليه عبر Google Earth Engine من خلال هذا [الرابط.](https://code.earthengine.google.com/e914e4bf1b4fd252f4ad90318ca2371e) أو في Savimbo GitHub عبر هذا [الرابط.](https://github.com/savimbo) تواصل ***ops at savimbo.co**m* إذا كنت ترغب في أن تكون مراجعًا للكود.&#x20;

```markup
// تحميل مضلع plot18
var plot18_data = require("users/drea/map:plot18_data");
var plot18 = plot18_data.polygon;

// حساب مساحة القطعة بالهكتار
var plotArea = plot18.area();
var plotAreaHectares = plotArea.divide(10000);

// تحميل نقاط الجاغوار
var points_jaguar_data = require("users/drea/map:points_jaguar_data");
var puntos = points_jaguar_data.points;
var radios = [];
var sumMultipliedArea = ee.Number(0);

// تعريف مجموعة معالم لتخزين مضلعات التقاطع
var intersectionPolygons = ee.FeatureCollection([]);

// تعريف الدالة assignedArea
var assignedAreaFunction = function(offset) {
  var day = startDate.advance(offset, 'day');
  var dayString = day.format('YYYY-MM-dd');
  var feature = ee.Feature(null, { date: dayString, intersectionArea: intersectionArea });
  return feature.set('date_area', ee.String(dayString).cat(' - ').cat(intersectionArea));
};

// حساب أنصاف الأقطار والهوامش لكل نقطة
for (var i = 0; i < puntos.length; i++) {
  var point = puntos[i].geometry;
  var date = puntos[i].date;

  // حساب تاريخ البدء بطرح 30 يومًا
  var startDate = ee.Date(date).advance(-30, 'day');
  
  // حساب تاريخ الانتهاء بإضافة 30 يومًا
  var endDate = ee.Date(date).advance(30, 'day');
  
  // إنشاء معلم بخصائص هندسة النقطة والتاريخ
  var feature = ee.Feature(point, { date: date });
  
  var pointBuffer = feature.buffer(800);
  radios.push(pointBuffer);
  
  // حساب التقاطع مع plot18
  var intersection = pointBuffer.intersection(plot18);
  
  // حساب المساحة بالهكتار
  var area = intersection.area().divide(10000);
  
  // الحصول على شهر وتاريخ السنة
  var month = ee.Date(date).get('month');
  var year = ee.Date(date).get('year');
  
  // إنشاء تسمية للشهر والسنة
  var monthYearLabel = ee.String(month).cat('-').cat(year).cat(' Hectarias N°');
  
  // حساب التقاطع مع plot18 للنقطة الحالية
  var intersectionPlot18 = pointBuffer.intersection(plot18);
  
  // حساب المساحة بالهكتار للتقاطع مع plot18
  var intersectionArea = intersectionPlot18.area().divide(10000);
  var multipliedArea = intersectionArea.multiply(60);
  
  // إضافة multipliedArea إلى المجموع
  sumMultipliedArea = sumMultipliedArea.add(multipliedArea);
  
  // تعريف نطاق تواريخ الجاغوار
  var jaguarRange = endDate.difference(startDate, 'day');
  
 // إسناد قيمة intersectionArea إلى كل يوم في نطاق الجاغوار
  var assignedArea = ee.FeatureCollection(ee.List.sequence(0, jaguarRange.subtract(1)).map(assignedAreaFunction));
  
  // طباعة النتائج لكل نقطة
  print('جاغوار:', i + 1);
  print('تاريخ التقاط الصورة:', date);
  print('تاريخ البدء:', startDate.format('YYYY-MM-dd'));
  print('تاريخ الانتهاء:', endDate.format('YYYY-MM-dd'));
  print('إجمالي مساحة التقاطع لكل يوم بالهكتار:', intersectionArea);
  print('مساحة التقاطع المضروبة × 60:', multipliedArea);
  print('المساحة المخصصة لكل يوم:', assignedArea);
  print('----------------------');
  
  // إضافة نقطة العزل الحالية إلى الخريطة باللون الأزرق
  Map.addLayer(pointBuffer, { color: 'blue' }, 'Radio ' + (i + 1));
  
  // إضافة هندسة التقاطع إلى intersectionPolygons
  intersectionPolygons = intersectionPolygons.merge(intersection);
}

// تنفيذ اتحادات المضلع لتجنب التكرارات
var unionPolygons = intersectionPolygons.union();

// حساب المساحة الإجمالية للتقاطعات دون تكرارات
var totalIntersectionArea = unionPolygons.geometry().area().divide(10000);

// عرض النتائج
print('إجمالي مساحة التقاطع بالهكتار:', totalIntersectionArea);
print('مساحة plot18 بالهكتار:', plotAreaHectares);
print('مجموع مساحة التقاطع المضروبة بالهكتار × 60 يومًا:', sumMultipliedArea);

// إضافة طبقة plot18 إلى الخريطة
Map.addLayer(plot18, { color: 'gold' }, "plot18");
Map.centerObject(plot18);

```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://isbm.savimbo.com/methodology/ar/almlahq/almlhq-z-nmwthj-shyfrh-mftwhh-almsdr-walhsab.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
