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

الكود مفتوح المصدر لحسابات رصيد التنوع البيولوجي متاح للجمهور على [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**م* إذا كنت ترغب في أن تكون مراجعًا للكود.&#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(' هكتارات رقم ');
  
  // حساب التقاطع مع 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' }, 'نطاق ' + (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://sexytrees.savimbo.com/methodology/ar/almlahq/almlhq-g-nmwthj-shfrh-mftwhh-almsdr-whsab.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.
