ভেক্টর থেকে রাস্টার ইন্টারপোলেশন

Earth Engine-এ ভেক্টর থেকে রাস্টারে ইন্টারপোলেশন FeatureCollection থেকে Image তৈরি করে। বিশেষ করে, Earth Engine ফিচারের বাইরে নতুন লোকেশনে ভ্যালু ইন্টারপোলেট করার জন্য ফিচারের প্রপার্টিতে স্টোর করা সংখ্যাসূচক ডেটা ব্যবহার করে। ইন্টারপোলেশনের ফলে নির্দিষ্ট দূরত্ব পর্যন্ত ইন্টারপোলেট করা ভ্যালুর একটি অবিচ্ছিন্ন Image পাওয়া যায়।

ইনভার্স ডিস্ট্যান্স ওয়েটেড ইন্টারপোলেশন

Earth Engine-এ ইনভার্স ডিস্ট্যান্স ওয়েটিং (IDW) ফাংশনটি Basso et al. (1999)-এর বর্ণিত পদ্ধতির উপর ভিত্তি করে তৈরি। ইনভার্স দূরত্বের উপর ডিকে ফ্যাক্টর (gamma) হিসেবে অতিরিক্ত কন্ট্রোল প্যারামিটার যোগ করা হয়। অন্যান্য প্যারামিটারের মধ্যে রয়েছে ইন্টারপোলেট করার জন্য প্রপার্টির গড় ও স্ট্যান্ডার্ড ডেভিয়েশন এবং ইন্টারপোলেট করার জন্য সর্বাধিক রেঞ্জ দূরত্ব। নিম্নলিখিত উদাহরণটি মূল রাস্টার ডেটাসেটে স্পেশিয়াল গ্যাপ পূরণ করতে মিথেনের ঘনত্বের ইন্টারপোলেট করা সারফেস তৈরি করে। দুই সপ্তাহের মিথেন কম্পোজিটের স্যাম্পেল নিয়ে FeatureCollection তৈরি করা হয়।

// Import two weeks of S5P methane and composite by mean.
var ch4 = ee.ImageCollection('COPERNICUS/S5P/OFFL/L3_CH4')
  .select('CH4_column_volume_mixing_ratio_dry_air')
  .filterDate('2019-08-01', '2019-08-15')
  .mean()
  .rename('ch4');

// Define an area to perform interpolation over.
var aoi =
  ee.Geometry.Polygon(
    [[[-95.68487605978851, 43.09844605027055],
       [-95.68487605978851, 37.39358590079781],
       [-87.96148738791351, 37.39358590079781],
       [-87.96148738791351, 43.09844605027055]]], null, false);

// Sample the methane composite to generate a FeatureCollection.
var samples = ch4.addBands(ee.Image.pixelLonLat())
  .sample({region: aoi, numPixels: 1500,
    scale:1000, projection: 'EPSG:4326'})
  .map(function(sample) {
    var lat = sample.get('latitude');
    var lon = sample.get('longitude');
    var ch4 = sample.get('ch4');
    return ee.Feature(ee.Geometry.Point([lon, lat]), {ch4: ch4});
  });

// Combine mean and standard deviation reducers for efficiency.
var combinedReducer = ee.Reducer.mean().combine({
  reducer2: ee.Reducer.stdDev(),
  sharedInputs: true});

// Estimate global mean and standard deviation from the points.
var stats = samples.reduceColumns({
  reducer: combinedReducer,
  selectors: ['ch4']});

// Do the interpolation, valid to 70 kilometers.
var interpolated = samples.inverseDistance({
  range: 7e4,
  propertyName: 'ch4',
  mean: stats.get('mean'),
  stdDev: stats.get('stdDev'),
  gamma: 0.3});

// Define visualization arguments.
var band_viz = {
  min: 1800,
  max: 1900,
  palette: ['0D0887', '5B02A3', '9A179B', 'CB4678',
            'EB7852', 'FBB32F', 'F0F921']};

// Display to map.
Map.centerObject(aoi, 7);
Map.addLayer(ch4, band_viz, 'CH4');
Map.addLayer(interpolated, band_viz, 'CH4 Interpolated');

মনে রাখবেন যে, range প্যারামিটার দ্বারা নির্দিষ্ট করা অনুযায়ী, ইন্টারপোলেশন শুধুমাত্র নিকটতম পরিমাপ স্টেশন থেকে ৭০ কিলোমিটার পর্যন্ত বিদ্যমান।

ক্রিগিং

ক্রিগিং হল একটি ইন্টারপোলেশন পদ্ধতি যা ইন্টারপোলেট করা ভ্যালুর একটি ছবি তৈরি করতে সেমি-ভেরিয়েন্সের একটি মডেল করা অনুমান ব্যবহার করে যা পরিচিত লোকেশনে ভ্যালুর একটি সর্বোত্তম কম্বিনেশন। ক্রিজিং এস্টিমেটরের জন্য এমন প্যারামিটার প্রয়োজন যা পরিচিত ডেটা পয়েন্টের সাথে মানানসই সেমি-ভ্যারিওগ্রাম-এর আকৃতি বর্ণনা করে। এইসব প্যারামিটার ১ নম্বর ছবিতে দেখানো হয়েছে।

ভ্যারিওগ্রাম
ছবি ১. nugget, sill এবং range প্যারামিটারগুলি একটি আদর্শ ভ্যারিওগ্রাম ফাংশনে চিত্রিত করা হয়েছে।

নিম্নলিখিত উদাহরণে, র‍্যান্ডম লোকেশনে সমুদ্রের সারফেসের তাপমাত্রা (SST) সংক্রান্ত ছবির স্যাম্পেল নেওয়া হয়, তারপর Kriging ব্যবহার করে স্যাম্পেল থেকে SST ইন্টারপোলেট করা হয়:

// Load an image of sea surface temperature (SST).
var sst = ee.Image('NOAA/CDR/SST_PATHFINDER/V53/20120802023356')
  .select('sea_surface_temperature')
  .rename('sst')
  .divide(100);

// Define a geometry in which to sample points
var geometry = ee.Geometry.Rectangle([-65.60, 31.75, -52.18, 43.12]);

// Sample the SST image at 1000 random locations.
var samples = sst.addBands(ee.Image.pixelLonLat())
  .sample({region: geometry, numPixels: 1000})
  .map(function(sample) {
    var lat = sample.get('latitude');
    var lon = sample.get('longitude');
    var sst = sample.get('sst');
    return ee.Feature(ee.Geometry.Point([lon, lat]), {sst: sst});
  });

// Interpolate SST from the sampled points.
var interpolated = samples.kriging({
  propertyName: 'sst',
  shape: 'exponential',
  range: 100 * 1000,
  sill: 1.0,
  nugget: 0.1,
  maxDistance: 100 * 1000,
  reducer: 'mean',
});

var colors = ['00007F', '0000FF', '0074FF',
              '0DFFEA', '8CFF41', 'FFDD00',
              'FF3700', 'C30000', '790000'];
var vis = {min:-3, max:40, palette: colors};

Map.setCenter(-60.029, 36.457, 5);
Map.addLayer(interpolated, vis, 'Interpolated');
Map.addLayer(sst, vis, 'Raw SST');
Map.addLayer(samples, {}, 'Samples', false);

যে অঞ্চলে ইন্টারপোলেশন করা হবে তার সাইজ maxDistance প্যারামিটার দ্বারা নির্দিষ্ট করা হয়। সাইজ বড় হলে আউটপুট আরও মসৃণ হবে কিন্তু কম্পিউটেশন ধীর গতিতে হবে।