ee.Filter.maxDifference

Creates a unary or binary filter that passes if the left and right operands, both numbers, are within a given maximum difference. אם משתמשים בה כבתנאי לצירוף, ההפרש המספרי הזה משמש כמדד לצירוף.

שימושהחזרות
ee.Filter.maxDifference(difference, leftField, rightValue, rightField, leftValue)סינון
ארגומנטסוגפרטים
differenceמספר ממשי (float)ההפרש המקסימלי שעבורו הפילטר יחזיר את הערך True.
leftFieldמחרוזת, ברירת מחדל: nullכלי לבחירה של האופרנד השמאלי. לא צריך לציין את המאפיין הזה אם מציינים את המאפיין leftValue.
rightValueאובייקט, ברירת מחדל: nullהערך של האופרנד הימני. לא צריך לציין את המאפיין הזה אם מציינים את המאפיין rightField.
rightFieldמחרוזת, ברירת מחדל: nullכלי לבחירה של האופרנד הימני. לא צריך לציין את המאפיין הזה אם מציינים את המאפיין rightValue.
leftValueאובייקט, ברירת מחדל: nullהערך של האופרנד השמאלי. אין לציין את המאפיין הזה אם מציינים את המאפיין leftField.

דוגמאות

עורך הקוד (JavaScript)

// Field site vegetation characteristics from projects in western USA.
var fc = ee.FeatureCollection('BLM/AIM/v1/TerrADat/TerrestrialAIM')
  .filter('ProjectName == "Colorado NWDO Kremmling FO 2016"');

// Display field plots on the map.
Map.setCenter(-107.792, 39.871, 7);
Map.addLayer(fc);

// Compare the per-feature values of two properties and filter the collection
// based on the results of various relational expressions. The two properties
// to compare are invasive and non-invasive annual forb cover at each plot.
var leftProperty = 'InvAnnForbCover_AH';
var rightProperty = 'NonInvAnnForbCover_AH';

print('Plots where invasive forb cover is…');

print('…EQUAL to non-invasive cover',
      fc.filter(ee.Filter.equals(
        {leftField: leftProperty, rightField: rightProperty})));

print('…NOT EQUAL to non-invasive cover',
      fc.filter(ee.Filter.notEquals(
        {leftField: leftProperty, rightField: rightProperty})));

print('…LESS THAN non-invasive cover',
      fc.filter(ee.Filter.lessThan(
        {leftField: leftProperty, rightField: rightProperty})));

print('…LESS THAN OR EQUAL to non-invasive cover',
      fc.filter(ee.Filter.lessThanOrEquals(
        {leftField: leftProperty, rightField: rightProperty})));

print('…GREATER THAN non-invasive cover',
      fc.filter(ee.Filter.greaterThan(
        {leftField: leftProperty, rightField: rightProperty})));

print('…GREATER THAN OR EQUAL to non-invasive cover',
      fc.filter(ee.Filter.greaterThanOrEquals(
        {leftField: leftProperty, rightField: rightProperty})));

print('…is not greater than 10 percent different than non-invasive cover',
      fc.filter(ee.Filter.maxDifference(
        {difference: 10, leftField: leftProperty, rightField: rightProperty})));

// Instead of comparing values of two feature properties using the leftField
// and rightField parameters, you can compare a property value (leftProperty)
// against a constant value (rightValue).
print('Plots where invasive forb cover is greater than 20%',
      fc.filter(ee.Filter.greaterThan(
        {leftField: leftProperty, rightValue: 20})));

// You can also swap the operands to assign the constant to the left side of
// the relational expression (leftValue) and the feature property on the right
// (rightField). Here, we get the complement of the previous example.
print('Plots where 20% is greater than invasive forb cover.',
      fc.filter(ee.Filter.greaterThan(
        {leftValue: 20, rightField: leftProperty})));

// Binary filters are useful in joins. For example, group all same-site plots
// together using a saveAll join.
var groupingProp = 'SiteID';
var sitesFc = fc.distinct(groupingProp);

var joinFilter = ee.Filter.equals(
  {leftField: groupingProp, rightField: groupingProp});

var groupedPlots = ee.Join.saveAll('site_plots').apply(sitesFc, fc, joinFilter);
print('List of plots in first site', groupedPlots.first().get('site_plots'));

הגדרת Python

מידע על Python API ועל שימוש ב-geemap לפיתוח אינטראקטיבי מופיע בדף Python Environment.

import ee
import geemap.core as geemap

Colab (Python)

# Field site vegetation characteristics from projects in western USA.
fc = ee.FeatureCollection('BLM/AIM/v1/TerrADat/TerrestrialAIM').filter(
    'ProjectName == "Colorado NWDO Kremmling FO 2016"'
)

# Display field plots on the map.
m = geemap.Map()
m.set_center(-107.792, 39.871, 7)
m.add_layer(fc)
display(m)

# Compare the per-feature values of two properties and filter the collection
# based on the results of various relational expressions. The two properties
# to compare are invasive and non-invasive annual forb cover at each plot.
left_property = 'InvAnnForbCover_AH'
right_property = 'NonInvAnnForbCover_AH'

display('Plots where invasive forb cover is…')

display(
    '…EQUAL to non-invasive cover',
    fc.filter(
        ee.Filter.equals(leftField=left_property, rightField=right_property)
    ),
)

display(
    '…NOT EQUAL to non-invasive cover',
    fc.filter(
        ee.Filter.notEquals(leftField=left_property, rightField=right_property)
    ),
)

display(
    '…LESS THAN non-invasive cover',
    fc.filter(
        ee.Filter.lessThan(leftField=left_property, rightField=right_property)
    ),
)

display(
    '…LESS THAN OR EQUAL to non-invasive cover',
    fc.filter(
        ee.Filter.lessThanOrEquals(
            leftField=left_property, rightField=right_property
        )
    ),
)

display(
    '…GREATER THAN non-invasive cover',
    fc.filter(
        ee.Filter.greaterThan(
            leftField=left_property, rightField=right_property
        )
    ),
)

display(
    '…GREATER THAN OR EQUAL to non-invasive cover',
    fc.filter(
        ee.Filter.greaterThanOrEquals(
            leftField=left_property, rightField=right_property
        )
    ),
)

display(
    '…is not greater than 10 percent different than non-invasive cover',
    fc.filter(
        ee.Filter.maxDifference(
            difference=10, leftField=left_property, rightField=right_property
        )
    ),
)

# Instead of comparing values of two feature properties using the leftField
# and rightField parameters, you can compare a property value (left_property)
# against a constant value (rightValue).
display(
    'Plots where invasive forb cover is greater than 20%',
    fc.filter(ee.Filter.greaterThan(leftField=left_property, rightValue=20)),
)

# You can also swap the operands to assign the constant to the left side of
# the relational expression (leftValue) and the feature property on the right
# (rightField). Here, we get the complement of the previous example.
display(
    'Plots where 20% is greater than invasive forb cover.',
    fc.filter(ee.Filter.greaterThan(leftValue=20, rightField=left_property)),
)

# Binary filters are useful in joins. For example, group all same-site plots
# together using a saveAll join.
grouping_prop = 'SiteID'
sites_fc = fc.distinct(grouping_prop)

join_filter = ee.Filter.equals(
    leftField=grouping_prop, rightField=grouping_prop
)

grouped_plots = ee.Join.saveAll('site_plots').apply(sites_fc, fc, join_filter)
display('List of plots in first site', grouped_plots.first().get('site_plots'))