add()
এবং subtract()
মত অপারেটর ব্যবহার করে ইমেজ ম্যাথ করা যেতে পারে, কিন্তু জটিল কম্পিউটেশনের জন্য কয়েকটা পদের বেশি, expression()
ফাংশন একটি ভালো বিকল্প প্রদান করে। অপারেটর এবং এক্সপ্রেশন সম্পর্কে আরও তথ্যের জন্য নিম্নলিখিত বিভাগগুলি দেখুন।
অপারেটর
গণিত অপারেটররা ইমেজ ব্যান্ডগুলিতে মৌলিক গাণিতিক ক্রিয়াকলাপ সম্পাদন করে। তারা দুটি ইনপুট নেয়: হয় দুটি চিত্র বা একটি চিত্র এবং একটি ধ্রুবক শব্দ, যা একটি একক-ব্যান্ড ধ্রুবক চিত্র হিসাবে ব্যাখ্যা করা হয় যার কোন মুখোশযুক্ত পিক্সেল নেই। প্রতিটি ব্যান্ডের জন্য পিক্সেল প্রতি অপারেশন সঞ্চালিত হয়।
একটি মৌলিক উদাহরণ হিসাবে, VIIRS চিত্র ব্যবহার করে নরমালাইজড ডিফারেন্স ভেজিটেশন ইনডেক্স (NDVI) গণনার কাজটি বিবেচনা করুন, যেখানে add()
, subtract()
, এবং divide()
অপারেটর ব্যবহার করা হয়:
কোড এডিটর (জাভাস্ক্রিপ্ট)
// Load a VIIRS 8-day surface reflectance composite for May 2024. var viirs202405 = ee.ImageCollection('NASA/VIIRS/002/VNP09H1').filter( ee.Filter.date('2024-05-01', '2024-05-16')).first(); // Compute NDVI. var ndvi202405 = viirs202405.select('SurfReflect_I2') .subtract(viirs202405.select('SurfReflect_I1')) .divide(viirs202405.select('SurfReflect_I2') .add(viirs202405.select('SurfReflect_I1')));
import ee import geemap.core as geemap
Colab (পাইথন)
# Load a VIIRS 8-day surface reflectance composite for May 2024. viirs202405 = ( ee.ImageCollection('NASA/VIIRS/002/VNP09H1') .filter(ee.Filter.date('2024-05-01', '2024-05-16')) .first() ) # Compute NDVI. ndvi202405 = ( viirs202405.select('SurfReflect_I2') .subtract(viirs202405.select('SurfReflect_I1')) .divide( viirs202405.select('SurfReflect_I2').add( viirs202405.select('SurfReflect_I1') ) ) )
দুটি ইনপুটের মধ্যে শুধুমাত্র আনমাস্কড পিক্সেলের ছেদকে বিবেচনা করা হয় এবং আনমাস্কড হিসাবে ফেরত দেওয়া হয়, বাকি সব মুখোশযুক্ত। সাধারণভাবে, যদি কোনো একটি ইনপুটে শুধুমাত্র একটি ব্যান্ড থাকে, তবে এটি অন্য ইনপুটের সমস্ত ব্যান্ডের বিরুদ্ধে ব্যবহৃত হয়। যদি ইনপুটগুলিতে একই সংখ্যক ব্যান্ড থাকে, কিন্তু একই নাম না হয়, তবে সেগুলি প্রাকৃতিক ক্রমে জোড়া ব্যবহার করা হয়। আউটপুট ব্যান্ড দুটি ইনপুটের দীর্ঘ সময়ের জন্য নামকরণ করা হয়, অথবা যদি তারা দৈর্ঘ্যে সমান হয়, প্রথম ইনপুটের ক্রমে। আউটপুট পিক্সেলের ধরন হল ইনপুট প্রকারের মিলন।
মাল্টি-ব্যান্ড ইমেজ বিয়োগের নিম্নলিখিত উদাহরণটি দেখায় কিভাবে ব্যান্ডগুলি স্বয়ংক্রিয়ভাবে মিলিত হয়, যার ফলে প্রতিটি সহ-ঘটমান ব্যান্ডের জন্য প্রতিটি পিক্সেলের জন্য একটি "পরিবর্তন ভেক্টর" হয়।
কোড এডিটর (জাভাস্ক্রিপ্ট)
// Load a VIIRS 8-day surface reflectance composite for September 2024. var viirs202409 = ee.ImageCollection('NASA/VIIRS/002/VNP09H1').filter( ee.Filter.date('2024-09-01', '2024-09-16')).first(); // Compute multi-band difference between the September composite and the // previously loaded May composite. var diff = viirs202409.subtract(ndvi202405); Map.addLayer(diff, { bands: ['SurfReflect_I1', 'SurfReflect_I2', 'SurfReflect_I3'], min: -1, max: 1 }, 'difference'); // Compute the squared difference in each band. var squaredDifference = diff.pow(2); Map.addLayer(squaredDifference, { bands: ['SurfReflect_I1', 'SurfReflect_I2', 'SurfReflect_I3'], min: 0, max: 0.7 }, 'squared diff.');
import ee import geemap.core as geemap
Colab (পাইথন)
# Load a VIIRS 8-day surface reflectance composite for September 2024. viirs202409 = ( ee.ImageCollection('NASA/VIIRS/002/VNP09H1') .filter(ee.Filter.date('2024-09-01', '2024-09-16')) .first() ) # Compute multi-band difference between the September composite and the # previously loaded May composite. diff = viirs202409.subtract(ndvi202405) m = geemap.Map() m.add_layer( diff, { 'bands': ['SurfReflect_I1', 'SurfReflect_I2', 'SurfReflect_I3'], 'min': -1, 'max': 1, }, 'difference', ) # Compute the squared difference in each band. squared_difference = diff.pow(2) m.add_layer( squared_difference, { 'bands': ['SurfReflect_I1', 'SurfReflect_I2', 'SurfReflect_I3'], 'min': 0, 'max': 0.7, }, 'squared diff.', ) display(m)
এই উদাহরণের দ্বিতীয় অংশে, image.pow(2)
ব্যবহার করে বর্গক্ষেত্রের পার্থক্য গণনা করা হয়েছে। মৌলিক গাণিতিক, ত্রিকোণমিতি, সূচক, রাউন্ডিং, কাস্টিং, বিটওয়াইজ অপারেশন এবং আরও অনেক কিছু পরিচালনাকারী গাণিতিক অপারেটরদের সম্পূর্ণ তালিকার জন্য, API ডকুমেন্টেশন দেখুন।
অভিব্যক্তি
আরো জটিল গাণিতিক অভিব্যক্তি বাস্তবায়ন করতে, image.expression()
ব্যবহার করার কথা বিবেচনা করুন, যা একটি গণিত অপারেশনের একটি পাঠ্য উপস্থাপনা পার্স করে। নিম্নলিখিত উদাহরণটি বর্ধিত উদ্ভিদ সূচক (ইভিআই) গণনা করতে expression()
ব্যবহার করে:
কোড এডিটর (জাভাস্ক্রিপ্ট)
// Load a Landsat 8 image. var image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318'); // Compute the EVI using an expression. var evi = image.expression( '2.5 * ((NIR - RED) / (NIR + 6 * RED - 7.5 * BLUE + 1))', { 'NIR': image.select('B5'), 'RED': image.select('B4'), 'BLUE': image.select('B2') }); Map.centerObject(image, 9); Map.addLayer(evi, {min: -1, max: 1, palette: ['a6611a', 'f5f5f5', '4dac26']});
import ee import geemap.core as geemap
Colab (পাইথন)
# Load a Landsat 8 image. image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318') # Compute the EVI using an expression. evi = image.expression( '2.5 * ((NIR - RED) / (NIR + 6 * RED - 7.5 * BLUE + 1))', { 'NIR': image.select('B5'), 'RED': image.select('B4'), 'BLUE': image.select('B2'), }, ) # Define a map centered on San Francisco Bay. map_evi = geemap.Map(center=[37.4675, -122.1363], zoom=9) # Add the image layer to the map and display it. map_evi.add_layer( evi, {'min': -1, 'max': 1, 'palette': ['a6611a', 'f5f5f5', '4dac26']}, 'evi' ) display(map_evi)
লক্ষ্য করুন যে expression()
এর প্রথম আর্গুমেন্ট হল ম্যাথ অপারেশনের টেক্সচুয়াল রিপ্রেজেন্টেশন, দ্বিতীয় আর্গুমেন্ট হল একটি অভিধান যেখানে কীগুলি হল এক্সপ্রেশনে ব্যবহৃত ভেরিয়েবল নাম এবং মান হল ইমেজ ব্যান্ড যেখানে ভেরিয়েবলগুলি ম্যাপ করা উচিত৷ চিত্রের ব্যান্ডগুলিকে অভিধান প্রদানের পরিবর্তে b("band name")
বা b(index)
হিসাবে উল্লেখ করা যেতে পারে, উদাহরণস্বরূপ b(0)
। ব্যান্ড মানচিত্র অভিধান ব্যবহার করার সময় ইনপুট ছাড়া অন্য ছবি থেকে ব্যান্ড সংজ্ঞায়িত করা যেতে পারে। মনে রাখবেন যে expression()
"ফ্লোর ডিভিশন" ব্যবহার করে, যা অবশিষ্টাংশকে বাতিল করে এবং দুটি পূর্ণসংখ্যাকে ভাগ করা হলে একটি পূর্ণসংখ্যা প্রদান করে। উদাহরণস্বরূপ 10 / 20 = 0
। এই আচরণ পরিবর্তন করতে, একটি অপারেন্ডকে 1.0
: 10 * 1.0 / 20 = 0.5
দ্বারা গুণ করুন। শুধুমাত্র আনমাস্কড পিক্সেলের ছেদকে বিবেচনা করা হয় এবং যখন একাধিক সোর্স ইমেজের ব্যান্ড মূল্যায়ন করা হয় তখন আনমাস্কড হিসাবে ফেরত দেওয়া হয়। সমর্থিত এক্সপ্রেশন অপারেটরগুলি নিম্নলিখিত টেবিলে তালিকাভুক্ত করা হয়েছে।
টাইপ | প্রতীক | নাম |
---|---|---|
পাটিগণিত | + - * / % ** | যোগ, বিয়োগ, গুণ, ভাগ, মডুলাস, সূচক |
রিলেশনাল | == != < > <= >= | সমান, সমান নয়, তার চেয়ে কম, এর চেয়ে বড় ইত্যাদি। |
যৌক্তিক | && || ! ^ | এবং, অথবা, না, Xor |
টারনারি | ? : | তাহলে অন্যথায় |
add()
এবং subtract()
মত অপারেটর ব্যবহার করে ইমেজ ম্যাথ করা যেতে পারে, কিন্তু জটিল কম্পিউটেশনের জন্য কয়েকটা পদের বেশি, expression()
ফাংশন একটি ভালো বিকল্প প্রদান করে। অপারেটর এবং এক্সপ্রেশন সম্পর্কে আরও তথ্যের জন্য নিম্নলিখিত বিভাগগুলি দেখুন।
অপারেটর
গণিত অপারেটররা ইমেজ ব্যান্ডগুলিতে মৌলিক গাণিতিক ক্রিয়াকলাপ সম্পাদন করে। তারা দুটি ইনপুট নেয়: হয় দুটি চিত্র বা একটি চিত্র এবং একটি ধ্রুবক শব্দ, যা একটি একক-ব্যান্ড ধ্রুবক চিত্র হিসাবে ব্যাখ্যা করা হয় যার কোন মুখোশযুক্ত পিক্সেল নেই। প্রতিটি ব্যান্ডের জন্য পিক্সেল প্রতি অপারেশন সঞ্চালিত হয়।
একটি মৌলিক উদাহরণ হিসাবে, VIIRS চিত্র ব্যবহার করে নরমালাইজড ডিফারেন্স ভেজিটেশন ইনডেক্স (NDVI) গণনার কাজটি বিবেচনা করুন, যেখানে add()
, subtract()
, এবং divide()
অপারেটর ব্যবহার করা হয়:
কোড এডিটর (জাভাস্ক্রিপ্ট)
// Load a VIIRS 8-day surface reflectance composite for May 2024. var viirs202405 = ee.ImageCollection('NASA/VIIRS/002/VNP09H1').filter( ee.Filter.date('2024-05-01', '2024-05-16')).first(); // Compute NDVI. var ndvi202405 = viirs202405.select('SurfReflect_I2') .subtract(viirs202405.select('SurfReflect_I1')) .divide(viirs202405.select('SurfReflect_I2') .add(viirs202405.select('SurfReflect_I1')));
import ee import geemap.core as geemap
Colab (পাইথন)
# Load a VIIRS 8-day surface reflectance composite for May 2024. viirs202405 = ( ee.ImageCollection('NASA/VIIRS/002/VNP09H1') .filter(ee.Filter.date('2024-05-01', '2024-05-16')) .first() ) # Compute NDVI. ndvi202405 = ( viirs202405.select('SurfReflect_I2') .subtract(viirs202405.select('SurfReflect_I1')) .divide( viirs202405.select('SurfReflect_I2').add( viirs202405.select('SurfReflect_I1') ) ) )
দুটি ইনপুটের মধ্যে শুধুমাত্র আনমাস্কড পিক্সেলের ছেদকে বিবেচনা করা হয় এবং আনমাস্কড হিসাবে ফেরত দেওয়া হয়, বাকি সব মুখোশযুক্ত। সাধারণভাবে, যদি কোনো একটি ইনপুটে শুধুমাত্র একটি ব্যান্ড থাকে, তবে এটি অন্য ইনপুটের সমস্ত ব্যান্ডের বিরুদ্ধে ব্যবহৃত হয়। যদি ইনপুটগুলিতে একই সংখ্যক ব্যান্ড থাকে, কিন্তু একই নাম না হয়, তবে সেগুলি প্রাকৃতিক ক্রমে জোড়া ব্যবহার করা হয়। আউটপুট ব্যান্ড দুটি ইনপুটের দীর্ঘ সময়ের জন্য নামকরণ করা হয়, অথবা যদি তারা দৈর্ঘ্যে সমান হয়, প্রথম ইনপুটের ক্রমে। আউটপুট পিক্সেলের ধরন হল ইনপুট প্রকারের মিলন।
মাল্টি-ব্যান্ড ইমেজ বিয়োগের নিম্নলিখিত উদাহরণটি দেখায় কিভাবে ব্যান্ডগুলি স্বয়ংক্রিয়ভাবে মিলিত হয়, যার ফলে প্রতিটি সহ-ঘটমান ব্যান্ডের জন্য প্রতিটি পিক্সেলের জন্য একটি "পরিবর্তন ভেক্টর" হয়।
কোড এডিটর (জাভাস্ক্রিপ্ট)
// Load a VIIRS 8-day surface reflectance composite for September 2024. var viirs202409 = ee.ImageCollection('NASA/VIIRS/002/VNP09H1').filter( ee.Filter.date('2024-09-01', '2024-09-16')).first(); // Compute multi-band difference between the September composite and the // previously loaded May composite. var diff = viirs202409.subtract(ndvi202405); Map.addLayer(diff, { bands: ['SurfReflect_I1', 'SurfReflect_I2', 'SurfReflect_I3'], min: -1, max: 1 }, 'difference'); // Compute the squared difference in each band. var squaredDifference = diff.pow(2); Map.addLayer(squaredDifference, { bands: ['SurfReflect_I1', 'SurfReflect_I2', 'SurfReflect_I3'], min: 0, max: 0.7 }, 'squared diff.');
import ee import geemap.core as geemap
Colab (পাইথন)
# Load a VIIRS 8-day surface reflectance composite for September 2024. viirs202409 = ( ee.ImageCollection('NASA/VIIRS/002/VNP09H1') .filter(ee.Filter.date('2024-09-01', '2024-09-16')) .first() ) # Compute multi-band difference between the September composite and the # previously loaded May composite. diff = viirs202409.subtract(ndvi202405) m = geemap.Map() m.add_layer( diff, { 'bands': ['SurfReflect_I1', 'SurfReflect_I2', 'SurfReflect_I3'], 'min': -1, 'max': 1, }, 'difference', ) # Compute the squared difference in each band. squared_difference = diff.pow(2) m.add_layer( squared_difference, { 'bands': ['SurfReflect_I1', 'SurfReflect_I2', 'SurfReflect_I3'], 'min': 0, 'max': 0.7, }, 'squared diff.', ) display(m)
এই উদাহরণের দ্বিতীয় অংশে, image.pow(2)
ব্যবহার করে বর্গক্ষেত্রের পার্থক্য গণনা করা হয়েছে। মৌলিক গাণিতিক, ত্রিকোণমিতি, সূচক, রাউন্ডিং, কাস্টিং, বিটওয়াইজ অপারেশন এবং আরও অনেক কিছু পরিচালনাকারী গাণিতিক অপারেটরদের সম্পূর্ণ তালিকার জন্য, API ডকুমেন্টেশন দেখুন।
অভিব্যক্তি
আরো জটিল গাণিতিক অভিব্যক্তি বাস্তবায়ন করতে, image.expression()
ব্যবহার করার কথা বিবেচনা করুন, যা একটি গণিত অপারেশনের একটি পাঠ্য উপস্থাপনা পার্স করে। নিম্নলিখিত উদাহরণটি বর্ধিত উদ্ভিদ সূচক (ইভিআই) গণনা করতে expression()
ব্যবহার করে:
কোড এডিটর (জাভাস্ক্রিপ্ট)
// Load a Landsat 8 image. var image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318'); // Compute the EVI using an expression. var evi = image.expression( '2.5 * ((NIR - RED) / (NIR + 6 * RED - 7.5 * BLUE + 1))', { 'NIR': image.select('B5'), 'RED': image.select('B4'), 'BLUE': image.select('B2') }); Map.centerObject(image, 9); Map.addLayer(evi, {min: -1, max: 1, palette: ['a6611a', 'f5f5f5', '4dac26']});
import ee import geemap.core as geemap
Colab (পাইথন)
# Load a Landsat 8 image. image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318') # Compute the EVI using an expression. evi = image.expression( '2.5 * ((NIR - RED) / (NIR + 6 * RED - 7.5 * BLUE + 1))', { 'NIR': image.select('B5'), 'RED': image.select('B4'), 'BLUE': image.select('B2'), }, ) # Define a map centered on San Francisco Bay. map_evi = geemap.Map(center=[37.4675, -122.1363], zoom=9) # Add the image layer to the map and display it. map_evi.add_layer( evi, {'min': -1, 'max': 1, 'palette': ['a6611a', 'f5f5f5', '4dac26']}, 'evi' ) display(map_evi)
লক্ষ্য করুন যে expression()
এর প্রথম আর্গুমেন্ট হল ম্যাথ অপারেশনের টেক্সচুয়াল রিপ্রেজেন্টেশন, দ্বিতীয় আর্গুমেন্ট হল একটি অভিধান যেখানে কীগুলি হল এক্সপ্রেশনে ব্যবহৃত ভেরিয়েবল নাম এবং মান হল ইমেজ ব্যান্ড যেখানে ভেরিয়েবলগুলি ম্যাপ করা উচিত৷ চিত্রের ব্যান্ডগুলিকে অভিধান প্রদানের পরিবর্তে b("band name")
বা b(index)
হিসাবে উল্লেখ করা যেতে পারে, উদাহরণস্বরূপ b(0)
। ব্যান্ড মানচিত্র অভিধান ব্যবহার করার সময় ইনপুট ছাড়া অন্য ছবি থেকে ব্যান্ড সংজ্ঞায়িত করা যেতে পারে। মনে রাখবেন যে expression()
"ফ্লোর ডিভিশন" ব্যবহার করে, যা অবশিষ্টাংশকে বাতিল করে এবং দুটি পূর্ণসংখ্যাকে ভাগ করা হলে একটি পূর্ণসংখ্যা প্রদান করে। উদাহরণস্বরূপ 10 / 20 = 0
। এই আচরণ পরিবর্তন করতে, একটি অপারেন্ডকে 1.0
: 10 * 1.0 / 20 = 0.5
দ্বারা গুণ করুন। শুধুমাত্র আনমাস্কড পিক্সেলের ছেদকে বিবেচনা করা হয় এবং যখন একাধিক সোর্স ইমেজের ব্যান্ড মূল্যায়ন করা হয় তখন আনমাস্কড হিসাবে ফেরত দেওয়া হয়। সমর্থিত এক্সপ্রেশন অপারেটরগুলি নিম্নলিখিত টেবিলে তালিকাভুক্ত করা হয়েছে।
টাইপ | প্রতীক | নাম |
---|---|---|
পাটিগণিত | + - * / % ** | যোগ, বিয়োগ, গুণ, ভাগ, মডুলাস, সূচক |
রিলেশনাল | == != < > <= >= | সমান, সমান নয়, তার চেয়ে কম, এর চেয়ে বড় ইত্যাদি। |
যৌক্তিক | && || ! ^ | এবং, অথবা, না, Xor |
টারনারি | ? : | তাহলে অন্যথায় |