اخبار ، مقالات و تحقیقات گروهی را دنبال کنید.
تولید پروداکت های ماهواره ای چند زمانه در سنجش از دور با استفاده از سامانه گوگل ارث انجین
امروزه بخش بزرگی از داده های مورد استفاده در سنجش از دور در قالب پروداکت های آماده عرضه می شود. مهم ترین مزیت داده های آماده در مقایسه با داده های خام در این است که عموما بصورت تصحیح شده عرض می شوند و نیازی به انجام پیش پردازش های رادیومتریکی و هندسی ندارد. در گذشته بخش مهمی از پردازش رقومی تصاویر ماهواره ای صرف انجام تصحیحات و آماده سازی داده ها می شد. اما این در حالی است که امروزه به لطف پروداکت های آماده به شکل قابل توجهی حجم تصحیحات کاسته شده است. در آینده نه چندان دور عملا بخش پیش پردازش تصاویر ماهواره ای حذف می شوند و تمامی داده ها بصورت اصلاح شده در اختیار کاربران قرار داده می شود. حذف تدریجی بخش پیش پردازش تصاویر ماهواره ای فرصتی است که تمرکز کاربران بیشتر بر روی تکنیک های پردازشی به منظور استخراج اطلاعات با ارزش باشد.
داده های بسیاری از ماهواره های رایگان و پولی در حال حاضر بصورت تصحیح شده عرضه می شود. بر همین اساس در این برهه زمانی آن دسته از کاربرانی موفق تر خواهند بود که با روش های سطح بالاتری از استخراج اطلاعات آشنایی دارند. امروزه در سامانه ارث انجین با طیف وسیعی از پروداکت های آماده سر و کار دارید و کسانی می توانند در کار با این سامانه موفق شوند که با تکنیک های استخراج اطلاعات آشنایی داشته باشند. عملا مبحث پیش پردازش تصاویر ماهواره ای در ارث انجین جایگاه مهمی ندارد چرا که همه داده ها و پروداکت ها بصورت تصحیح شده عرضه می شوند. این روند در آینده نیز قطعا تقویت خواهد شد پس برای آنکه از بازار علمی و تجاری سنجش از دور عقب نمانید باید تمرکز خود را بیشتر بر روی روش های استخراج اطلاعات قرار دهید.
پروداکت های آماده در سنجش از دور حاوی اطلاعات موضوعی هستند که در زمینه های مختلف زیست محیطی قابل استفاده است. این پروداکت ها کاملا تصحیح شده و با استفاده از الگوریتم های معتبر قبلا یک یا چند پارامتر بیوفیزیکی یا بیوشیمیایی در آن محاسبه شده و بصورت آماده در اختیار کاربران سنجش از دور قرار گرفته است. این پروداکت ها از لحاظ زمانی متفاوت هست: به عنوان مثال برخی بصورت روزانه و برخی بصورت ۸ روزه و ۱۶ روزه و یا حتی ماهیانه عرضه می شوند. آیا می دانید دلیل تولید پروداکت های چند زمانه در سنجش از دور چیست؟ مثلا مزیت داده های ۸ روزه نسبت به داده های روزانه چیست؟
داده هایی که بصورت پروداکت های چند زمانه عرضه می شوند عموما از دقت بالاتری نسبت به داده های روزانه برخوردارند. در پروداکت های چند زمانه آثار نویز سنجنده های ماهواره ای، بد پیکسل ها و ابر و سایه های ناشی از آن بسیار کم است و در نتیجه تصاویر از دقت رادیومتریکی بالاتر برخوردار بوده و میزان از دست رفت اطلاعات آن ها بسیار اندک است.
علی رقم ارزش بالای پروداکت های چند زمانه، بسیاری از پروداکت های آماده در سنجش از دور بصورت روزانه عرضه می شوند. در صورتی که شما با تکنیک های برنامه نویسی در سامانه گوگل ارث انجین آشنایی داشته باشید براحتی می توانید نسبت به تبدیل داده های روزانه به چند زمانه اقدام کنید. به عنوان مثال پروداکت دمای سطح زمین سنجنده مادیس در سامانه ارث انجین بصورت روزانه عرضه می شود. شما می توانید با استفاده از تکنیک های برنامه نویسی چندزمانه نسبت به تولید داده های دمای سطح زمین ۸، ۱۶ و یا حتی ۳۰ روزه اقدام کنید.
در کد زیر ابتدا تصاویر دمای سطح زمین مادیس (برای بازه ۱۰ ساله) در سامانه گوگل ارث انجین فراخوانی شده است.
سپس با استفاده از تابع LST، باند مورد نظر انتخاب شده و سپس بر اساس مرز منطقه مورد مطالعه برش خورده است.
به منظور تبدیل داده های روزانه به چند زمانه (مثلا ۱۶ روزه) ابتدا باید تابع تبدیل زمانی آن را بنویسید که نمونه آن در عکس زیر نمایش داده شده است.
بعد از ایجاد تابع temporalCollection می توانید از آن برای تولید پروداکت دمای سطح زمین ۱۶ روزه استفاده کنید.
در تابع بالا، تصاویر دمای سطح زمین مادیس فراخوانی شده و برای بازه ۱۰ ساله تصاویر میانگین دمایی با فواصل زمانی ۱۶ روزه استخراج شده است. تابع temporalCollection جزو پر کاربردترین توابع چندزمانه سنجش از دور در سامانه گوگل ارث انجین است که توسط توسعه دهندگان این سامانه طراحی و در سال ۲۰۲۰ عرضه شده است.
این متن آموزشی برگرفته از اولین کتاب آموزش گوگل ارث انجین در ایران است. اگر علاقه مند به تهیه این کتاب هستید به لینک زیر مراجعه کنید:
48 دیدگاه. ارسال دیدگاه جدید
سلام آقای احراری خسته نباشید،
من برای کارم از پروداکت های ۱۶ روزه مادیس برای کارم استفاده می کنم. میخواهم تصاویر میانگین ماهانه تولید کنم. اما مشکلی که هست اینه که تصاویر اول هر ماه مقداری از ماه قبل و تاثیر می پذیرند. برای مثال تصاویر NDVI برای ماه جولای، یک تصویر در روز ۴م و تصویر بعد در روز ۲۰ می افتد. که در حالت عادی با میانگین گیری، خطای بسیار زیادی ایجاد می شود. این قضیه برای تمام پروداکت ها، ۱۶ و ۸ روزه وجود دارد وقتی بخواهیم از آنها میانگین مااهانه بگیریم. آیا کد یا روشی هست که بتوان میانگین وزنی گرفت؟ و روی image collection اعمال کرد؟
با سلام و احترام
در تابع مورد نظرتون به جای واحد days از month استفاده کنید. به جای عدد ۳۰ روز از ۱ ماه استفاده کنید. با این روش داده های ماهیانه از ماه قبل تاثیری نمی پذیرند.
موفق باشید
سلام جناب احراری
سایت Planet داده های ارزشمندی داره و متاسفانه به خاطر تحریم های آمریکا به ما اجازه دسترسی نمیده ولی داده هاش رو میشه تو سامانه GEE هم اورد(نه فقط تا ۲۰۱۶) . شما تجربه ای در این مورد ندارین؟
با سلام و احترام
أدرس دقیق سایت رو بزارید تا بررسی کنم. درارتباط با سایتی که فرمودید آشنایی ندارم.
موفق باشید
https://planet.com/
فیلتر هست البته
سلام و وقت بخیر
جناب احراری بنده در زمینه گپ فیلینگ دارم کار میکنم و حالا کدهای متلب از من تصاویر باینری میخواد((raw)ENVI binary images) امکانش هست راهنمایی کنین؟
از دستورات فراخوانی دیگه هم استفاده کردم ولی خب درنهایت با همون پیام که تصاویر با فرمت rawمیخواد دریاافت میکنم.
ممنونم از شما بابت وقتی که میگذارین.
با سلام و احترام
متاسفانه بنده این فرایند رو در فاز کدنویسی متلب تا حالا انجام ندادم.
موفق باشید
سللام گوگل ارث انجین یکبار برای من باز شد اونم شیش ماه پیش. دیگه هر کار میکنم ارور 403 میده. با انواع فیلتر شکن هم امتحان کردم نشد که نشد. واقعا سامانه مسخره ای هست .
با سلام و احترام
سامانه مشکلی نداره. متاسفانه ما از طرف گوگل تجریم هستیم. جدیدا گوگل فیلتر شکن ها رو شناسایی میکنه و مانع از اتصال میشه.
خیلی از کاربران جدیدا با مشکل شما مواجه شدند. از فیلتر شکن لنترن استفاده کنید مشکلی ندارد.
موفق باشید
با سلام و خسته نباشید.
ممنون میشم بفرمایید عدد 229 چطور محاسبه شده است؟
همچنین لطفا بفرمایید:
اگر بخواهیم از داده های 3 روزه یک پروداکت طی سالهای 2010 تا 2020 داده های ماهانه ی آن پروداکت را برای این دوره زمانی بدست آوریم علاوه بر تغییر day به month و عدد 16به 1 چه تغییرات دیگری لازم است در کد جنابعالی ایجاد شود؟
و نیز اگر پروداکت منظوره بدون scale باشد می توان به جای مقدار 0.02 در کد شما از مقدار 1 استفاده کرد؟
با سلام و احترام
ببخشید تعداد آموزش ها زیاد هست حضور ذهن ندارم. ممنون میشم لینک کد آموزش رو در اینجا بزارید تا بتونم دلیل عدد 229 رو عرض کنم. البته قطعا در فیلم آموزشی توضیح داده شده است.
داده های ماهیانه را نمیتوانید به 3 یا یک روز تبدیل کنید. حداقل این روشی که بنده توضیح دادم برای تبدیل مقیاس زمانی از پایین به بالا کاربرد دارد. مثلا روزانه به هفتگی و …
در صورتی که پروداکت مورد استفاده scale نداشته باشد هیچ عددی نباید وارد کنید و هیچ ضربی انجام نمی شود.
موفق باشید
سپاس از پاسخ جنابعالی
عنوان آموزش تولید “پروداکت های ماهواره ای چند زمانه در سنجش از دور با استفاده از سامانه گوگل ارث انجین” است که به صورت فیلم نمی باشد و لینک آن https://girs.ir/gee-multi-temporal-function/ است.
فرمایش شما متین است و منظور بنده هم تبدیل از پایین به بالا است یعنی تبدیل داده های 3 روزه به داده های ماهانه.
پروداکت مورد نظر بدون scale است بنابراین حذف عبارت multiply(0.02) از قسمت var bands=img.select(‘LST_DAY_1km’).multiply(0.02).clip(table): 0 مشکلی در کدهای بعدی ایجاد نمی نماید؟
سپاسگزار خواهم بود در صورت وجود فیلم آموزش که به این مبحث نیز پرداخته است لینک آن را ارسال بفرمایید.
از بذل توجه شما سپاسگزارم
با سلام و احترام
ببخشید که دیر پاسخ دادم. متاسفانه مشغله های کاری بنده بسیار زیاد هست و کمی تاخیر در پاسخ گویی ایجاد کرده.
مشکلی ایجاد نمی کند. اول داده خود را اصلاح کنید و سپس داده اصلاح شده را وارد تابع temporal collection نمایید.
موفق باشید
سپاس
عدد 229 رو نفرمودید در آموزش پروداکت های ماهواره ای چند زمانه در سنجش از دور با استفاده از سامانه گوگل ارث انجین” است که به صورت فیلم نمی باشد و لینک آن https://girs.ir/gee-multi-temporal-function/ است از کجا آمده و چطور محاسبه شده است؟
با سلام و احترام
عدد 229 جای count بر اساس تعداد تصاویر مورد نیاز با فواصل مورد نظر ما تعیین شده. اگر لینک کد رو با استفاده از گزینه getlink د رارث انجین کپی کرده و در اینجا برای من بفرستید میتونم بهتر راهنمایی تون کنم. چون باید کد رو ببینم که در چه بازه زمانی چه تعداد تصاویر را میخواستم خروجی بگیرم. البته در فیلم محصول قطعا اشاره کردم. اما اگر لینک کد رو بفرستید بهتر میتونم راهنمایی تون کنم.
موفق باشید
با سلام و خداقوت مجدد و سپاس از توجه جنابعالی
آموزش شما برای تولید پروداکت چند زمانه در قالب عکس است نه فیلم به همین دلیل براساس آن کدها رو خود نوشتم که لینک آن تقدیم می شود تا راهنمایی فرمایید عدد 229 از کجا آمده است.
و اگر بخواهیم برای یک دوره ی 10 ساله پروداکت را از 3 روزه به ماهانه تبدیل کنیم به جای عدد 229 از چه عددی باید استفاده کنیم و چطور محاسبه می شود؟
https://code.earthengine.google.com/3b3a3ff25159393b1d3ce330d649642b
یک بازه زمانی 10 ساله شامل 3650 تصویر است. اگر بخواهیم برای همین بازه زمانی تصاویر را با فواصل میانگین 16 روزه دانلود کنیم شامل 229 تصویر می شود که حاصل تقسیم تعداد روزهای 10 سال (3650) به عدد 16 هست.
موفق باشید
بسیار سپاسگزارم
موید باشید
با سلام و وقت بخیر.
تصویری که در نهایت ایجاد میشه برای یک دوره زمانی چندساله، به صورت شماره باند ذخیره میشه! میشه بفرمایید چطور بفهمیم هر شماره باند مال چه تاریخی هست؟
با سلام و احترام
برای اکثر داده ها زمانی که بصورت یک مجموعه داده ذخیره سازی میشه تاریخ رو حفظ میکنه. اگر اینطور نشده باید کدی بنویسید که تاریخ ها را از هر تصویر گرفته و به عنوان نام لایه رستری سیو کنه. در نمونه کد زیر بنده قبلا چنین کاری رو انجام دادم.
https://code.earthengine.google.com/6739e011ab4c30c7dbc87575b4e89498
موفق باشید
سلام برای تبدیل دادهای ماهانه trmm
برای اینکه میانگین سالانه بارش یک بازه مثلا پنج ساله بدست بیاریم کد چگونه میشه.؟این قسمت کد را میشه بنویسید
با سلام و احترام
تابع همان است فقط باید واحد رو به year تغییر بدید. تعداد تصاویر هم بر اساس تعداد سال های مورد نظرتون تعیین میشه.
موفق باشید
سلام و درود
در خصوص تبدیل داده 8روز مادیس به یکماه از کد زیر استفاده می کنم ولی مراحل پایانی جهت خروجی یا نمایش دچار خطا می شود؟
آیا روش تبدیل من درست هست ممنونم از وقتی که میزارید؟ و مشکل از کجاست؟
https://code.earthengine.google.com/?scriptPath=users%2Ftahanim61%2Fproj%3Amaghaleh_modis_lst%20(copy)
با سلام و احترام
لینک کد را اشتباه ارسال کردید. لطفا بر روی گزینه getlink کلیک کرده و لینک نمایش داده شده در کادر را در اینجا برای من بزارید تا بتونم بررسی کنم. این لینک اشتباه هست.
موفق باشید
سلام و درود
در خصوص تبدیل داده #8روز مادیس به #یکماه از کد زیر استفاده می کنم ولی مراحل پایانی جهت خروجی یا نمایش دچار خطا می شود؟
آیا روش تبدیل من درست هست ممنونم از وقتی که میزارید؟ و مشکل از کجاست؟
https://code.earthengine.google.com/ca5d453c4ce13b73d8c789be5ec4467e
https://code.earthengine.google.com/ca5d453c4ce13b73d8c789be5ec4467e
با سلام و احترام
داده های مادیس از سال ۲۰۰۱ در دسترس است من فقط تاریخ آغاز رو برای داده های ماهیانه روی سال ۲۰۰۱ قرار دادم خطا برطرف شد.
https://code.earthengine.google.com/2639cda2d0c3fb2ef812ca155a774012
سلام استاد
اگر بخواهیم دقیقا ماه فرودین انتخاب کنیم چیکار باید کرد واسه یک دوره مثلا ده ساله
از کلندر رنج که استفاده میکنیم وماه تعریف میکنیم چون ماههای میلادی یک تفاوت ده روزه داره درست نمیشه انحام داد در تحقیقات. مثلا ماه فرودین ما از ۲۱مارس تا ۲۰آوریل است.
راهی وجود دارد؟
سوال دوم آیا دادهای روزانه میشه تبدیل به ماهانه کرد بعد در کلندر رنج از داده ماهانه که ایجاد کردیم ماههای منتخب بزاریم ؟
با سلام و احترام
متاسفانه نمیدانم چون من برای همه کارها از تقویم میلادی استفاده میکنم. فکر نمیکنم تابع آماده ای برای این کار باشه. پایتون کتاب خانه های خیلی قوی دارد میشه داده های روزانه رو بصورت اکسل دانلود کنید و داخل پایتون آن را تست کنید.
موفق باشید
سلام اگر بخاهیم فصل بهار، تابستان، پایبز و زمستان واسه یک منطقه ایران حساب کنیم باید چیکار کنیم معدل چه ماههایی؟واینکه تفاوت زمان شروع و اتمام فصول در بین ماه میلادی و شمسی آیا در تحلیلها مشکل وایراد نیست؟
پروژه هایی که کار کردم مبتنی بر سری زمانی شمسی تا حالا نبوده به همین دلیل این موضوع را بررسی نکردم.
در حال حاضر در پروژه ها بیشتر ما از سال هیدرولوژیکی و ماه های آن استفاده میکنیم.
موفق باشید
سلام وقت بخیر…یه سوال داشتم راجب سنجنده مادیس و پروداکت روزانه گردوغبار…من یه منطقه مطالعاتی دارم ک محدوده خیلی بزرگی هستش…من داده هارو بصورت روزانه میگیرم. وقتی خروجی میخام بگیرم تعداد عکسایی ک روزانه بهم داده بصورت میانگین خروجی میگیرم که یک عکس واحد بهم بده…ب دلیل اینکه منطقه من خیلی وسعت داره و این محدوده توی یک سین عکسی قرار ندارن. وقتی که میانگین یک عکس خروجی بهم میده باعث شده از محدوده منطقه من بصورت گپ ظاهر بشن…علتش بررسی کردم در لحظه ای ک دیسندینگ ماهواره قرار داره و لحظه ای اسندینگ ماهواره هس میتونه علت این باشه چون دقیقا حالت مورب عکسام نمایش میده ک در یک محل تلاقی دارن..راه حلی هس که من فقط یا اسندینگ دانلود کنم یا دیسندیگ؟اخه طبق بررسی ک کردم ماهواره ترا از شمال به جنوب حرکتش و اکوا از جنوب به شمال..توی گوگل ارث انجین همون پروداکت روزانه میزنم واسه منطقه همچین حالتی میشه…میشه کاری کرد ک فقط اکوا یا ترا گرفته بشه ازگوگل ارث انجین
داخل پروپرتی داده رو چک کنید اگر گزینه ای برای ascending و descending داشته باشد می توانید داده ها رو بر این اساس فیلتر کنید.
موفق باشید
سلام وقت بخیر..یک سوال داشتم اینکه وقتی از پروداکت روزانه aod استفاده میکنیم…برای هر روز حداقل چهارتا تصویر داریم دوتا ماهواره ترا و دوتاهم اکوا..چون هم بصورت روزانه هم شبانه تصویربرداری میکنن…آیا زمانی که ما میانگین میگیریم از این تصاویر بصورت روزانه که یک تصویر واحد بهمون بده…تغییرات شب و روزباعث نمیشه اون مقدار aod کمتر بشه؟دومین موضوع نحوه محاسبه پروداکت روزانه aod چطور محاسبه میشه؟
با سلام و احترام
می توانید با استفاده از فیلترها داده های یک ماهواره و یک زمان خاص رو انتخاب کنید. اینکه میانگین گیری باعث کاهش مقادیر می شود درست است.
موفق باشید
سلام وقت بخیر..یک سوال داشتم اینکه وقتی از پروداکت روزانه aod استفاده میکنیم…برای هر روز حداقل چهارتا تصویر داریم دوتا ماهواره ترا و دوتاهم اکوا..چون هم بصورت روزانه هم شبانه تصویربرداری میکنن…آیا زمانی که ما میانگین میگیریم از این تصاویر بصورت روزانه که یک تصویر واحد بهمون بده…تغییرات شب و روزباعث نمیشه اون مقدار aod کمتر بشه؟دومین موضوع نحوه محاسبه پروداکت روزانه aod چطور محاسبه میشه؟
با سلام و احترام
می توانید با استفاده از فیلترها داده های یک ماهواره و یک زمان خاص رو انتخاب کنید. اینکه میانگین گیری باعث کاهش مقادیر می شود درست است.
موفق باشید
سلام وقت بخیر، یک سوال داشتم…در سامانه گوگل ارث انجین فیلتر ساعتی وجود داره…میخام دیتا فقط واسه ساعت خاصی توی روز خروجی بگیرم…از سنجنده مادیس و پروداکت روزانه aod که استفاده میکنم میخام فقط واسه ساعت خاصی خروجی بهم بده
با سلام و احترام
بله با استفاده از فیلتر calendar range می توانید یک ساعت خاص را فیلتر کنید.
موفق باشید
سلام مهندس…چجوری میشه فیلتر کردن دیتا یک ماهواره و یک زمان خاص رو…نحوه کد نویسی رو میشه بگید
ممنون میشم…چون خروجی عکسام فقط میخام ماهواره ترا بگیرم اینکه چجوری میشه نمیدونم چکار کنم
اول باید به property های داده مورد استفاده در ارث انجین مراجعه کنید. مثلا AOD یک property به نام satellite دارد که بر اساس آن میشه داده ها را فیلتر کرد. در لینک زیر نمونه کد رو مشاهده کنید.
https://code.earthengine.google.com/7edb1254e2c8278b92102843f96a5208
موفق باشید
یک سوال دیگه …وقتی فیلتر کنم یک ماهواره خاص رو در یک زمان خاص
اون aod 055 فرقی نمیکنه همون خروجی بهم میده یعنی؟
ساعت برداشت داده های دو ماهواره متفاوت هست. به همین دلیل طبیعتا AOD آن ها باید متفاوت باشه.
موفق باشید
سلام استاد من میخواهم دادهای روزانه lst تبدیل به ماهانه کنم.بعد چارت max,minانتخاب کنم….ترسیم.الان در فرمول تبدیل روزانه به ماهانه در فرمول یکجا،mean.clip(),داره این واسه همه جا ثابته و mean,…در فرمول تکرار میشه در هر صورت و اگه max,min….بخواهم بگیرم در چارت .اون قسمت mean در هر صورت تغییر نمیکنه؟
با سلام و احترام
داده های ماهیانه تجمیع زمانی رو بصورت میانگین انجام میده. اما در reducer نمودار شما تعیین میکنید که برای منطقه مورد مطالعه چه پارامتر آماری (میانگین، ماکسیموم یا مینیموم) در نظر گرفته بشه.
موفق باشید
سلام یعنی در هر صورت برای یافتن بیشنه و مینمم دما ماهانه به روی دیتا روزانه ، meanباید در هر صورت در این فرمول روزانه به ماهانه ثابت باشه و برای ماکس دما و مینیم از تابع ماکس و مینم در چارت تنها استفاده کنیم؟
اگر هدف این هست که برای هر ماه در هر پیکسل ماکسیموم رو داشته باشید در تابع temporal collection باید از max استفاده کنید و برعکس.
اگر هدف میانگین ماهیانه هست از mean استفاده کنید.
فرض کنید شما کالکشن تصاویر میانگین ماهیانه رو برای یک استان در هر پیکسل با استفاده از temporal collection محاسبه کردید. حال با استفاده از تابع reducer در چارت میتوانید برای کل استان میانگین، ماکسیموم و یا میتیموم رو بدست آورید.
موفق باشید
سلام دکتر جان برای محاسبه میانگین دما حداقل ماهانه در کد کتبدیل روزانه به ماهانه بجای mean بایدmin گذاشت؟این قسمت که***گذاشتم منظورمه.
var temporalCollection = function(collection, start, count, interval, units){
var sequence = ee.List.sequence(0, ee.Number(count).subtract(1.0));
var originDate = ee.Date(start);
return ee.ImageCollection(sequence.map(function(i){
var startDate = originDate.advance(ee.Number(interval).multiply(i), units);
var endDate = originDate.advance(ee.Number(interval).multiply(ee.Number(i).add(1)), units);
return collection
.filterDate(startDate, endDate)****.mean().clip(table)
.set(‘system:time_start’, startDate.millis())
.set(‘system:time_end’, endDate.millis());
}));
};
ببخشید لینک
https://code.earthengine.google.com/25cf0850aa39a428775845b91860aa02