الملحق G: نموذج من الشفرة مفتوحة المصدر والحساب
عرض توضيحي لـ Google Earth Engine وإمكانية الوصول إلى شيفرة ISBM على GitHub الخاص بـ Savimbo
هل كان هذا مفيدا؟
هل كان هذا مفيدا؟
// تحميل مضلع 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);