众数滤波 (Spatial Analyst)
插图
用法
众数滤波工具需要满足两个条件才能发生替换:具有近似值的相邻像元数必须足够多(达到所有像元的半数及以上),并且这些像元在滤波器内核周围必须是连续的。第二个条件与像元的空间连通性有关,目的是将像元的空间模式的破坏程度降到最低。
-
相邻像元数使用 FOUR 会保留矩形区域的拐角。使用 EIGHT 将使矩形区域的拐角变得平滑。
-
相邻的定义是共享 EIGHT 内核的一条边和共享 FOUR 内核的一个角。
-
如果将替换阈值指定为 HALF,并且两个值的出现次数相等,则当处理的像元值与其中某一半的值相同时将不会发生替换。HALF 比 MAJORITY 的过滤范围广泛。
-
当边和角栅格像元的相邻条件相同时,它们会遵循不同的 MAJORITY 和 HALF 规则。使用 FOUR 内核时,边或角像元始终要求存在两个匹配的相邻像元才能发生替换。使用 EIGHT 内核时,角像元在所有相邻像元均具有相同值时才能发生更改,而边像元需要三个相邻像元(包括边上的像元)具有相同值才发生更改。
-
运行几次众数滤波后,输出栅格将会稳定下来(不再变化)。
语法
MajorityFilter (in_raster, {number_neighbors}, {majority_definition})
参数 | 说明 | 数据类型 |
in_raster |
要根据相邻像元数据值的众数进行过滤的输入栅格。 必须为整型。 | Raster Layer |
number_neighbors (可选) |
确定在滤波器核中使用的相邻像元数。
| String |
majority_definition (可选) |
在进行替换之前指定必须具有相同值的相邻(空间连接)像元数。
| String |
返回值
名称 | 说明 | 数据类型 |
out_raster |
过滤后的输出栅格。 | Raster |
代码示例
MajorityFilter 示例 1(Python 窗口)
本例将使用全部八个相邻像元过滤输入栅格,并在替换时要求半数像元具有相同值,从而生成更加平滑的效果。
import arcpy from arcpy import env from arcpy.sa import * env.workspace = "C:/sapyexamples/data" outMajFilt = MajorityFilter("land", "EIGHT", "HALF") outMajFilt.save("c:/sapyexamples/output/outmajfilt")
MajorityFilter 示例 2(独立脚本)
本例将使用全部八个相邻像元过滤输入栅格,并在替换时要求半数像元具有相同值,从而生成更加平滑的效果。
# Name: MajorityFilter_Ex_02.py # Description: Replaces cells in a raster based on the # majority of their contiguous neighboring cells. # Requirements: Spatial Analyst Extension # Import system modules import arcpy from arcpy import env from arcpy.sa import * # Set environment settings env.workspace = "C:/sapyexamples/data" # Set local variables inRaster = "land" # Check out the ArcGIS Spatial Analyst extension license arcpy.CheckOutExtension("Spatial") # Execute MajorityFilter outMajFilt = MajorityFilter(inRaster, "EIGHT", "HALF") # Save the output outMajFilt.save("c:/sapyexamples/output/majfilter")
相关主题
许可信息
ArcView: 需要 Spatial Analyst
ArcEditor: 需要 Spatial Analyst
ArcInfo: 需要 Spatial Analyst
7/10/2012