按多边形提取 (空间分析)

需要 Spatial Analyst 许可。

摘要

通过指定多边形顶点,基于多边形提取栅格像元。

旧版本:

此工具已弃用,并将从未来的版本中移除。

按掩膜提取工具提供了增强的功能或性能。

插图

按点提取图示
OutRas = ExtractByPolygon(InRas1,[Point(1.4,0.4),Point(1.4,4.6),Point(3.6,4.6),Point(5.6,2.6),Point(3.6,0.4),Point(1.4,0.4)],"INSIDE")

使用情况

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

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

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

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

  • 若要基于要素类中的多边形提取像元,而不是提供一系列 x,y 坐标对,则可以使用按掩膜提取工具。

  • 多边形对象可以仅包含一个部分,也可以作为一个多边形类包含多个部分。 对于后一种情况,多边形的各个部分必须连续,这样才能用一个多边形来呈现其轮廓。 若要基于包含多个断开部分的多边形要素提取像元,可使用按掩膜提取工具。

  • 可通过像元的中心来确定该像元是位于多边形的内部还是多边形的外部。 如果中心位于多边形弧的内部,则即使部分像元落在多边形之外,也会将此像元视为完全处于多边形之内。

  • 多边形最多可以有 1,000 个折点。 多边形折点必须按顺时针顺序输入。 第一个顶点和最后一个顶点必须相同,以使多边形闭合。 如果要使用多个多边形,那么这一点尤为重要。 这种情况下,如果每个多边形的最后一个点与起始折点不同,那么可通过直接连接至第一个折点来自动闭合这些多边形。 然而,结果可能会与您预期的不符,所以使用此方法时务必慎重。

    多边形的弧之间可以相交,但不建议您使用过于复杂的多边形。

  • 将为未选择的像元位置分配一个 NoData 值。

  • 如果输入栅格为整型,那么输出栅格也为整型。 如果输入为浮点型,则输出也将为浮点型。

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

参数

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

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

Raster Layer

由一系列折点(x,y 点坐标)定义的一个或多个多边形,用于标识要提取的输入栅格区域。 一个多边形部分的最后一个坐标应与第一个坐标相同,从而使多边形闭合。

指定多个多边形时,这些多边形必须是连续的。 逐一输入各个多边形的坐标。 通过定义最后一个坐标与第一个坐标相同来确保每个部分保持闭合。

点所使用的地图单位与输入栅格相同。

Point
提取区域
(可选)

标识要提取输入多边形内部还是输入多边形外部的像元。

  • 内部应选择输入多边形内部的像元并将其写入输出栅格。 多边形区域外部的所有像元都将在输出栅格中获得 NoData 值。
  • 外部应选择输入多边形外部的像元并将其写入输出栅格。 多边形内部的所有像元均会获得 NoData。
String

返回值

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

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

Raster

ExtractByPolygon(in_raster, polygon, {extraction_area})
名称说明数据类型
in_raster

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

Raster Layer
polygon
[point,...]

用于定义要提取的输入栅格区域的一个或多个多边形。

每个多边形部分都是由 Point 类定义的一系列折点。 指定为 x,y 坐标对的点所使用的地图单位与输入栅格相同。

单个多边形的对象形式如下:

  • [point(x1,y1), point(x2,y2), ..., point(xn,yn), point(x1,y1]

或者,也可使用 Polygon 类来定义一个多边形部分列表,进而指定一组多边形。 请注意,为实现此操作,所有部分必须是连续的,并且包含在单个周长形状中。 这种情况下的对象形式将会是一个连续的列表,如下所示:

  • [point(x1,y1), point(x2,y2), ..., point(xn,yn), point(x1,y1), point(x'1,y'1), point(x'2,y'2), ..., point(x'n,y'n), point(x'1,y'1), ...]

在任何情况下,每个多边形部分的最后一个坐标应与第一个坐标相同,从而使多边形闭合。

Point
extraction_area
(可选)

标识要提取输入多边形内部还是输入多边形外部的像元。

  • INSIDE应选择输入多边形内部的像元并将其写入输出栅格。 多边形区域外部的所有像元都将在输出栅格中获得 NoData 值。
  • OUTSIDE应选择输入多边形外部的像元并将其写入输出栅格。 多边形内部的所有像元均会获得 NoData。
String

返回值

名称说明数据类型
out_raster

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

Raster

代码示例

ExtractByPolygon 示例 1(Python 窗口)

本示例将基于定义的多边形坐标提取栅格的像元。

import arcpy
from arcpy import env
from arcpy.sa import *
polyPoints = [arcpy.Point(743050, 4321275), arcpy.Point(743100, 4321200), 
             arcpy.Point(743500, 4322000),arcpy.Point(742900, 4321800)]
env.workspace = "C:/sapyexamples/data"
extPolygonOut = ExtractByPolygon("soil", polyPoints, "INSIDE")
extPolygonOut.save("c:/sapyexamples/output/extpoly")
ExtractByPolygon 示例 2(独立脚本)

本示例将基于定义的多边形坐标提取栅格的像元。

# Name: ExtractByPolgyon_Ex_02.py
# Description: Extracts the cells of a raster based on a polygon.
# 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 = "soil"
polyPoints = [arcpy.Point(743050, 4321275), arcpy.Point(743100, 4321200), 
             arcpy.Point(743500, 4322000),arcpy.Point(742900, 4321800)]

# Execute ExtractByPolygon
extPolygonOut = ExtractByPolygon(inRaster, polyPoints, "INSIDE")

# Save the output 
extPolygonOut.save("c:/sapyexamples/output/extpoly02")