تجسم تصاویر و باندهای تصویر

اکنون که آماده شروع نوشتن جاوا اسکریپت Earth Engine هستید، کد زیر را در ویرایشگر کد کپی کنید:

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

// Instantiate an image with the Image constructor.
var image = ee.Image('CGIAR/SRTM90_V4');

// Zoom to a location.
Map.setCenter(-112.8598, 36.2841, 9); // Center on the Grand Canyon.

// Display the image on the map.
Map.addLayer(image);

روی دکمه Run در بالای ویرایشگر کد کلیک کنید و مشاهده کنید که یک تصویر بسیار خاکستری روی نقشه ظاهر می شود. نگران نباش، به زودی حالت را بهتر می کنی. اگر نحو هر قسمت از این مثال نا آشنا است، حتماً آموزش JavaScript for Earth Engine را مرور کنید.

سازنده تصویر

اولین مورد جدید در این مثال سازنده تصویر ee.Image() است. آرگومان ارائه شده به سازنده، شناسه رشته یک تصویر در کاتالوگ داده موتور زمین است. (به برگه Docs در سمت چپ ویرایشگر کد مراجعه کنید تا لیست کاملی از آرگومان‌های ممکن برای سازنده تصویر را ببینید. برگه Docs به‌روزترین اطلاعات را در مورد کارهایی که Earth Engine می‌تواند انجام دهد را نشان می‌دهد.)

برای کشف شناسه تصویر، با استفاده از ابزار جستجو در بالای ویرایشگر کد، در کاتالوگ داده های Earth Engine جستجو کنید. به عنوان مثال، "elevation" را در قسمت جستجو تایپ کنید و توجه داشته باشید که لیستی از رسترها برگردانده شده است. برای مشاهده اطلاعات بیشتر در مورد آن مجموعه داده، ورودی 'SRTM Digital Elevation Data Version 4' را کلیک کنید. در سمت راست توضیحات مجموعه داده یک فیلد Image ID وجود دارد. توجه داشته باشید که شناسه تصویر در مثال از شناسه تصویر نشان داده شده در توضیحات مجموعه داده کپی شده است.

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

پیکربندی نقشه

دومین بخش جدید این مثال فراخوانی Map.setCenter() است. این روش در شی Map ، که نمایانگر نمایش نقشه در ویرایشگر کد است، نقشه را در طول جغرافیایی داده شده، عرض جغرافیایی (در درجه اعشار) و سطح بزرگنمایی که 1 کوچک‌نمایی می‌شود به‌طوری که نقشه کل سطح زمین را نشان می‌دهد، مرکز می‌کند. اعداد بزرگتر از آنجا بزرگ می شوند. با بررسی بخش Map در برگه Docs در سمت چپ ویرایشگر کد، تمام روش‌ها را در شی Map کشف کنید.

اضافه کردن یک لایه به نقشه

خط آخر در مثال می گوید: از متد addLayer() شی Map برای اضافه کردن یک تصویر به نمایش نقشه در ویرایشگر کد استفاده کنید.

تبریک می گویم! شما اولین اسکریپت Earth Engine خود را ایجاد کرده اید. در بخش بعدی، یاد خواهید گرفت که چگونه آن تصویر را کمی بهتر کنید.

انحراف: تصاویر در موتور زمین

تصاویر در Earth Engine (برای جزئیات بیشتر به این صفحه مراجعه کنید) از یک یا چند باند تشکیل شده اند. هر باند در یک تصویر نام، مقادیر پیکسل، وضوح پیکسل و طرح ریزی خاص خود را دارد. همانطور که به زودی متوجه خواهید شد، تصویر SRTM دارای یک باند است: "ارتفاع".

وقتی با استفاده از Map.addLayer() تصویری را به نقشه اضافه می‌کنید، Earth Engine باید تعیین کند که چگونه مقادیر موجود در باند(های) تصویر را به رنگ‌های روی نمایشگر نگاشت کند. اگر یک تصویر تک باندی به نقشه اضافه شود، به طور پیش‌فرض Earth Engine نوار را در مقیاس خاکستری نشان می‌دهد، جایی که حداقل مقدار به سیاه و حداکثر مقدار به سفید اختصاص داده می‌شود. اگر حداقل و حداکثر را مشخص نکنید، Earth Engine از مقادیر پیش‌فرض استفاده می‌کند. برای مثال، تصویری که به‌تازگی به نقشه اضافه کرده‌اید، به‌عنوان تصویری در مقیاس خاکستری که تا محدوده کامل داده‌ها کشیده شده است، یا عدد صحیح ۱۶ بیتی امضا شده [-32768، 32767] نمایش داده می‌شود. (باندهای float تا [0، 1] و باندهای byte به طور پیش فرض تا [0، 255] کشیده می شوند).

