按掩膜提取 (Spatial Analyst)

需要 Spatial Analyst 许可。

摘要

提取掩膜所定义区域内的相应栅格像元。

插图

按掩膜提取工具图示
OutRas = ExtractByMask(InRas1, InMsk1, "INSIDE")

使用情况

  • 输入栅格中的其他属性(若有的话)将按照原样添加到输出栅格属性表。 根据所记录的属性,某些属性值可能需要重新计算。

  • 将多波段栅格指定为输入栅格(Python 中的 in_raster)值时,将使用所有波段。

    要处理一系列来自多波段栅格的波段,请首先使用波段合成工具创建由这些特定波段组成的栅格数据集。 然后将结果用作输入栅格(Python 中的 in_raster)值。

    默认输出格式为地理数据库栅格。 如果将 Esri 格网堆栈指定为输出格式,则堆栈的名称不能以数字开头、不能使用空格且长度不得超过九个字符。

  • 当为输入栅格掩膜指定多波段栅格时,将只在运算中使用第一个波段。

  • 输入栅格(Python 中的 in_raster)值和输入栅格或要素掩膜数据数据(Python 中的 in_mask_data)具有相同的像元大小,且像元对齐,则可将其直接应用于工具中。 在工具操作期间,系统不会对其进行内部重采样。

    如果像元大小不同,则输出像元大小将为输入的最大值,而输入栅格值将在内部用作捕捉栅格。 如果像元大小相同,但是像元未对齐,则输入栅格值将在内部用作捕捉栅格。 在执行提取操作之前,上述任一情况都会触发内部重采样。

    有关详细信息,请参阅像元大小捕捉栅格环境主题。

  • 默认情况下,如果掩膜输入为一个要素,则可使用像元大小和输入栅格值中的像元对齐(捕捉栅格)从内部将其转换为栅格。

  • 运行按掩膜提取工具时,如果在环境设置中指定了掩膜,则输出栅格仅包含位于环境掩膜和输入掩膜数据交集内区域的像元值。

  • 您可以使用分析范围(Python 中为 analysis_extent)参数为独立工具操作明确指定输出分析区域,或将覆盖环境设置作为工作流的一部分。 您可以通过输入值、选择显示范围、选择图层或浏览至输入数据集的方式指定范围。

  • 默认分析范围值是从输入栅格值和输入栅格或要素掩膜数据值的交集计算得出的。

  • 如果分析范围没有明确指定为参数值,则其会从分析环境设置中派生。

  • 有关适用于此工具的地理处理环境的详细信息,请参阅分析环境和 Spatial Analyst

参数

标注说明数据类型
输入栅格

从中提取像元的输入栅格。

Raster Layer
输入栅格数据或要素掩膜数据

用于定义要提取的像元格位置的掩膜数据。

它可以是栅格,也可以是要素数据集。

当输入掩膜数据为栅格时,将在输出栅格中为掩膜数据中的 NoData 像元指定 NoData 值。

当输入掩膜是要素数据时,如果输入栅格中像元的中心位于要素指定形状内,则会在输出中包含这些像元,而其中心落在要素周长之外的像元将会收到 NoData。

Raster Layer; Feature Layer
提取区域
(可选)

指定是选择位于输入掩膜定义的位置内部还是外部的像元,并将其写入输出栅格。

  • 内部将选择位于输入掩膜内部的像元,并将其写入输出栅格。 掩膜区域外部的所有像元都将在输出栅格中获得 NoData 值。 这是默认设置。
  • 外部将选择位于输入掩膜外部内部的像元,并将其写入输出栅格。 所有被掩膜覆盖的像元将接收 NoData。
String
分析范围
(可选)

定义待提取区域的范围。

默认情况下,范围是作为输入栅格值和输入栅格或要素掩膜数据值的交集计算得出的。 处理可能会超出 x 和 y 坐标范围,在此范围之外的像元将为 NoData。

