يمكن دمج المجموعات حسب الموقع الجغرافي بالإضافة إلى قيم السمات. للانضمام استنادًا
إلى الموقع الجغرافي، استخدِم فلتر withinDistance()
مع حقول دمج
.geo
محدّدة. يشير الحقل .geo
إلى أنّه سيتم استخدام شكل
العنصر لحساب مقياس المسافة. على سبيل المثال، لنفترض أنّ المهمة هي
العثور على كل
محطات الطاقة ضمن نطاق 100 كيلومتر
من متنزه يوسميتي الوطني في الولايات المتحدة. لهذا الغرض، استخدِم فلترًا على حقول الهندسة
، مع ضبط الحد الأقصى للمسافة على 100 كيلومتر باستخدام المَعلمة distance
:
محرِّر الرموز البرمجية (JavaScript)
// 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);
import ee import geemap.core as geemap
Colab (Python)
# 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()
سمة
(points
) على كلّ ميزة في مجموعة primary
التي
تخزّن قائمة بالنقاط ضمن نطاق 100 كيلومتر من الميزة. يتم تخزين المسافة من كل نقطة إلى
العنصر في سمة distance
لكل نقطة تمّ ربطها.
يمكن أيضًا استخدام عمليات الربط المكاني لتحديد العناصر
في مجموعة واحدة تتقاطع مع العناصر في مجموعة أخرى. على سبيل المثال، نأخذ مجموعتَين من العناصر: مجموعة primary
تحتوي على مضلّعات تمثّل
حدود الولايات الأمريكية، ومجموعة secondary
تحتوي على مواقع نقاط
تمثّل محطات الطاقة. لنفترض أنّه يجب تحديد عدد الطرق التي تتقاطع مع كل
ولاية. يمكن إجراء ذلك من خلال عملية دمج مكاني على النحو التالي:
محرِّر الرموز البرمجية (JavaScript)
// 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.
