ArcGIS Desktopでラスターイメージの境界をポリゴンとして取得しますか?


28

ArcGIS Desktopに長方形のラスターイメージがあります。

ラスター画像の範囲であるポリゴンをどのように生成できますか?

つまり、画像のエッジである単一の四辺形を持つポリゴンレイヤーが必要です。

単純にRaster-> Polygon変換を実行しようとしましたが、これは画像のデータを使用してアウトラインを生成しようとします-必要なのは画像のエッジのアウトラインだけです。

ArcGIS Desktop 10を使用しています。

回答:


33

Spatial Analystがあれば、次のことができます。

  1. Raster Calculatorを使用して、ラスタに0を乗算して、定数値のラスタを作成します。(必ず整数型に変換しないと、ステップ2は機能しません)
  2. ラスタ→ポリゴンツールを使用して、手順1の結果をポリゴンに変換します。

別の解決策:

3D Analystライセンスをお持ちの場合、3D Analyst> Conversion> from rasterからRaster Domainツールを使用できます(ただし、smooth機能はありません)


12

3D AnalystのRaster Domainツールを使用して、ラスタデータと同じ範囲のポリゴンを作成できます


GIS SEへようこそ!回答に参照を追加していただけますか?そうすれば、より強固になります。
RK

Raster Domainツールが完璧に機能しました!ラスターデータのアウトラインまたは境界を作成します。

1
このツールに関する警告の言葉-作成される境界ポリゴンは、ピクセルの外側のエッジではなく、ピクセルCENTERで開始および終了するラスターデータの範囲です。試してみたところ、ラスターの外側の境界ボックスが返されると思いましたが、ズームインすると、境界ボックスがピクセルの中心から始まることがわかります。
fbiles

実際には、IRasterDomainExtractor.ExtractDomainメソッドのパラメーターがあり、ピクセル/セルの中心を使用するか外縁を使用するかを制御します。
プレストン

これは完璧です!1つのツールと、ラスターのポリゴンアウトラインがあります。ありがとう!
user3281667

11

単純にデジタル化するのはどうですか?クリック-クリック-クリック-クリック完了。


8
このオプションがなぜ反対票を投じられたのかはよくわかりません。エクステントコーナーの座標を見つけ、それらの座標に頂点を作成できます。分析にも使用できます。表示専用の場合は、クリッククリッククリッククリックでうまくいきます。
バルトーク

3
ラスタは、不規則な形状とすることができ、、複雑さに応じて、かなり面倒なデジタル化の仕事につながる可能性があるため、私は言うだろう
フィル・ヘンリーを

4
しかし、OPはそれが長方形であると言った。私には非常に単純な仕事のようです。ズームインして正確にすることで、実際のラスターアウトラインとデジタル化されたアウトラインとの違いは、実際のアプリケーションでは無視できます。
マット

10

Data management ToolboxのBuild Footprintツールを使用できます。ラスタからモザイクデータセットを作成する必要があります。

ファイルジオデータベースに新しいモザイクを作成し、ラスターを追加します。

ArcMapでモザイクを開き、フットプリントを抽出します。

それが私がすることです。


8

この単純なpythonスクリプトを使用して、フォルダーに存在するすべてのラスターの範囲を持つポリゴンフィーチャクラスを作成します。これを使用するには、ArcToolboxでツールを作成するか、InFolderおよびDest(Destination)変数を変更するだけです。

import arcpy,os

InFolder = arcpy.GetParameterAsText(0)
Dest=arcpy.GetParameterAsText(1)

arcpy.env.workspace=InFolder
#The raster datasets in the input workspace
in_raster_datasets = arcpy.ListRasters()

arcpy.CreateFeatureclass_management(os.path.dirname(Dest),
                                   os.path.basename(Dest),
                                   "POLYGON")
arcpy.AddField_management(Dest,"RasterName", "String","","",250)
arcpy.AddField_management(Dest,"RasterPath", "String","","",250)

cursor = arcpy.InsertCursor(Dest)
point = arcpy.Point()
array = arcpy.Array()
corners = ["lowerLeft", "lowerRight", "upperRight", "upperLeft"]
for Ras in in_raster_datasets:
    feat = cursor.newRow()  
    r = arcpy.Raster(Ras)
    for corner in corners:    
        point.X = getattr(r.extent, "%s" % corner).X
        point.Y = getattr(r.extent, "%s" % corner).Y
        array.add(point)
    array.add(array.getObject(0))
    polygon = arcpy.Polygon(array)
    feat.shape = polygon
    feat.setValue("RasterName", Ras)
    feat.setValue("RasterPath", InFolder + "\\" + Ras)
    cursor.insertRow(feat)
    array.removeAll()
