توفّر طبقة بيانات "شدة التغيّر في توفّر المياه" مقياسًا للتغيّر في المياه السطحية بين فترتين زمنيتين: 1984-1999 و2000-2015. تحسب الطبقة متوسط التغيير على مستوى أزواج الأشهر المتشابهة المأخوذة من الفترتين الزمنيتين. اطّلِع على دليل مستخدمي البيانات (الإصدار 2) للحصول على تفاصيل إضافية حول هذه الطبقة.
سيتضمّن هذا القسم من الدليل التوجيهي ما يلي:
- إضافة طبقة خريطة منمّقة لعرض شدة التغيّر في توفّر المياه
- تلخيص شدة التغيير في منطقة محدّدة باستخدام مدرّج تكراري
التمثيل البصري
على غرار طبقة "تكرار ظهور المياه"، سنبدأ بإضافة تمثيل مرئي أساسي لشدة تغيُّر تكرار الظهور إلى الخريطة، ثم نعمل على تحسينه. يتم تقديم شدة التغيير في عدد مرات الظهور بطريقتين، كقيم مطلقة وقيم عادية. سنستخدم القيم المطلقة في هذا البرنامج التعليمي. ابدأ باختيار طبقة كثافة التغيير المطلق في حدوث الفيضانات من صورة GSW:
محرّر الرموز البرمجية (JavaScript)
var change = gsw.select("change_abs");
في قسم الثوابت من الرمز البرمجي، أضِف عبارة تنشئ متغيّرًا جديدًا يحدّد طريقة تصميم الطبقة. تعرض هذه الأنماط المناطق التي انخفض فيها معدل حدوث المياه السطحية أو ارتفع باللون الأحمر أو الأخضر. تظهر المناطق التي لم يتغيّر فيها معدّل توفّر المياه السطحية باللون الأسود.
محرّر الرموز البرمجية (JavaScript)
var VIS_CHANGE = { min:-50, max:50, palette: ['red', 'black', 'limegreen'] };
في نهاية قسم "طبقات الخريطة" من الرمز البرمجي، أضِف عبارة تضيف طبقة جديدة إلى الخريطة.
محرّر الرموز البرمجية (JavaScript)
Map.setCenter(-74.4557, -8.4289, 11); // Ucayali River, Peru Map.addLayer({ eeObject: change, visParams: VIS_CHANGE, name: 'occurrence change intensity' });

تلخيص التغيير ضمن منطقة محلّ اهتمام
في هذا القسم، سنلخّص مقدار التغيير ضمن منطقة محدّدة تهمّك. لتحديد منطقة اهتمام، انقر على أداة رسم المضلّعات، وهي إحدى أدوات الأشكال الهندسية. سيؤدي ذلك إلى إنشاء طبقة "عمليات استيراد الأشكال الهندسية" جديدة، والتي يتم تسميتها "geometry" تلقائيًا. لتغيير الاسم، انقر على رمز الترس على يسار اسم الطبقة. (يُرجى العِلم أنّه قد تحتاج إلى وضع المؤشر على اسم الطبقة لإظهارها).
غيِّر اسم الطبقة إلى roi
(للمنطقة المهمة أو ROI). بعد ذلك، يمكننا النقر على سلسلة من النقاط على الخريطة لتحديد منطقة مضلّعة تهمّنا.

بعد أن حدّدنا منطقة الاهتمام وخزّناها في متغيّر، يمكننا استخدامها لحساب المدرّج التكراري لشدة التغيير في منطقة الاهتمام. أضِف الرمز التالي إلى قسم "الحسابات" في النص البرمجي.
محرّر الرموز البرمجية (JavaScript)
// Calculate a change intensity for the region of interest. var histogram = change.reduceRegion({ reducer: ee.Reducer.histogram(), geometry: roi, scale: 30, bestEffort: true, }); print(histogram);
يحسب البيان الأول مدرجًا تكراريًا لقيم شدة التغيّر في حدوث حدث ضمن منطقة الاهتمام، مع أخذ عينات بمقياس 30 مترًا. يطبع الأمر الثاني العنصر الناتج في علامة التبويب "وحدة التحكّم" في "محرّر الرموز". يمكنك توسيع شجرة العناصر لعرض قيم أقسام المدرّج التكراري. تتوفّر البيانات الرقمية، ولكن هناك طرق أفضل لعرض النتائج بشكل مرئي.

