ee.Filter.maxDifference
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Tạo một bộ lọc đơn phương hoặc nhị phân sẽ truyền nếu toán hạng bên trái và bên phải (cả hai đều là số) nằm trong một mức chênh lệch tối đa nhất định. Nếu được dùng làm điều kiện kết hợp, thì sự khác biệt về số này sẽ được dùng làm chỉ số kết hợp.
Cách sử dụng | Giá trị trả về |
---|
ee.Filter.maxDifference(difference, leftField, rightValue, rightField, leftValue) | Lọc |
Đối số | Loại | Thông tin chi tiết |
---|
difference | Số thực dấu phẩy động | Mức chênh lệch tối đa mà bộ lọc sẽ trả về giá trị true. |
leftField | Chuỗi, mặc định: null | Bộ chọn cho toán hạng bên trái. Không được chỉ định nếu bạn chỉ định leftValue. |
rightValue | Đối tượng, mặc định: null | Giá trị của toán hạng bên phải. Không nên chỉ định nếu bạn chỉ định rightField. |
rightField | Chuỗi, mặc định: null | Bộ chọn cho toán hạng bên phải. Không được chỉ định nếu bạn chỉ định rightValue. |
leftValue | Đối tượng, mặc định: null | Giá trị của toán hạng bên trái. Không được chỉ định nếu bạn chỉ định leftField. |
Ví dụ
Trình soạn thảo mã (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'));
Thiết lập Python
Hãy xem trang
Môi trường Python để biết thông tin về API Python và cách sử dụng geemap
cho quá trình phát triển tương tác.
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'))
Trừ phi có lưu ý khác, nội dung của trang này được cấp phép theo Giấy phép ghi nhận tác giả 4.0 của Creative Commons và các mẫu mã lập trình được cấp phép theo Giấy phép Apache 2.0. Để biết thông tin chi tiết, vui lòng tham khảo Chính sách trang web của Google Developers. Java là nhãn hiệu đã đăng ký của Oracle và/hoặc các đơn vị liên kết với Oracle.
Cập nhật lần gần đây nhất: 2025-07-26 UTC.
[null,null,["Cập nhật lần gần đây nhất: 2025-07-26 UTC."],[[["\u003cp\u003eCreates a filter that passes if the absolute difference between two numerical operands is within a specified maximum difference.\u003c/p\u003e\n"],["\u003cp\u003eCan be used as a join condition, using the numeric difference as a join measure.\u003c/p\u003e\n"],["\u003cp\u003eAllows comparing two feature properties or comparing a property to a constant value.\u003c/p\u003e\n"],["\u003cp\u003eUseful for filtering based on numerical proximity or for joining based on shared numerical attributes.\u003c/p\u003e\n"]]],["The `ee.Filter.maxDifference` function creates a filter for numeric comparisons. It checks if the difference between two numbers (operands) is within a specified maximum. Operands can be specified as feature properties (`leftField`, `rightField`) or constant values (`leftValue`, `rightValue`). The filter returns `true` if the numeric difference is within the defined limit. In joins, it serves as a numeric join measure. Example code demonstrates how to apply different filter comparisons and joins.\n"],null,["# ee.Filter.maxDifference\n\nCreates a unary or binary filter that passes if the left and right operands, both numbers, are within a given maximum difference. If used as a join condition, this numeric difference is used as a join measure.\n\n\u003cbr /\u003e\n\n| Usage | Returns |\n|--------------------------------------------------------------------------------------------------------|---------|\n| `ee.Filter.maxDifference(difference, `*leftField* `, `*rightValue* `, `*rightField* `, `*leftValue*`)` | Filter |\n\n| Argument | Type | Details |\n|--------------|-----------------------|---------------------------------------------------------------------------------------|\n| `difference` | Float | The maximum difference for which the filter will return true. |\n| `leftField` | String, default: null | A selector for the left operand. Should not be specified if leftValue is specified. |\n| `rightValue` | Object, default: null | The value of the right operand. Should not be specified if rightField is specified. |\n| `rightField` | String, default: null | A selector for the right operand. Should not be specified if rightValue is specified. |\n| `leftValue` | Object, default: null | The value of the left operand. Should not be specified if leftField is specified. |\n\nExamples\n--------\n\n### Code Editor (JavaScript)\n\n```javascript\n// Field site vegetation characteristics from projects in western USA.\nvar fc = ee.FeatureCollection('BLM/AIM/v1/TerrADat/TerrestrialAIM')\n .filter('ProjectName == \"Colorado NWDO Kremmling FO 2016\"');\n\n// Display field plots on the map.\nMap.setCenter(-107.792, 39.871, 7);\nMap.addLayer(fc);\n\n// Compare the per-feature values of two properties and filter the collection\n// based on the results of various relational expressions. The two properties\n// to compare are invasive and non-invasive annual forb cover at each plot.\nvar leftProperty = 'InvAnnForbCover_AH';\nvar rightProperty = 'NonInvAnnForbCover_AH';\n\nprint('Plots where invasive forb cover is...');\n\nprint('...EQUAL to non-invasive cover',\n fc.filter(ee.Filter.equals(\n {leftField: leftProperty, rightField: rightProperty})));\n\nprint('...NOT EQUAL to non-invasive cover',\n fc.filter(ee.Filter.notEquals(\n {leftField: leftProperty, rightField: rightProperty})));\n\nprint('...LESS THAN non-invasive cover',\n fc.filter(ee.Filter.lessThan(\n {leftField: leftProperty, rightField: rightProperty})));\n\nprint('...LESS THAN OR EQUAL to non-invasive cover',\n fc.filter(ee.Filter.lessThanOrEquals(\n {leftField: leftProperty, rightField: rightProperty})));\n\nprint('...GREATER THAN non-invasive cover',\n fc.filter(ee.Filter.greaterThan(\n {leftField: leftProperty, rightField: rightProperty})));\n\nprint('...GREATER THAN OR EQUAL to non-invasive cover',\n fc.filter(ee.Filter.greaterThanOrEquals(\n {leftField: leftProperty, rightField: rightProperty})));\n\nprint('...is not greater than 10 percent different than non-invasive cover',\n fc.filter(ee.Filter.maxDifference(\n {difference: 10, leftField: leftProperty, rightField: rightProperty})));\n\n// Instead of comparing values of two feature properties using the leftField\n// and rightField parameters, you can compare a property value (leftProperty)\n// against a constant value (rightValue).\nprint('Plots where invasive forb cover is greater than 20%',\n fc.filter(ee.Filter.greaterThan(\n {leftField: leftProperty, rightValue: 20})));\n\n// You can also swap the operands to assign the constant to the left side of\n// the relational expression (leftValue) and the feature property on the right\n// (rightField). Here, we get the complement of the previous example.\nprint('Plots where 20% is greater than invasive forb cover.',\n fc.filter(ee.Filter.greaterThan(\n {leftValue: 20, rightField: leftProperty})));\n\n// Binary filters are useful in joins. For example, group all same-site plots\n// together using a saveAll join.\nvar groupingProp = 'SiteID';\nvar sitesFc = fc.distinct(groupingProp);\n\nvar joinFilter = ee.Filter.equals(\n {leftField: groupingProp, rightField: groupingProp});\n\nvar groupedPlots = ee.Join.saveAll('site_plots').apply(sitesFc, fc, joinFilter);\nprint('List of plots in first site', groupedPlots.first().get('site_plots'));\n```\nPython setup\n\nSee the [Python Environment](/earth-engine/guides/python_install) page for information on the Python API and using\n`geemap` for interactive development. \n\n```python\nimport ee\nimport geemap.core as geemap\n```\n\n### Colab (Python)\n\n```python\n# Field site vegetation characteristics from projects in western USA.\nfc = ee.FeatureCollection('BLM/AIM/v1/TerrADat/TerrestrialAIM').filter(\n 'ProjectName == \"Colorado NWDO Kremmling FO 2016\"'\n)\n\n# Display field plots on the map.\nm = geemap.Map()\nm.set_center(-107.792, 39.871, 7)\nm.add_layer(fc)\ndisplay(m)\n\n# Compare the per-feature values of two properties and filter the collection\n# based on the results of various relational expressions. The two properties\n# to compare are invasive and non-invasive annual forb cover at each plot.\nleft_property = 'InvAnnForbCover_AH'\nright_property = 'NonInvAnnForbCover_AH'\n\ndisplay('Plots where invasive forb cover is...')\n\ndisplay(\n '...EQUAL to non-invasive cover',\n fc.filter(\n ee.Filter.equals(leftField=left_property, rightField=right_property)\n ),\n)\n\ndisplay(\n '...NOT EQUAL to non-invasive cover',\n fc.filter(\n ee.Filter.notEquals(leftField=left_property, rightField=right_property)\n ),\n)\n\ndisplay(\n '...LESS THAN non-invasive cover',\n fc.filter(\n ee.Filter.lessThan(leftField=left_property, rightField=right_property)\n ),\n)\n\ndisplay(\n '...LESS THAN OR EQUAL to non-invasive cover',\n fc.filter(\n ee.Filter.lessThanOrEquals(\n leftField=left_property, rightField=right_property\n )\n ),\n)\n\ndisplay(\n '...GREATER THAN non-invasive cover',\n fc.filter(\n ee.Filter.greaterThan(\n leftField=left_property, rightField=right_property\n )\n ),\n)\n\ndisplay(\n '...GREATER THAN OR EQUAL to non-invasive cover',\n fc.filter(\n ee.Filter.greaterThanOrEquals(\n leftField=left_property, rightField=right_property\n )\n ),\n)\n\ndisplay(\n '...is not greater than 10 percent different than non-invasive cover',\n fc.filter(\n ee.Filter.maxDifference(\n difference=10, leftField=left_property, rightField=right_property\n )\n ),\n)\n\n# Instead of comparing values of two feature properties using the leftField\n# and rightField parameters, you can compare a property value (left_property)\n# against a constant value (rightValue).\ndisplay(\n 'Plots where invasive forb cover is greater than 20%',\n fc.filter(ee.Filter.greaterThan(leftField=left_property, rightValue=20)),\n)\n\n# You can also swap the operands to assign the constant to the left side of\n# the relational expression (leftValue) and the feature property on the right\n# (rightField). Here, we get the complement of the previous example.\ndisplay(\n 'Plots where 20% is greater than invasive forb cover.',\n fc.filter(ee.Filter.greaterThan(leftValue=20, rightField=left_property)),\n)\n\n# Binary filters are useful in joins. For example, group all same-site plots\n# together using a saveAll join.\ngrouping_prop = 'SiteID'\nsites_fc = fc.distinct(grouping_prop)\n\njoin_filter = ee.Filter.equals(\n leftField=grouping_prop, rightField=grouping_prop\n)\n\ngrouped_plots = ee.Join.saveAll('site_plots').apply(sites_fc, fc, join_filter)\ndisplay('List of plots in first site', grouped_plots.first().get('site_plots'))\n```"]]