مجموعه تصاویر

مجموعه تصاویر به مجموعه ای از تصاویر Earth Engine اشاره دارد. به عنوان مثال، مجموعه تمام تصاویر Landsat 8 یک ee.ImageCollection است. مانند تصویر SRTM که با آن کار کرده‌اید، مجموعه‌های تصویر نیز دارای شناسه هستند. همانند تصاویر منفرد، می‌توانید با جستجوی کاتالوگ داده‌های Earth Engine از ویرایشگر کد و مشاهده صفحه جزئیات مجموعه داده، شناسه یک مجموعه تصویر را کشف کنید. به عنوان مثال، "landsat 8 toa" را جستجو کنید و روی اولین نتیجه کلیک کنید، که باید با مجموعه داده USGS Landsat 8 Collection 1 Tier 1 TOA Reflectance مطابقت داشته باشد. یا آن مجموعه داده را با استفاده از دکمه Import وارد کنید و نام آن را به l8 تغییر دهید، یا شناسه را در سازنده مجموعه تصویر کپی کنید:

ویرایشگر کد (جاوا اسکریپت)

var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA');

فیلتر کردن مجموعه تصاویر

شایان ذکر است که این مجموعه نمایانگر تمام صحنه های Landsat 8 جمع آوری شده در سراسر زمین است. اغلب استخراج یک تصویر منفرد یا زیر مجموعه ای از تصاویر برای آزمایش الگوریتم ها مفید است. راه محدود کردن مجموعه بر اساس زمان یا مکان، فیلتر کردن آن است. به عنوان مثال، برای فیلتر کردن مجموعه به تصاویری که یک مکان خاص را پوشش می‌دهند، ابتدا منطقه مورد نظر خود را با یک نقطه (یا خط یا چندضلعی) با استفاده از ابزار ترسیم هندسه تعریف کنید. به منطقه مورد علاقه خود حرکت کنید، روی هندسه وارد کنید (اگر قبلاً یک یا چند هندسه تعریف کرده اید) و لایه +جدید را کلیک کنید (اگر هیچ وارداتی ندارید، به مرحله بعدی بروید). ابزار ترسیم نقطه را دریافت کنید ( ) و در حوزه مورد علاقه خود نکته ای را بیان کنید. point واردات را نام ببرید. اکنون مجموعه l8 را فیلتر کنید تا فقط تصاویری که نقطه را قطع می کنند به دست آورید، سپس یک فیلتر دوم اضافه کنید تا مجموعه را فقط به تصاویری که در سال 2015 به دست آمده اند محدود کنید:

ویرایشگر کد (جاوا اسکریپت)

var spatialFiltered = l8.filterBounds(point);
print('spatialFiltered', spatialFiltered);

var temporalFiltered = spatialFiltered.filterDate('2015-01-01', '2015-12-31');
print('temporalFiltered', temporalFiltered);

در اینجا، filterBounds() و filterDate() متدهای میانبر برای متد کلیتر filter() در مجموعه های تصویری هستند که یک ee.Filter() را به عنوان آرگومان خود می گیرد. برای کسب اطلاعات بیشتر در مورد این روش ها، برگه Docs در ویرایشگر کد را کاوش کنید. آرگومان filterBounds() نقطه ای است که شما دیجیتالی کردید و آرگومان های filterDate() دو تاریخ هستند که به صورت رشته بیان می شوند.