del feat
del cursor  

このコードの使用方法を詳しく教えてください。.ascラスターファイルで使用したいです。私の画像は異なるサブフォルダです。
GISデータ肉屋

1
jebからの回答は私のために働いています。@GIS Data Butcherソース全体をscript.pyファイルに保存し、ArcMap内のPythonウィンドウから実行します。Pythonウィンドウで次のコマンドを使用して、ファイルからスクリプトを実行できます。> execfile(r'd:\ temp \ script.py ')
Asad

完璧!! ツールがサブフォルダーを読み取る方法もあるのだろうか?
ラファエル

@raphael、確かに、標準のpython os.listdirまたはos.walkをスクリプトに実装するだけです。
jeb

@jebはい、私はコンセプトを得ました...ボット私はこれに非常に新しいので、それを機能させることができませんでした...あなたはいくつかの助けを与えることができますか?
ラファエル

4

また、簡単な方法は、再分類ツールを使用して、[分類]ボタンをクリックし、クラスの数を1に変更することです。[OK]をクリックします。現在、出力ラスターは、ラスターからポリゴンへの変換ツールを使用して簡単に変換できます。;)


4

ラスターを再分類してポリゴンに変換すると、時間がかかりすぎると思います。私の意見では、それを行う最も簡単な方法は次のとおりです。

  • maxX、maxY、minX、minYを取得します(これは、describeコマンドを使用してPythonで実行できます)。
  • 上記のエクステントと行/列の数を1にしてフィッシュネットの作成を実行します

多数のラスターがある場合、これはPythonで行う必要があり、数秒で数百のフットプリントを作成できます。


0

ArcCatalogでは、.gdbにラスターカタログを作成できます(データ管理ツール->ラスター)。管理されていなくても構いません。次に、右クリックしてロードします(ラスターがフォルダーにある場合は「ワークスペースからロード」。ラスターカタログをArcMapにロードすると、右クリック->データ->フットプリントをシェープファイルまたはフィーチャクラスとしてエクスポートできます。シェープファイルには、ラスターの名前が入力された「名前」フィールドがあります。

ラスターカタログにエクステントが自動的に表示されますが、ArcGISを使用していない人にエクステントを送信する必要がありました。


0

変換ツールツールボックスの[ラスターからポリゴンへ]ツールを使用します。ポリゴンの単純化ボックスのチェックを外してください。これはまさにあなたが望むものを作成します。


8
これは、元の画像の連続する等しい値のピクセルセットごとに1つの巨大なポリゴンを作成するだけではありませんか?
whuber

この後、常にディゾルブを追加して、範囲ポリゴンを取得できます。ただし、@ jebでリストされているPythonソリューションの方が高速であることに間違いはありません。
ジオジョン

0

「ラスタドメイン」ツールは、不規則な形状のラスタの周りにポリゴンを作成します。3dアナリスト拡張機能のライセンスが必要だと思います。


0

ArcCatalogを使用するのが最適なオプションです。使用可能なラスターからモザイクデータセットを作成します。モザイクに「値なし」を定義して、ラスターの背景がポリゴンに含まれないようにします。放射分析法を使用してフットプリントを構築します。ArcGISでMosaicデータセットを開き、フットプリントをshpファイルにエクスポートします。モザイクの境界を取得する素晴らしい方法...


0

DEMラスターのアウトラインを取得しようとしている場合は、次を実行する必要があります。

Spatial Analystと3d Analystがあれば、次のことができます。

  1. Raster Calculatorを使用して、0をラスタに乗算して定数値のラスタを作成します。
  2. 「INT(ツール)」を使用して、ステップ1の結果をラスター整数に変換します。これは次のステップに必要です。
  3. Raster to Polygonツールを使用して、手順2の結果をポリゴンに変換します(ラスター整数でのみ機能します)。

こんにちはSeamster02、GIS Stack Exchangeへようこそ:)書かれているように、これは受け入れられた回答gis.stackexchange.com/a/22016/108とそれほど違いはありません。
マットウィルキー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.