ポリゴンで抽出 (Extract by Polygon) (Spatial Analyst)

Spatial Analyst のライセンスで利用可能。

サマリー

頂点を指定したポリゴンに基づいて、ラスターのセルを抽出します。

レガシー:

このツールは非推奨であり、今後のリリースで削除される予定です。

[マスクで抽出 (Extract by Mask)] ツールにより、機能とパフォーマンスが向上します。

ポイントで抽出の図
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) の値としてマルチバンド ラスターが指定された場合、すべてのバンドが使用されます。

    マルチバンド ラスターから選択したバンドを処理するには、まず、[コンポジット バンド (Composite Bands)] ツールを使用して、それら特定のバンドから構成されるラスター データセットを作成します。 次に、その結果を [入力ラスター] (Python では in_raster) の値として使用します。

    デフォルトの出力形式は、ジオデータベース ラスターです。 出力形式として Esri Grid スタックを指定した場合、スタックの名前を数字で開始したり、名前にスペースを使用したり、9 文字を超える名前にしたりすることはできません。

  • 一連の X,Y 座標の代わりに、フィーチャクラスのポリゴンに基づいて抽出するには、[マスクで抽出 (Extract By Mask)] ツールを使用します。

  • ポリゴン オブジェクトは、1 つのパートまたは複数のパート (ポリゴン クラス) から構成されます。 後者の場合、1 つのポリゴン輪郭を描けるように、すべてのポリゴン パートが連続している必要があります。 不連続な複数のパートを含むポリゴン フィーチャに基づいて抽出するには、[マスクで抽出 (Extract By Mask)] ツールを使用します。

  • セルがポリゴンの内部か外部かを判定するには、セルの中心が使用されます。 中心がポリゴンのアーク内にある場合、そのセルの一部がポリゴンの外にあっても、そのセル全体が内部にあると見なされます。

  • ポリゴンの頂点の上限は、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 クラスを使用してポリゴン パートのリストを定義することで、複数のポリゴンのグループを指定できます。 これを実行するには、すべてのパートが連続していて、1 つの境界で囲まれるようにする必要があるので注意してください。 この場合のオブジェクトの形式は、次のような連続リストになります。

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