توجه داشته باشید که می توانید مجموعه های فیلتر شده print() . شما نمی توانید بیش از 5000 مورد را همزمان چاپ کنید، بنابراین نمی توانید برای مثال کل مجموعه l8 را چاپ کنید. پس از اجرای متد print() می توانید مجموعه های چاپ شده را در کنسول بررسی کنید. توجه داشته باشید که وقتی ImageCollection را با استفاده از zippy ( ، سپس لیست features را گسترش دهید، لیستی از تصاویر را مشاهده خواهید کرد که هر کدام را نیز می توان گسترش داد و بازرسی کرد. این یک راه برای کشف شناسه یک تصویر فردی است. یکی دیگر از راه‌های برنامه‌ریزی‌شده برای به‌دست‌آوردن تصاویر منفرد برای تجزیه و تحلیل، مرتب‌سازی مجموعه به‌منظور دریافت جدیدترین، قدیمی‌ترین یا بهینه‌ترین تصویر نسبت به برخی ویژگی‌های ابرداده است. برای مثال، با بررسی اشیاء تصویر در مجموعه‌های تصویر چاپی، ممکن است یک ویژگی ابرداده به نام CLOUD_COVER را مشاهده کرده باشید. می توانید از آن ویژگی برای دریافت کمترین تصویر در سال 2015 در منطقه مورد علاقه خود استفاده کنید:

ویرایشگر کد (جاوا اسکریپت)

// This will sort from least to most cloudy.
var sorted = temporalFiltered.sort('CLOUD_COVER');

// Get the first (least cloudy) image.
var scene = sorted.first();

اکنون برای نمایش تصویر آماده هستید!

Digression: نمایش تصاویر RGB

وقتی یک تصویر چند باندی به نقشه اضافه می‌شود، Earth Engine سه باند اول تصویر را انتخاب می‌کند و به‌طور پیش‌فرض آن‌ها را به‌صورت قرمز، سبز و آبی نشان می‌دهد و مطابق با نوع داده، همانطور که قبلا توضیح داده شد ، آن‌ها را دراز می‌کند. معمولاً این کار انجام نمی شود. به عنوان مثال، اگر تصویر Landsat ( scene در مثال قبلی) را به نقشه اضافه کنید، نتیجه رضایت بخش نیست:

ویرایشگر کد (جاوا اسکریپت)

Map.centerObject(scene, 9);
Map.addLayer(scene, {}, 'default RGB');

توجه داشته باشید که ابتدا نقشه بر روی تصویر در مقیاس بزرگنمایی 9 متمرکز می شود. سپس تصویر با یک شی خالی ( {} ) برای پارامتر visParams نمایش داده می شود (برای جزئیات به اسناد Map.addLayer() مراجعه کنید). در نتیجه، تصویر با تجسم پیش‌فرض نمایش داده می‌شود: سه باند اول به ترتیب به R، G، B نگاشت می‌شوند و تا [0، 1] کشیده می‌شوند، زیرا باندها از نوع داده float هستند. این بدان معناست که نوار آئروسل ساحلی ('B1') به رنگ قرمز، نوار آبی ('B2') به رنگ سبز و نوار سبز ('B3') به رنگ آبی ارائه می شود. برای ارائه تصویر به صورت ترکیبی با رنگ واقعی، باید به Earth Engine بگویید که از باندهای Landsat 8 'B4'، 'B3' و 'B2' به ترتیب برای R، G و B استفاده کند. مشخص کنید از کدام باندها با ویژگی bands شی visParams استفاده کنید. در این مرجع با گروه های لندست بیشتر آشنا شوید.

شما همچنین باید مقادیر min و max مناسب را برای نمایش بازتاب از اهداف معمولی سطح زمین ارائه دهید. اگرچه لیست ها را می توان برای تعیین مقادیر مختلف برای هر باند استفاده کرد، در اینجا کافی است 0.3 را max و از مقدار پیش فرض صفر برای پارامتر min استفاده کنید. ترکیب پارامترهای تجسم در یک شی و نمایش:

ویرایشگر کد (جاوا اسکریپت)

var visParams = {bands: ['B4', 'B3', 'B2'], max: 0.3};
Map.addLayer(scene, visParams, 'true-color composite');

نتیجه باید چیزی شبیه به شکل 5 باشد. توجه داشته باشید که این کد پارامترهای شیء تجسم را به یک متغیر برای استفاده احتمالی در آینده اختصاص می دهد. همانطور که به زودی متوجه خواهید شد، آن شی در هنگام تجسم مجموعه های تصویر مفید خواهد بود!

Tutorial_api_05_true_color.png
شکل 5. تصویر بازتابی Landsat 8 TOA به عنوان یک کامپوزیت با رنگ واقعی، تا [0، 0.3] کشیده شده است.

سعی کنید با تجسم باندهای مختلف بازی کنید. یکی دیگر از ترکیب های مورد علاقه "B5"، "B4" و "B3" است که به آن ترکیب رنگ کاذب می گویند. برخی دیگر از کامپوزیت های رنگ کاذب جالب در اینجا توضیح داده شده اند.

از آنجایی که Earth Engine برای انجام تجزیه و تحلیل در مقیاس بزرگ طراحی شده است، شما محدود به کار با یک صحنه نیستید. اکنون زمان نمایش یک مجموعه کامل به عنوان یک ترکیب RGB است!

نمایش مجموعه تصاویر

افزودن مجموعه تصاویر به نقشه مشابه افزودن تصویر به نقشه است. به عنوان مثال، با استفاده از تصاویر 2016 در مجموعه l8 و شیء visParams که قبلاً تعریف شده است،

ویرایشگر کد (جاوا اسکریپت)

var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA');
var landsat2016 = l8.filterDate('2016-01-01', '2016-12-31');
Map.addLayer(landsat2016, visParams, 'l8 collection');

توجه داشته باشید که اکنون می توانید بزرگنمایی کنید و یک موزاییک پیوسته را ببینید که در آن تصاویر Landsat جمع آوری شده است (یعنی روی زمین). همچنین توجه داشته باشید که وقتی از تب Inspector استفاده می‌کنید و روی تصویر کلیک می‌کنید، لیستی از مقادیر پیکسل (یا نمودار) را در بخش پیکسل‌ها و فهرستی از اشیاء تصویر را در بخش Objects در بازرس مشاهده خواهید کرد.

اگر به اندازه کافی بزرگنمایی کرده باشید، احتمالاً متوجه ابرهایی در موزاییک شده اید. هنگامی که یک ImageCollection به نقشه اضافه می کنید، به عنوان یک ترکیب با مقدار اخیر نمایش داده می شود، به این معنی که فقط جدیدترین پیکسل ها نمایش داده می شوند (مانند فراخوانی mosaic() در مجموعه). به همین دلیل است که می توانید ناپیوستگی بین مسیرهایی را ببینید که در زمان های مختلف به دست آمده اند. همچنین به همین دلیل است که بسیاری از مناطق ممکن است ابری به نظر برسند. در صفحه بعد، یاد بگیرید که چگونه نحوه ترکیب تصاویر را تغییر دهید تا از شر آن ابرهای مزاحم خلاص شوید!