স্থানিক যোগদান

সংগ্রহগুলি স্থানিক অবস্থানের পাশাপাশি সম্পত্তির মান দ্বারা যুক্ত হতে পারে। স্থানিক অবস্থানের উপর ভিত্তি করে যোগদান করতে, নির্দিষ্ট .geo যোগদান ক্ষেত্র সহ একটি withinDistance() ফিল্টার ব্যবহার করুন। .geo ক্ষেত্রটি নির্দেশ করে যে আইটেমের জ্যামিতিটি দূরত্ব মেট্রিক গণনা করতে ব্যবহার করা হবে। উদাহরণস্বরূপ, মার্কিন যুক্তরাষ্ট্রের ইয়োসেমাইট ন্যাশনাল পার্কের 100 কিলোমিটারের মধ্যে সমস্ত পাওয়ার প্ল্যান্ট খুঁজে পাওয়ার কাজটি বিবেচনা করুন। সেই উদ্দেশ্যে, distance প্যারামিটার ব্যবহার করে সর্বাধিক দূরত্ব 100 কিলোমিটার সেট করে জ্যামিতি ক্ষেত্রগুলিতে একটি ফিল্টার ব্যবহার করুন:

কোড এডিটর (জাভাস্ক্রিপ্ট)

// Load a primary collection: protected areas (Yosemite National Park).
var primary = ee.FeatureCollection("WCMC/WDPA/current/polygons")
  .filter(ee.Filter.eq('NAME', 'Yosemite National Park'));

// Load a secondary collection: power plants.
var powerPlants = ee.FeatureCollection('WRI/GPPD/power_plants');

// Define a spatial filter, with distance 100 km.
var distFilter = ee.Filter.withinDistance({
  distance: 100000,
  leftField: '.geo',
  rightField: '.geo',
  maxError: 10
});

// Define a saveAll join.
var distSaveAll = ee.Join.saveAll({
  matchesKey: 'points',
  measureKey: 'distance'
});

// Apply the join.
var spatialJoined = distSaveAll.apply(primary, powerPlants, distFilter);

// Print the result.
print(spatialJoined);

পাইথন সেটআপ

পাইথন এপিআই এবং ইন্টারেক্টিভ ডেভেলপমেন্টের জন্য geemap ব্যবহার করার জন্য পাইথন এনভায়রনমেন্ট পৃষ্ঠাটি দেখুন।

import ee
import geemap.core as geemap

Colab (পাইথন)

# Load a primary collection: protected areas (Yosemite National Park).
primary = ee.FeatureCollection('WCMC/WDPA/current/polygons').filter(
    ee.Filter.eq('NAME', 'Yosemite National Park')
)

# Load a secondary collection: power plants.
power_plants = ee.FeatureCollection('WRI/GPPD/power_plants')

# Define a spatial filter, with distance 100 km.
dist_filter = ee.Filter.withinDistance(
    distance=100000, leftField='.geo', rightField='.geo', maxError=10
)

# Define a saveAll join.
dist_save_all = ee.Join.saveAll(matchesKey='points', measureKey='distance')

# Apply the join.
spatial_joined = dist_save_all.apply(primary, power_plants, dist_filter)

# Print the result.
display(spatial_joined)

মনে রাখবেন যে আগের উদাহরণটি একটি FeatureCollection অন্য FeatureCollection এ যোগ দেয়। saveAll() যোগদান primary সংগ্রহের প্রতিটি বৈশিষ্ট্যে একটি বৈশিষ্ট্য ( points ) সেট করে যা বৈশিষ্ট্যের 100 কিলোমিটারের মধ্যে পয়েন্টগুলির একটি তালিকা সংরক্ষণ করে। বৈশিষ্ট্যের প্রতিটি বিন্দুর দূরত্ব প্রতিটি সংযুক্ত বিন্দুর distance বৈশিষ্ট্যে সংরক্ষণ করা হয়।

স্থানিক যোগদানগুলি একটি সংগ্রহের কোন বৈশিষ্ট্যগুলিকে অন্যটি ছেদ করে তা সনাক্ত করতেও ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, দুটি বৈশিষ্ট্য সংগ্রহ বিবেচনা করুন: মার্কিন রাজ্যের সীমানা প্রতিনিধিত্বকারী বহুভুজ সমন্বিত একটি primary সংগ্রহ, পাওয়ার প্ল্যান্টের প্রতিনিধিত্বকারী বিন্দু অবস্থান সমন্বিত একটি secondary সংগ্রহ। ধরুন প্রতিটি রাজ্যকে ছেদকারী সংখ্যা নির্ধারণ করতে হবে। এটি নিম্নরূপ একটি স্থানিক যোগদানের মাধ্যমে সম্পন্ন করা যেতে পারে:

কোড এডিটর (জাভাস্ক্রিপ্ট)

// Load the primary collection: US state boundaries.
var states = ee.FeatureCollection('TIGER/2018/States');

// Load the secondary collection: power plants.
var powerPlants = ee.FeatureCollection('WRI/GPPD/power_plants');

// Define a spatial filter as geometries that intersect.
var spatialFilter = ee.Filter.intersects({
  leftField: '.geo',
  rightField: '.geo',
  maxError: 10
});

// Define a save all join.
var saveAllJoin = ee.Join.saveAll({
  matchesKey: 'power_plants',
});

// Apply the join.
var intersectJoined = saveAllJoin.apply(states, powerPlants, spatialFilter);

// Add power plant count per state as a property.
intersectJoined = intersectJoined.map(function(state) {
  // Get "power_plant" intersection list, count how many intersected this state.
  var nPowerPlants = ee.List(state.get('power_plants')).size();
  // Return the state feature with a new property: power plant count.
  return state.set('n_power_plants', nPowerPlants);
});

// Make a bar chart for the number of power plants per state.
var chart = ui.Chart.feature.byFeature(intersectJoined, 'NAME', 'n_power_plants')
  .setChartType('ColumnChart')
  .setSeriesNames({n_power_plants: 'Power plants'})
  .setOptions({
    title: 'Power plants per state',
    hAxis: {title: 'State'},
    vAxis: {title: 'Frequency'}});

// Print the chart to the console.
print(chart);

পূর্ববর্তী উদাহরণে, লক্ষ্য করুন যে intersects() ফিল্টার একটি দূরত্ব সংরক্ষণ করে না যেমন withinDistance() ফিল্টার করে। আউটপুট চিত্র 1 এর মত কিছু হওয়া উচিত।

CA WRS2 যোগদান করুন
চিত্র 1. বার চার্ট প্রতিটি মার্কিন রাজ্যকে ছেদকারী পাওয়ার প্ল্যান্টের সংখ্যা দেখাচ্ছে।