For the complete documentation index, see llms.txt. This page is also available as Markdown.
الملحق G: نموذج لشفرة مفتوحة المصدر والحساب
عرض توضيحي لـ Google Earth Engine وإتاحة الوصول إلى شفرة ISBM على GitHub الخاص بـ Savimbo
يتوفر الكود مفتوح المصدر لحسابات رصيد التنوع البيولوجي للجمهور على Savimbo GitHub.
لدينا نية لجعل هذا الكود أسهل استخدامًا وإتاحته لمشاريع الشعوب الأصلية والمجتمعات المحلية عبر واجهة يمكنها الإضافة التلقائية إلى، ومن، قاعدة بيانات Airtable مجانية بعد أن نبدأ إصدار شهادات التنوع البيولوجي في 2024. Airtable مجانية التسجيل متاح الآن. يمكن لمشاريع الشعوب الأصلية التسجيل في قائمة الانتظار عبر هذه الواجهة الآن والحصول على قوالب قاعدة بيانات Airtable عبر مراسلة ops@savimbo.com
تتوفر أيضًا حسابات تجريبية على Google Earth Engine؛ وقد تعهدت Google Earth Engine بتوفير حسابات مجانية لمجموعات الشعوب الأصلية المشاركة في تغير المناخ. غير تجاري التسجيل متاح.
الشكل 11. مثال على كود Google Earth Engine
الشكل 11. مثال على كود Google Earth Engine
مثال على الكود، الكود قيد المراجعة الخارجية. يمكن الوصول إليه عبر Google Earth Engine من خلال هذا الرابط. أو في Savimbo GitHub عبر هذا الرابط. تواصل ops at savimbo.com إذا كنت ترغب في أن تكون مراجعًا للكود.
// تحميل مضلع 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);