『公告』 预祝您龙年大吉,万事如意, 过节期间, 大家如需数据服务,请拨打400 或直接添加客服微信,再祝大家龙年,心想事成。
关注我们 新浪 腾讯

ArcGIS教程:众数滤波 (Spatial Analyst)

ArcGIS教程:众数滤波 (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

(可选)

确定在滤波器核中使用的相邻像元数。

·         FOUR — 滤波器内核将是与当前像元直接相邻(正交)的四个像元。这是默认设置。

·         EIGHT — 过滤器内核将是距当前像元最近的八个相邻像元(3 × 3 窗口)。

String

majority_definition

(可选)

在进行替换之前指定必须具有相同值的相邻(空间连接)像元数。

·         MAJORITY — 多数像元必须具有相同值并且相邻。四分之三或八分之五的已连接像元必须具有相同值。

·         HALF — 半数像元必须具有相同值并且相邻。四分之二或八分之四的已连接像元必须具有相同值。使用 HALF 选项可获得更平滑的效果。

String

返回值

名称

说明

数据类型

out_raster

过滤后的输出栅格。

Raster

代码实例

    MajorityFilter 示例 1Python 窗口)

    本例将使用全部八个相邻像元过滤输入栅格,并在替换时要求半数像元具有相同值,从而生成更加平滑的效果。

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")

环境

    像元大小当前工作空间掩膜输出坐标系范围临时工作空间捕捉栅格

      京ICP备2025132830号-1 京公网安备 号