Clip(データ管理)またはExtract By Mask(Spatial Analyst)はより効率的ですか?


12

Orthophotoを郡の境界にクリップダウンしようとしています。マスクによる抽出ツールを使用していますが、このプロセスは約12時間実行されています!すでに2サイクルを経ているので、これが各バンドであると想定しています。私がそれについて間違っているなら、誰かが私を修正できますか?

Data ManagementのClipはより良く(より速く)機能しますか?精度はどうですか?

私は常にマスクによる抽出を使用しようとしましたが、これには時間がかかりすぎます。


ラスターをポリゴンのアウトラインにトリムするには、マスクによる抽出ではなく常にクリップを使用しましたが、かなり高速です(数時間ではなく、数分です)。結果の「精度」が意味することを明確にできますか?
エリカ14

一度データ管理でクリップツールを使用したことがありますが、これは降水ラスターであり、作業していたより大きな領域で使用することを目的としていました。それは学校の宿題であり、彼らはそれがうまくいかないだろうと述べました。
user26133 14

私の知る限り、Clipはラスター値の内容を変更しません(また、マスクによる抽出も行いません)。したがって、クリップではなく、分析される空間領域が小さいために不正確な分析値を参照しているだけかもしれません。データに影響するプロセス。オルソフォトでは、背景ではなく分析に使用しない限り、これは問題になりません。
エリカ14

2
クリップは長方形の領域(エンベロープ)のみを実行しますが、マスクによる抽出は不規則/マルチパート/ドーナツポリゴンに抽出されます。エクステント内のデータのみにクリップを使用する場合ははるかに高速ですが、不規則な形状にトリミングする必要がある場合は、マスクによる抽出を使用します。
マイケルスティムソン14

4
実際、クリップも不規則な形状をします。ラスターをクリップするshpファイル内のポリゴンを選択し、[ジオメトリをクリップするために入力フィーチャを使用]ボックスをオンにすると、shpファイル全体の長方形の範囲ではなく、ポリゴンの形状が取得されます。
ecologist1234

回答:


19

2つの方法の間で速度と品質がどのように異なるかを判断するテストを実行しました。結果は次のとおりです。

入力データ

  1. .img形式の4バンドNAIP DOQQイメージ(349.34MB)
  2. マスク/クリッパーとして使用されるフィーチャクラス

ここに画像の説明を入力してください

性能

3つの試行が実行され、ベンチマークされました。Clip(データ管理)メソッドは、Extract by Mask(Spatial Analyst)メソッドよりも大幅に高速です。

ここに画像の説明を入力してください

品質

両方のエクステントは、NoData値と同じでした。ただし、視覚的評価では、マスクメソッドによる抽出によってピクセル配置がわずかに変更されたことが示されました。これは、何らかのタイプのリサンプリングの結果と思われます。クリップ操作のピクセル配列は、元の入力画像と同じでした。


# Import system modules
import arcpy, time, os
from arcpy import env
from arcpy.sa import *

env.overwriteOutput = 1

# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")

# Set local variables
inRaster = r'C:\temp\naip2011.img'
inMaskData = r'C:\temp\fgdb.gdb\clipper'
outws = r'C:\temp'
out1 = os.path.join(outws, 'extractbymask.img')
out2 = os.path.join(outws, 'clip.img')

#############TRIAL 1: EXTRACT BY MASK#########################################
start = time.clock()

# ExtractByMask
outExtractByMask = ExtractByMask(inRaster, inMaskData)

# Save the output
outExtractByMask.save(out1)

end = time.clock()
total = end - start

print "The extract by mask method took:  %s seconds" % round(total, 3)

###############TRIAL 2: CLIP#################################################
start = time.clock()

# Clip
arcpy.Clip_management(inRaster, "#", out2, inMaskData, "", "ClippingGeometry")

end = time.clock()
total = end - start

print "The clip method took:             %s seconds" % round(total, 3)

1
素晴らしい答えです!私は専門家の統計学者であると主張していませんが、minitabをいじっていたので、2サンプルのt検定でタイミングを確認しました。;)
ホーンバイド

3
報告によると、マスクによる抽出メソッドが何らかの方法でオリジナルを変更した場合、おそらく適切なマスク、つまり、元のラスターと正確に位置合わせされたマスクでは実行されませんでしたこれにより、オリジナルのリサンプリングが強制され、追加の計算負荷が生じますが、タイミング比較は状況の公正な評価ではないことも示唆しています。実際、クリッピング手順はマスクを作成して適用することから始まる可能性が最も高いため、クリッピングだけではマスクによる抽出よりも効率がやや劣ると予想されます。
whuber

1
あなたの貢献が永久に削除されたままにならないことを願っています、アーロン:有用な情報が含まれています。理想的には、正確に登録されたマスクのタイミングを含めるように更新できる場合、それは模範的な答えになるでしょう。(誰が知っている、その結果は私の憶測にも
反する
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.