如果未明确设置分析环境,则坐标以与输入栅格相同的地图单位指定。

  • 当前显示范围 地图视图 - 范围基于活动地图或场景。 仅在存在活动地图时,才可使用此选项。
  • 绘制范围 构造直角并完成草图 - 范围将基于在地图或场景上绘制的矩形。 此选项将在工程地理数据库中创建要素类并将图层添加至地图。 该要素类的坐标系将与地图相同。
    注:

    环境对话框中不提供此选项。 只能在具有范围数据类型的工具参数中或工具对话框的环境选项卡中找到此选项。

    注:

    当选中从“编辑”选项卡启用和禁用编辑编辑选项时,必须在编辑功能区选项卡上启用编辑才能绘制范围。

  • 图层范围 图层 - 范围基于活动地图图层。 使用下拉列表选择可用图层,或使用所有图层中数据的范围选项获取所有活动地图图层(不包括底图)的组合范围。 仅在存在具有图层的活动地图时,才可使用此选项。

    每个地图图层具有以下选项:

    • 所有要素 全选 - 图层中所有要素的范围。
    • 选定要素基于选定要素的区域 - 图层中选定要素的范围。
    • 可见要素 Extent Indicator - 图层中可见要素的范围。
      注:

      选定要素 基于选定要素的区域可见要素 Extent Indicator 选项中的范围仅适用于要素图层。

  • 浏览 浏览 - 范围基于现有数据集。
  • 剪贴板 粘贴 - 可在剪贴板中复制和粘贴范围。
    • 复制范围 复制 - 将范围坐标和坐标系复制到剪贴板。
    • 使用粘贴范围 粘贴 - 从剪贴板粘贴范围坐标和(可选)坐标系。 如果剪贴板值不包含坐标系,则范围将使用地图的坐标系。
    注:

    将使用与 ArcPy Extent 对象相同的格式和顺序从剪贴板中复制和粘贴范围坐标:x-min、y-min、x-max、y-max 和空间参考。

  • 重置范围 重置 - 将范围重置为默认值。
  • 手动输入坐标 - 坐标必须是数值,并且与活动地图的坐标系相匹配。
    警告:

    地图可能使用与输入的坐标不同的显示单位。 不支持使用主方向(N、S、E、W)。 在南纬和西经坐标中使用负号。

Extent

返回值

标注说明数据类型
输出栅格

包含从输入栅格中提取的像元值的输出栅格。

Raster

ExtractByMask(in_raster, in_mask_data, {extraction_area}, {analysis_extent})
名称说明数据类型
in_raster

从中提取像元的输入栅格。

Raster Layer
in_mask_data

用于定义要提取的像元格位置的掩膜数据。

它可以是栅格,也可以是要素数据集。

当输入掩膜数据为栅格时,将在输出栅格中为掩膜数据中的 NoData 像元指定 NoData 值。

当输入掩膜是要素数据时,如果输入栅格中像元的中心位于要素指定形状内,则会在输出中包含这些像元,而其中心落在要素周长之外的像元将会收到 NoData。

Raster Layer; Feature Layer
extraction_area
(可选)

指定是选择位于输入掩膜定义的位置内部还是外部的像元,并将其写入输出栅格。

  • INSIDE将选择位于输入掩膜内部的像元,并将其写入输出栅格。 掩膜区域外部的所有像元都将在输出栅格中获得 NoData 值。 这是默认设置。
  • OUTSIDE将选择位于输入掩膜外部内部的像元,并将其写入输出栅格。 所有被掩膜覆盖的像元将接收 NoData。
String
analysis_extent
(可选)

定义待提取区域的范围。

如果未指定,则默认范围为 in_raster 值和 in_mask_data 值的交集。

如果未明确设置分析环境,则坐标以与输入栅格相同的地图单位指定。

  • MAXOF - 将使用的所有输入的最大范围。
  • MINOF - 将使用的所有输入共用的最小范围。
  • DISPLAY - 范围与可见显示范围相等。
  • 图层名称 - 将使用指定图层的范围。
  • Extent 对象 - 将使用指定对象的范围。
  • 以空格分隔的坐标字符串 - 将使用指定字符串的范围。 坐标以 x-min,y-min,x-max,y-max 的顺序表示。
Extent

返回值

名称说明数据类型
out_raster

包含从输入栅格中提取的像元值的输出栅格。

Raster

代码示例

按掩膜提取 (ExtractByMask) 示例 1(Python 窗口)

本示例将从栅格内提取由输入面 shapefile 要素类所定义的掩膜内的像元。

import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outExtractByMask = ExtractByMask("elevation", "mask.shp", "INSIDE")
outExtractByMask.save("C:/sapyexamples/output/maskextract")
按掩膜提取 (ExtractByMask) 示例 2(独立脚本)

此示例从栅格中提取所有位于输入面 shapefile 要素类定义的掩膜外部区域的像元,并保持输入栅格的输出范围。

# Name: ExtractByMask_Ex_02.py
# Description: Extracts the cells of a elevation raster for all areas outside of the mask features.
#     Keeping the output extent of the input elevation raster. 
# 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 = "elevation"
inMaskData = "mask.shp"
extraction_area = "OUTSIDE"
analysis_extent = "elevation"


# Execute ExtractByMask
outExtractByMask = ExtractByMask(inRaster, inMaskData, extraction_area, analysis_extent)

# Save the output 
outExtractByMask.save("C:/sapyexamples/output/extractmask")

许可信息

  • Basic: 需要 Spatial Analyst
  • Standard: 需要 Spatial Analyst
  • Advanced: 需要 Spatial Analyst

相关主题