لتحسين ذلك، يمكننا إنشاء مخطط مدرّج تكراري بدلاً من ذلك. استبدِل العبارة التي تحدّد عنصر الرسم البياني المدرّج التكراري بالعبارات التالية:
محرّر الرموز البرمجية (JavaScript)
// Generate a histogram object and print it to the console tab. var histogram = ui.Chart.image.histogram({ image: change, region: roi, scale: 30, minBucketWidth: 10 }); histogram.setOptions({ title: 'Histogram of surface water change intensity.' });
تنشئ هذه العبارات عنصر مخطط مدرج تكراري، والذي يحل محل شجرة عناصر المدرج التكراري
في علامة التبويب "وحدة التحكم" باستخدام مخطط. تحتوي طريقة الرسم البياني على عدة وسيطات، بما في ذلك
scale
التي تحدد المقياس المكاني، بالأمتار، الذي يتم عنده أخذ عينات من المنطقة محل الاهتمام،
وminBucketWidth
التي تُستخدم للتحكّم في عرض حاويات المدرج التكراري.

يمكنك استكشاف قيم الرسم البياني بشكل تفاعلي من خلال وضع مؤشر الماوس فوق أشرطة المدرّج التكراري.
النص البرمجي النهائي
يتم إدراج النص الكامل لهذا القسم أدناه. يُرجى العِلم أنّ النص البرمجي يتضمّن عبارات
لتحديد شكل هندسي لمضلّع (roi
)، وهو مشابه للشكل الهندسي الذي
أنشأته باستخدام أدوات الأشكال الهندسية في "محرّر النصوص البرمجية".
محرّر الرموز البرمجية (JavaScript)
////////////////////////////////////////////////////////////// // Asset List ////////////////////////////////////////////////////////////// var gsw = ee.Image('JRC/GSW1_0/GlobalSurfaceWater'); var occurrence = gsw.select('occurrence'); var change = gsw.select("change_abs"); var roi = /* color: 0B4A8B */ee.Geometry.Polygon( [[[-74.17213, -8.65569], [-74.17419, -8.39222], [-74.38362, -8.36980], [-74.43031, -8.61293]]]); ////////////////////////////////////////////////////////////// // Constants ////////////////////////////////////////////////////////////// var VIS_OCCURRENCE = { min:0, max:100, palette: ['red', 'blue'] }; var VIS_CHANGE = { min:-50, max:50, palette: ['red', 'black', 'limegreen'] }; var VIS_WATER_MASK = { palette: ['white', 'black'] }; ////////////////////////////////////////////////////////////// // Calculations ////////////////////////////////////////////////////////////// // Create a water mask layer, and set the image mask so that non-water areas are transparent. var water_mask = occurrence.gt(90).mask(1); // Generate a histogram object and print it to the console tab. var histogram = ui.Chart.image.histogram({ image: change, region: roi, scale: 30, minBucketWidth: 10 }); histogram.setOptions({ title: 'Histogram of surface water change intensity.' }); print(histogram); ////////////////////////////////////////////////////////////// // Initialize Map Location ////////////////////////////////////////////////////////////// // Uncomment one of the following statements to center the map on // a particular location. // Map.setCenter(-90.162, 29.8597, 10); // New Orleans, USA // Map.setCenter(-114.9774, 31.9254, 10); // Mouth of the Colorado River, Mexico // Map.setCenter(-111.1871, 37.0963, 11); // Lake Powell, USA // Map.setCenter(149.412, -35.0789, 11); // Lake George, Australia // Map.setCenter(105.26, 11.2134, 9); // Mekong River Basin, SouthEast Asia // Map.setCenter(90.6743, 22.7382, 10); // Meghna River, Bangladesh // Map.setCenter(81.2714, 16.5079, 11); // Godavari River Basin Irrigation Project, India // Map.setCenter(14.7035, 52.0985, 12); // River Oder, Germany & Poland // Map.setCenter(-59.1696, -33.8111, 9); // Buenos Aires, Argentina\ Map.setCenter(-74.4557, -8.4289, 11); // Ucayali River, Peru ////////////////////////////////////////////////////////////// // Map Layers ////////////////////////////////////////////////////////////// Map.addLayer({ eeObject: water_mask, visParams: VIS_WATER_MASK, name: '90% occurrence water mask', shown: false }); Map.addLayer({ eeObject: occurrence.updateMask(occurrence.divide(100)), name: "Water Occurrence (1984-2015)", visParams: VIS_OCCURRENCE, shown: false }); Map.addLayer({ eeObject: change, visParams: VIS_CHANGE, name: 'occurrence change intensity' });
في القسم التالي، ستستكشف أكثر كيف تغيّر الماء بمرور الوقت، وذلك من خلال استخدام طبقة الانتقال الخاصة بفئة الماء.