می توانید نوع داده تصویر را با چاپ آن و بررسی شی تصویر در تب Console کشف کنید. به عنوان مثال، پس از کد قبلی، عبارت زیر را قرار دهید:

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

print('SRTM image', image);

وقتی روی run کلیک می کنید، توجه داشته باشید که یک شی در کنسول ظاهر می شود. برای بررسی ویژگی های شی، آن را با کلیک روی zippy ( ) سمت چپ شی یا مال. شی تصویر، ویژگی "bands"، باند "elevation" در شاخص "0" و ویژگی "data_type" از باند "elevation" را گسترش دهید تا متوجه شوید که یک نوع داده signed int16 است.

سفارشی سازی تجسم لایه

برای تغییر روش کشیده شدن داده ها، می توانید پارامتر دیگری را برای فراخوانی Map.addLayer() ارائه دهید. به طور خاص، پارامتر دوم، visParams ، به شما امکان می دهد حداقل و حداکثر مقادیر را برای نمایش مشخص کنید. برای کشف مقادیر مورد استفاده، تب Inspector را فعال کنید و روی نقشه کلیک کنید تا ایده ای از محدوده مقادیر پیکسل بدست آورید. روش دیگر، از مدیر لایه برای کشش تعاملی داده ها استفاده کنید، سپس حداقل و حداکثر مربوط به صدک ها یا کشش های انحراف استاندارد را مشاهده کنید. فرض کنید که از طریق چنین آزمایشی، تعیین می کنید که داده ها باید تا [0، 3000] کشیده شوند. برای نمایش تصویر با استفاده از این محدوده از:

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

Map.addLayer(image, {min: 0, max: 3000}, 'custom visualization');

توجه داشته باشید که پارامتر visParams یک شی است که خصوصیات آن min و max مشخص می کند. (در مورد اشیاء جاوا اسکریپت از آموزش جاوا اسکریپت یا این مرجع خارجی بیشتر بیاموزید). توجه داشته باشید که پارامتر سوم برای Map.addLayer() نام لایه ای است که در Layer manager نمایش داده می شود. نتیجه باید چیزی شبیه به شکل 1 باشد. ماوس را روی کادر لایه ها در سمت راست قرار دهید تا اثر تغییر نام آن لایه را ببینید.

Tutorial_api_01_elevation.png
شکل 1. تصویر ارتفاع به صورت خاکستری، تا [0، 3000] کشیده شده است.

برای نمایش یک باند با استفاده از یک پالت رنگ، یک ویژگی palette را به شی visParams اضافه کنید:

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

Map.addLayer(image, {min: 0, max: 3000, palette: ['blue', 'green', 'red']},
    'custom palette');

نتیجه باید چیزی شبیه به شکل 2 باشد.

Tutorial_api_02_palette.png
شکل 2. تصویر ارتفاع به عنوان یک سطح شیبدار رنگی از آبی به قرمز، تا [0، 3000] کشیده شده است.

انحراف: پالت ها

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

رنگ ها با استفاده از طرح ارزش رنگ استاندارد وب CSS تعریف می شوند (برای اطلاعات بیشتر به این مرجع خارجی مراجعه کنید). رنگ ها را می توان با نام یا به صورت رشته های هگزادسیمال مشخص کرد که ترکیب رنگ های قرمز، سبز و آبی را نشان می دهد. کمترین مقدار در هر یک از سه موقعیت 00 است (نماینده عدد اعشاری 0)، در حالی که بالاترین مقدار FF (نماینده عدد اعشاری 255) است. رشته «000000» رنگ سیاه، «FFFFFF» سفید، «FF0000» قرمز، «00FF00» سبز و «0000FF» آبی است. برای جزئیات بیشتر به بخش پالت های رنگ مراجعه کنید. کشش های دیگر با استفاده از Styled Layer Descriptors، همانطور که در این بخش توضیح داده شده است، امکان پذیر است.

در ادامه این آموزش، نحوه نمایش تصاویر چند باندی را خواهید آموخت. اما ابتدا از صفحه بعدی دیدن کنید تا با انجام محاسبات با تصاویر آشنا شوید.