Фильтр большинства (Majority Filter) (Spatial Analyst)
Резюме
Заменяет ячейки на растре, основываясь на значении большинства смежных с ними соседних ячеек.
Более подробно о том, как работает инструмент Фильтр большинства
Рисунок
Использование
Для того, чтобы замещение выполнялось, инструмент Фильтр большинства (Majority Filter) должен удовлетворять двум критериям: количество соседних ячеек с одинаковым значением должно быть достаточно велико (быть большинством или половиной всех ячеек), и эти ячейки должны быть смежными по отношению к центру матрицы фильтра. Второе условие, учитывающее пространственную связанность ячеек, минимизирует нарушение пространственной структуры ячеек.
-
Использование опции FOUR (четыре) для количества соседей позволит сохранить углы прямоугольных областей. Использование опции EIGHT (восемь) позволит сгладить углы прямоугольных областей.
-
Смежные ячейки определяются как ячейки, имеющие общее ребро с ячейками матрицы из восьми ячеек (опция EIGHT) или общий угол с ячейками матрицы из четырех ячеек (опция FOUR).
-
Если задано пороговое значение перемещения HALF (половина), и два значения встречаются как равные половины, замещения значения не произойдет в том случае, если значение обрабатываемой ячейки совпадает с значением одной из половинок. Использование опции HALF позволяет выполнять более экстенсивное фильтрование, чем использование опции MAJORITY.
-
Хотя критерии смежности аналогичны для ячеек растра, соприкасающихся с ячейкой через ребро и через угол, они подчиняются различным правилам для опций «большинство» (MAJORITY) и «половина» (HALF). При использовании матрицы из четырех ячеек (FOUR), чтобы было выполнено замещение значения, ячейки, соприкасающиеся с искомой через ребро или угол, должны всегда иметь две совпадающие соседние ячейки. При использовании матрицы из восьми ячеек (EIGHT), ячейка, соприкасающаяся через угол, будет замещена только в том случае, если все ее соседние ячейки имеют одно и то же значение, в то время, как значение ячейки, соприкасающейся через ребро, будет замещено, если есть три смежные с ней ячейки с одинаковым значением, включая одну ячейку вдоль ребра.
-
После нескольких запусков инструмента Фильтр большинства (Majority Filter) выходной растр будет стабилизирован (больше меняться не будет).
Синтаксис
Параметр | Объяснение | Тип данных |
in_raster |
Входной растр, к которому будет применен фильтр на основе большинства смежных соседних ячеек. Должен быть целочисленным. | Raster Layer |
number_neighbors (дополнительно) |
Определяет количество соседних ячеек, которое будет использовано в матрице фильтра.
| String |
majority_definition (дополнительно) |
Задает количество смежных (пространственно-связанных) ячеек, которые должны иметь одинаковое значение, чтобы произошло замещение значения.
| String |
Возвращено значение
Имя | Объяснение | Тип данных |
out_raster |
Выходной отфильтрованный растр. | Raster |
Пример кода
В этом примере фильтруется входной растр на основе всех 8 соседей, где больший эффект сглаживания будет иметь то же значение для замещения путем запроса половины фильтров.
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")
В этом примере фильтруется входной растр на основе всех 8 соседей, где больший эффект сглаживания будет иметь то же значение для замещения путем запроса половины фильтров.
# 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")