AI-generated Key Takeaways
-
The
ee.Filter.notEqualsfunction creates a filter that passes elements unless two operands are equal. -
The filter can compare the values of two fields, a field and a constant value, or two constant values.
-
The function takes
leftField,rightValue,rightField, andleftValuearguments, where either a field or a value can be specified for each operand. -
Examples demonstrate using
ee.Filter.notEqualsto filter a FeatureCollection based on the inequality of property values.
| Usage | Returns |
|---|---|
ee.Filter.notEquals( leftField
, rightValue
, rightField
, leftValue
)
|
Filter |
| Argument | Type | Details |
|---|---|---|
leftField
|
String, default: null | A selector for the left operand. Should not be specified if leftValue is specified. |
rightValue
|
Object, default: null | The value of the right operand. Should not be specified if rightField is specified. |
rightField
|
String, default: null | A selector for the right operand. Should not be specified if rightValue is specified. |
leftValue
|
Object, default: null | The value of the left operand. Should not be specified if leftField is specified. |
Examples
Code Editor (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' ));
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 % i s 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' ))

