ポリゴンで抽出(Extract by Polygon) (Spatial Analyst)
サマリ
ポリゴンに基づいてラスタのセルを抽出します。
使用法
-
一連の X、Y の組の代わりに、フィーチャクラスのポリゴンに基づいて抽出するには、[マスクで抽出(Extract By Mask)] ツールを使用します。
-
セルがポリゴンの内部か外部かを判定するには、セルの中心が使用されます。中心がポリゴンのアーク内にある場合、そのセルの一部がポリゴンの外にあっても、そのセル全体が内部にあると見なされます。
-
ポリゴンの頂点の上限は、1,000 です。ポリゴンの頂点は、時計回りの順番で入力する必要があります。複数のポリゴンを使用する場合は、ポリゴンを閉じるために最初と最後の頂点が同じである必要があります。最後のポイントが同じでない場合、ポリゴンは自動的に閉じられます。ポリゴンのアークは他のアークと交差してもかまいませんが、複雑なポリゴンは推奨しません。
-
選択されていないセル位置には NoData 値が代入されます。
-
入力としてマルチバンド ラスタを指定すると、新しいマルチバンド ラスタが出力として作成されます。入力マルチバンド ラスタの各バンドは個別に解析されます。
デフォルトの出力形式は Esri Grid スタックです。Esri Grid スタックには、数字で始まる名前、スペースを含む名前、9 文字を超える名前は使用できません。
-
入力が、4 バンド以上のマルチバンド ラスタから作成したレイヤである場合、抽出操作ではレイヤによって読み込まれた(シンボル表示された)バンドだけが考慮されます。そのため、出力マルチバンド ラスタには、入力レイヤの表示で使用されるバンドに該当する 3 つのバンドしか出力されません。
-
入力ラスタが整数の場合、出力ラスタも整数になります。入力のいずれかが浮動小数点値である場合、出力は浮動小数点値になります。
構文
パラメータ | 説明 | データ タイプ |
in_raster |
セルを抽出する入力ラスタ。 | Raster Layer |
polygon [point,...] |
抽出する入力ラスタのエリアを定義するポリゴン。 それぞれのポリゴン パーツは、Point クラスによって定義される頂点のリストです。オプションで、Polygon クラスを使用して、ポリゴン パーツのリストを定義できます。 ポイントは、X、Y 座標の組として指定されます。オブジェクトの形式:
ポリゴンを閉じるため、最後の座標は最初の座標と同じである必要がありますので、注意してください。 | Point |
extraction_area (オプション) |
入力ポリゴンの内部と外部のどちらのセルを抽出するかを識別します。
| String |
戻り値
名前 | 説明 | データ タイプ |
out_raster |
入力ラスタから抽出したセル値が格納される出力ラスタ。 | Raster |
コードのサンプル
次の例では、定義されたポリゴン座標に基づいて、ラスタからセルを抽出しています。
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")
次の例では、定義されたポリゴン座標に基づいて、ラスタからセルを抽出しています。
# 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)]
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute ExtractByPolygon
extPolygonOut = ExtractByPolygon(inRaster, polyPoints, "INSIDE")
# Save the output
extPolygonOut.save("c:/sapyexamples/output/extpoly02")