لایه داده شدت تغییر وقوع آب معیاری از چگونگی تغییر آب های سطحی بین دو دوره را ارائه می دهد: 1984-1999 و 2000-2015. این لایه میانگین تغییرات در جفت های همولوگ ماه های گرفته شده از دو دوره را نشان می دهد. برای جزئیات بیشتر در مورد این لایه به راهنمای کاربران داده (v2) مراجعه کنید.
این بخش از آموزش به شرح زیر خواهد بود:
- یک لایه نقشه سبک برای تجسم شدت تغییر وقوع آب اضافه کنید و
- با استفاده از یک هیستوگرام، شدت تغییر را در یک منطقه مورد علاقه خاص خلاصه کنید.
تجسم
مشابه لایه وقوع آب، با افزودن یک تجسم اولیه از شدت تغییر وقوع به نقشه شروع می کنیم و سپس آن را بهبود می بخشیم. شدت تغییر وقوع به دو صورت هم به صورت مقادیر مطلق و هم به صورت نرمال شده ارائه می شود. ما در این آموزش از مقادیر مطلق استفاده خواهیم کرد. با انتخاب لایه شدت تغییر وقوع مطلق از تصویر GSW شروع کنید:
ویرایشگر کد (جاوا اسکریپت)
var change = gsw.select("change_abs");
در بخش Constants کد، عبارتی اضافه کنید که یک متغیر جدید ایجاد می کند که نحوه استایل دهی لایه را مشخص می کند. این یک ظاهر طراحی شده مناطقی را نشان می دهد که در آن وقوع آب سطحی به رنگ قرمز/سبز کاهش/افزایش یافته است. مناطقی که وقوع آب های سطحی نسبتاً بدون تغییر است با رنگ سیاه نشان داده شده اند.
ویرایشگر کد (جاوا اسکریپت)
var VIS_CHANGE = { min:-50, max:50, palette: ['red', 'black', 'limegreen'] };
در انتهای بخش Map Layers کد، عبارتی اضافه کنید که یک لایه جدید به نقشه اضافه می کند.
ویرایشگر کد (جاوا اسکریپت)
Map.setCenter(-74.4557, -8.4289, 11); // Ucayali River, Peru Map.addLayer({ eeObject: change, visParams: VIS_CHANGE, name: 'occurrence change intensity' });

خلاصه کردن تغییرات در یک منطقه مورد علاقه
در این بخش، مقدار تغییر در یک منطقه خاص مورد علاقه را خلاصه می کنیم. برای تعیین منطقه مورد نظر، روی ابزار ترسیم چند ضلعی که یکی از ابزارهای هندسه است، کلیک کنید. این یک لایه جدید Geometry Imports ایجاد می کند که به طور پیش فرض "geometry" نام دارد. برای تغییر نام، روی نماد چرخ دنده واقع در سمت راست نام لایه کلیک کنید. (توجه داشته باشید که ممکن است لازم باشد مکان نما را روی نام لایه قرار دهید تا ظاهر شود.)
نام لایه را به roi
(برای منطقه مورد علاقه یا ROI) تغییر دهید. سپس میتوانیم روی یک سری از نقاط روی نقشه کلیک کنیم تا یک منطقه چند ضلعی مورد نظر را تعریف کنیم.

اکنون که منطقه مورد علاقه ما در یک متغیر تعریف و ذخیره شده است، می توانیم از آن برای محاسبه هیستوگرام شدت تغییر برای ROI استفاده کنیم. کد زیر را به قسمت Calculations اسکریپت اضافه کنید.
ویرایشگر کد (جاوا اسکریپت)
// 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);
عبارت اول یک هیستوگرام از مقادیر شدت تغییر رخداد را در ROI محاسبه می کند، نمونه برداری در مقیاس 30 متر. دومی شی حاصل را در تب Console ویرایشگر کد چاپ می کند. می توانید درخت شی را برای مشاهده مقادیر سطل های هیستوگرام گسترش دهید. داده های عددی وجود دارد، اما راه های بهتری برای تجسم نتایج وجود دارد.

برای بهبود این موضوع، می توانیم به جای آن یک نمودار هیستوگرام ایجاد کنیم. عبارتی را که شی هیستوگرام را تعریف می کند با عبارات زیر جایگزین کنید:
ویرایشگر کد (جاوا اسکریپت)
// 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
) است که با هندسه ای که با استفاده از ابزارهای هندسه ویرایشگر کد ایجاد کرده اید قابل مقایسه است.
ویرایشگر کد (جاوا اسکریپت)
////////////////////////////////////////////////////////////// // 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' });
در بخش بعدی ، با کار با لایه انتقال کلاس آب، چگونگی تغییر آب در طول زمان را بیشتر بررسی خواهید کرد.