اخبار ، مقالات و تحقیقات گروهی را دنبال کنید.
نحوه نوشتن توابع و شاخص های پیچیده ریاضی در گوگل ارث انجین
با توجه به نوع آنالیز تصاویر سنجش از دور، از توابع ریاضی متفاوتی استفاده می شود. ممکن است بخواهید یک شاخص جدید تعریف کنید یا از شاخص های معروف NDVI، NDWI و … استفاده کنید. ممکن است بخواهید از یک باند تصویر مقادیری را کم کنید یا به آن اضافه کنید و آن را در مقداری ضرب کنید. در این…
با توجه به نوع آنالیز تصاویر سنجش از دور، از توابع ریاضی متفاوتی استفاده می شود.
ممکن است بخواهید یک شاخص جدید تعریف کنید یا از شاخص های معروف NDVI، NDWI و … استفاده کنید. ممکن است بخواهید از یک باند تصویر مقادیری را کم کنید یا به آن اضافه کنید و آن را در مقداری ضرب کنید. در این صورت نیاز دارید تا نحوه تعریف روابط ریاضی را بر روی تصویر یاد بگیرید.اگر شاخص پیچیده باشد، نوشتن آن به صورت عادی دشوار شود، و احتمال افزایش خطا را افزایش دهد، راه حل دیگری وجود دارد. در این آموزش علاوه بر آموزش نوشتن توابع ساده، نحوه نوشت توابع پیشرفته به نحوی که مشابه فرمول های کتاب باشد، آموزش داده می شود.
در ادامه به سراغ اعمال توابع به تمام تصاویر موجود در مجموعه تصاویر (imageCollection) می رویم.
خوشبختانه نیاز به نوشتن حلقه های زمان بر وجود ندارد و با تعریف تابع به صورت مشخص می توانید تابع را به تمامی تصاویر اعمال کنید و خروجی را در یک مجموعه تصاویر داشته باشد. مجموعه تصاویر جدید آماده است تا توابع بعدی را به آن ها اعمال کنید.
در نهایت نگاهی ویژه به تابع تفاضل نرمال شده می اندازیم که مشابه نکات تستی کنکور! است و بدون درگیر شدن در نوشتن تابع، نتیجه را فراهم می کند.
اگر شاخص پیچیده باشد، نوشتن آن به صورت عادی دشوار شود، و احتمال افزایش خطا را افزایش دهد، راه حل دیگری وجود دارد. در این آموزش علاوه بر آموزش نوشتن توابع ساده، نحوه نوشتن توابع پیشرفته به نحوی که مشابه فرمول های کتاب باشد، آموزش داده می شود.
این آموزش به چه مواردی می پردازد؟
تعریف روابط ریاضی و شاخص و نحوه اعمال به تمامی تصاویر collectionنحوه تعریف شاخص های های مختلف از قبیل vegetation و water
تعریف تابع
اعمال تابع به تمام تصاویر موجود در Imagecollection
عدم نیاز به حلقه در اعمال یک تابع به یک مجموعه تصاویر
محاسبه ماکزیمم، مینیمم، میانه و میانگین سبزینگی در داده های سری زمانی
نحوه نوشتن شاخص های پیچیده ریاضی
استفاده از تابع تفاضل نرمال شده برای سادگی محاسبات
ویدئوی معرفی:
مدرس دوره کیست؟
محمد کاکوئی
- دانشجوی دکترای الکترونیک سیستم دیجیتال
- برنامه نویس متلب، C، GPU ، اندروید و سخت افزار
- تخصص در پردازش تصویر، بینایی ماشین و شناسایی آماری الگو
- متخصص پردازش تصاویر سنجش از دور در محیط Google Earth Engine
مشخصات آموزش کار با گوگل ارث انجین
مدرس: محمد کاکوئی
فرمت: ویدئوی MP4
حجم: ۱۵۶ مگابایت
مدت: ۳۸ دقیقه
محصول دانلودی
تهیه آموزش:
برای خرید، بر روی دکمه زیر کلیک کنید.
لینک های کاربردی:
استفاده از مجموعه داده های ماهواره ای مختلف در گوگل ارث انجین – رایگان
کاربردهای گوگل ارث انجین در سنجش از دور
نوشته های مرتبط :
آموزش جامع نرم افزار R در علوم مکانی
2,346 بازدید
آموزش CAD-Earth (تبادل بین گوگل ارث و اتوکد)
7,425 بازدید
آموزش های رایگان پیشنهادی :
آموزش ژئورفرنس كردن نقشه اتوکد در gis
1,501 بازدید
وبینار فرمول یادگیری سنجش از دور
403 بازدید
آموزش ابزارهای مهم Editor در GIS به صورت کاربردی
1,516 بازدید
34 دیدگاه. ارسال دیدگاه جدید
سلام
سوالی داشتم از خدمتتون
من یکسری شاخص شوری(فرمول ها جذر و توان دارند) را میخواستم روی ماهواره لندست۸ توی گوگل ارث انجین اجرا کنم به نظرتون این محصول میتونه به من کمک کنه تا بتونم فرمول ها رو در گوگل ارث انجین بنویسم.
خیلی ممنونم
سلام
در این اموزش نحوه نوشتن توابع پیچیده به صورت expression توضیح داده می شود. به به کارگیری این تکنیک می توان پیچیده ترین روابط و فرمول ها را هم اعمال کرد.
موفق باشید
سلام وققتتون بخیر
واقعا عذر میخوام من مجدد مزاحمتون شدم.
من محصول رو خریداری کردم اما فرمول که من میخواستم توی گوگل ارث انجین وارد کنم توان و جذر داشت و خیلی ارور گرفتم . میخواستم اززتون خواهش کنم اگر براتون مقدور هست این کد رو یه نگاهی بندازید البته ارور نداد و تصویرو تونستم دانلود کنم اما این تصویرگوگل ارث انجین با تصویری که من توی نرم افزار انجام میدم خیلی متفاوت هست.
https://code.earthengine.google.com/2905bc8256a2c25f351641fb51efc620
سلام
اولا برای اینکه من بتونم کد رو اجرا کنم Table را share کنید.
دوما به نظرم رابطه شما اشتباه است. شاید باید سه مولفه با هم جمع شوند. این که سه مولفه به توان برسند و در هم ضرب شوند و زیر رادیکال بروند، مشابه ضرب سه مولفه است، یعنی:
SI = b3*b4*b5
برای ایندکس یک رفرنس بدهید تا ببینم.
سوما اینکه برا export کردن بهتر است crs را مشخص کنید.
موفق باشید
سلام مجدد
ببخشید دوباره مزاحمتون شدم و خیلی ممنون از راهنمایتون و وقتی که گذاشتید.
من از ژئومتری برای برش منطقه ام استفاده میکنم و تیبل رو حواسم نبود از کدم پاک کنم.
واقعا ببخشید درست گفتید من شاخص رو اشتباه نوشتم و درستش اینطوری بود (SI2= √(G^2+R^2+NIR^2 )
سلام، خواهش میکنم
الان مشکل حل شد؟
بله ممنونم
رفرنس شاخص (SI2= √(G^2+R^2+NIR^2
https://doi.org/10.1016/j.geoderma.2005.10.009
سلام و عرض ادب
من دو گوگل ارث اینجین قصد دارم بین دو تا تصویر از لندست هشت که یکیش برای دما و دیگری پوشش زمین و کاربری زمین است رکرسیون خطی و غیر خطی بزنم
میشه منو تو این زمینه راهنمایی کنید
لازم به ذکر است که تصاویر سری زمانی دما و پوشش زمین و کاربری رو به دست آوردم فقط رگرسیون رو مشکل دارم
سپاس فراوان
سلام و وقت بخیر
با توجه به نوع رگرسیونی که نیاز دارید، در GEE از بخش ee.Reducer به موارد زیر دسترسی دارید
ee.Reducer.linearFit
ee.Reducer.linearRegression
ee.Reducer.ridgeRegression
ee.Reducer.robustLinearRegression
موفق باشید
سلام و عرض ادب خدمت شما بزرگوار
ممنون از راهنماییتون 🙏
آقای مهندس من چون تصاویرم سری زمانی هستن آیا این امر امکان پذیر هست (منظورم رگرسیون بین دو مجموعه تصویر سری زمانی )؟یا باید تصویر هامو از image collection خارج کنم و به صورت دو تا تصویر باشه به جای مجموعه تصویر ؟
سوال دومم اینه که من چون سری زمانی کار کردم الان میخوام از بین تاریخ های به دست آمده از تصاویر فقط چند تاییش رو بررسی کنم مثلا بین صدتا تصویری که از سری زمانی حاصل شده ،پنجاه تاشو لازم دارم ،چه طور میتونم این تصاویرم رو جدا کنم و دانلود کنم .
ممنون میشم از پاسخگوییتون 🙏
سلام
سوال اولتون از نظر تئوری ریاضی برای من مبهمه. متغیر مستقل و وابسته شما چیست که میخواهید بین دو imageCollection انجام دهید. وقتی این کار را بین دو تصویر انجام می دهیم، پیکسل های دو تصویر مورد بررسی نقش متغیر مستقل و وابسته را بازی می کنند که در نتیجه، value و offset به دست میاد.
برای سوال دوم راه حل های زیادی وجود داره. میتونید با فیلتر گذاری زمانی، تعدادی از او تصاویر را انتخاب کنید. می توانید به List تبدیک کنید و با انتخاب تصاویر دلخواه، دوباره لیست رو به imageCollection تبدیل کنید. وابسته به استراتژی انتخاب شما داره
ممنون از پاسخگوییتون واقعا
در مورد سوال اول منظور من اینه که من میتونم با توجه به اینکه دمای سطح زمین و لندیوز لندکاور رو به صورت سری زمانی کار کردم
بین این دو رگرسیون بزنم؟
خواهش میکنم
متغیرهاتون رو به صورت واضح مشخص کنید، این طور که من متوجه شدم
یک باند دما
یک باند لندیوز لندکاور
و متغیر زمان
پیشنهاد من اینه که یکی از دو کار زیر رو انجام بدهید
۱- از دما و LULC به صورت جداگانه میانگین بگیرید و از دو تصویر موجود رگرسیون بگیرید. روش ساده است ولی اطلاعات زمانی حذف میشه
۲- جفت تصویرهای دما و LULC بسازید. مثلا ۲۰ جفت تصویر زمانی که هر کدوم یک باند دما و یک باند LULC دارند و به هر کدام رگرسیون رو اعمال کنید. در نتیجه میتوانید با تصاویر سری زمانی تولید شده، آنالیز زمانی انجام بدهید.
موفق باشید
سپاس فراوان 🙏
سلام
من اموزش شمارو تهیه کردم. یه سوال دارم ممنون میشم راهنماییم کنید.
اگه بخواهم یک باند (مثلا باند قرمز) نرمالیزه کنم (بین ۰ و ۱) قرار بدم باید چطوری انجامش بدم؟
سلام
ابتدا باید با reducer مقدار ماکزیمم و مینیمم را در geometry مد نظر پیدا کنید
سپس از رابطه (مین – ماکس)/(مین – پیکسل) استفاده کنید.
با سلام و خسته نباشید
من این محصول آموزشی رو تهیه کردم
میخواستم بعد از محاسبات ریاضی شاخص جای ارزش های پایین و بالا رو برعکس کنم یعنی مقادیر کم برای من ارزش بالا ثبت بشن باید از چه تکنیکی استفاده کرد؟ ممنون میشم راهنمایی کنین.
سلام
ساده ترین راه اینه که شاخص را در منفی یک ضرب کنید.
multiply(-1)
موفق باشید
سلام
وقتتون بخیر
جناب دکتر ی سوال داشتم
میخاستم روی مجموعه ای از تصاویر NDVI ی کد بنویسم که زمانی که مقدار ndvi دو یا سه روز پشت سر هم از مقدار ۰٫۹۲ بیشتر شد رو بصورت ی نقشه خروجی بهم بده
در واقع توالی روزهای پشت سر هم برام مهمه
اینکه مثلا در فلان ماه سه روز پشت سر هم میزان ndvi بیشتر از ۰٫۹۵ بوده
ممنون میشم در این مورد راهنمایی بفرمایید
و اینکه آیا در این محصول اینجور چیزی رو توضیح دادین
ممنون میشم جواب رو به ایملیم ارسال کنین
سپاس
Hesmaeili19@yahoo.com
سلام
خیر، در این محصول وجود نداره
موارد زیر را در نظر داشته باشید
ابتدا موزاییک های سری زمانی از NDVI را در یک کالکشن تشکیل دهید
سپس با تبدیل آن به باندهای یک تصویر میتوانید و آستانه گذاری میتوانید توالی یک ها را بررسی کنید.
موفق باشید
متوجه نشدم متاسفانه
اگه ممکنه رو ی پروداکت اعمال کنین و لینک بدین بهم تا جایگذاری کنم
متاسفانه از چندین نفر پرسیدم هیچکس نتونست توالی چند روز پشت سر هم رو تولید کنه
ممنونم
متاسفانه محدودیت های زمانی و کاری، این امکان را فراهم نمیکند.
کدنویسی به عهده دانشجو است و در صورت مواجه با مشکل میتوانید سوال بپرسید
موفق باشید
سلام وقتتون بخیر
من این محصول تهیه کردم اما متاسفانه فرمول نویسی شاخص msavi توضیح داده نشده بود
من با این فرمول مینویسم اما ارور میده میشه کمکم کنید ببینم اشکالم در کجاست؟
MSAVI2 = (1/2)*(2*NIR+1-sqrt ((2*NIR+1)^2-8*(NIR-red)))
موقع نشان دادن نقشه این پیغام خطا Image (Error)
Image.bitwiseXor: Bitwise operands must be integer only.
میدهد.
واقعا نمیدونم اشکالم کجاست ممنون میشم کمکم کنید
سلام
علامت ^ به صورت XOR تعبیر میشه
برای توان ۲ عبارت x از pow(x,2) استفاده کنید
موفق باشید
سلام وقت شما بخیر
ببخشید جناب دکتر من یک کدنوشتم که هنگام خروجی گرفتن با این خطا مواجه شده ام. و عبارت خطا به این صورت هستش.
Image (Error)
Image.parseExpression: Expression parse error at character 15:
‘26.901* (mtvi2)² – 30.669(mtvi2)+10.648’
البته کد تلفیقی از دو شاخص هست که قسمت قسمت هم کد رو اجرا میکنم دوباره خطا میده من این فیلم اموزشی رو هم تهیه کردم ولی نتیجه ای ازش در این زمینه نگرفتم .
من لینک کد رو خدمت شما ارسال میکنم ممنون میشم راهنماییم کنید که مشکل کارم کجاست.
https://code.earthengine.google.com/0822f22c72a1f3828bc276b4ab2a08ff
با تشکر
سلام
جدای از اینکه روابط را به شکل صحیح ننوشتید، واقعا تعجب کردن که چگونه خود توان 2 و رادیکال را وارد رابطه نویسی کردید؟!
توان را به شکل ** بنویسید، یعنی
توان 2 به شکل 2**
رادیکال 2 به شکل 0.5**
موفق باشید
سلام خسته نیاشید. ببخشید جناب دکتر اگر اشتباه جایگذاری نکرده باشم توضیحات شما رو وارد کد کردم ولی بازم خطا داد و اینکه شما فرمودین روابط رو اشتباه نوشتم من متوجه نشدم کدوم قسمت از روابط اشتباهه. ممنون میشم بیشتر راهنماییم کنید. تا به نتیجه درستی برسم. لینک کد رو خدمتتون ارسال میکنم و همچنیین رفرنس مقاله ای که شاخص رو استفاده کردم.
https://code.earthengine.google.com/a20c60d49bca5dbd862b59bf2059c776
multispectral remote sensing for site specific nitrogen fertilizer management
با تشکر از پیگیری های شما
سلام وقت شما بخیر.
ببخشید جناب دکتر شما فرمودین روابط رو صحیح ننوشتم ممنون میشم راهنمایی کنید کدوم قسمت از کد رو اشتباه نوشتم تا اصلاحش کنم و به خروجی برسم. لینک کد رو خدممتون ارسال کردم.
https://code.earthengine.google.com/a20c60d49bca5dbd862b59bf2059c776
دقیقا نمیدونم مشکل کار کجاست که خطا میده؟
ممنون از شما
سلام
وضعیت کد شما از قبلی بهتر شده است.
ایراد اصلی کد فعلی در ضرب ها است که حتما باید به صورت * نوشته شود. مثلا در موارد زیر ضریب پشت پرانتز و متغیر قرار دارد و علامت ضرب استفاده نشده است!
1.8(NIR – Green)
3.75(Red – Green)
2NIR
و تعداد بیشتری موارد مشابه وجود دارد
موفق باشید
سلام وقت شما بخیر
ممنون از توضیحات شما
ببخشید جناب دکتر من اصلاحاتی رو که گفتید انجام دادم ول متاسفانه با همون خطا مواجه میشم.
https://code.earthengine.google.com/1cbbbf8765df7b6c9f7a03053d8700e2
ممنون میشم راهنمایی کنید که برای رفع خطا چه کاری باید انجام بدم؟
سلام
رابطه را براتون تصحیح کردم.
اسامی متغیرها حتی از لحاظ کوچک و بزرگ بودن حروف باید یکسان باشد.
برای رادیکال هم باید عبارت را به توان 0.5 برسانید نه اینکه 0.5 را به توان عبارت برسانید.
موفق باشید
کد تصحیح شده
https://code.earthengine.google.com/c1d0a87416c6416a44bab12bc07299c6
ممنون از کمک و راهنمایی شما