ArcGIS Desktopを使用してラスターのNoDataギャップを埋めますか?


9

ギャップのあるラスターがあります。ArcGIS 10.2 for Desktopを使用して、これらを周囲のセルの平均で埋めたいです。

私は「フォーカル統計」を試しましたが、ギャップだけでなく、すべてのセルの平均です。

ここで[Mosaic] .IsNull.Con([Average]、[Mosaic])を試しましたが、パッチを適用 する方法がわかりません/うまくいきません

Map ALgebraを試しましたが、10.2より前のバージョンを使用していたと思います。

私が欲しいもの。ギャップが埋められた偽のラスターを作成します。偽のラスターを使用して、ポイントを実際のデータで置き換えることなく、実際のラスターのギャップを埋めます。


構文が間違っています。([mosaic] .isnull).Con([average]、[mosaic])を使用してください
FelixIP

1
'Patching'リンクが15歳(2000年から2001年まで)のように見えることに注意してください。
師部2015

2
最近のラスターで大幅な変更が行われたため、多くの古い例では現在のバージョンで使用する意図は正しいものの間違った構文になっています。@crmackeyは正しい翻訳ですが、長方形ではなく円を使用します。より小さい寸法の場合はほとんど違いはありませんが、(比較的)大きい近傍領域の場合は、円と長方形の間に大きな違いがあります。
Michael Stimson

1
15年であっても、非常に関連性があります。フーバーは主題を非常によく知っていて、知っています。
FelixIP、2015

1
丁度。操作は同じですが、構文が変更されています。
Michael Stimson

回答:


9

これは機能します:

filled = arcpy.sa.Con(arcpy.sa.IsNull(in_raster),arcpy.sa.FocalStatistics(in_raster,
                        arcpy.sa.NbrRectangle(w, h),'MEAN'), in_raster)

「w」と「h」は検索範囲です。

これは、NoData領域でのみ焦点統計を行います。DEMからデータを消去して検証し、違いを見つけました。検索範囲が適切であることを確認する必要があります。


これをすべてラスター計算機に追加し、「in_raster」とwおよびhを変更するだけですか?フォーカルラスターの手動作成をスキップしてオンザフライで実行するため、フローは理にかなっていますが、何らかの理由で機能させることができません。
Steven Crisp

うまくいきました!どうもありがとうございます!"が追加されたところです。私はそうではありませんでした。ありがとう!
Steven Crisp

1
問題ない。@ MichaelMiles-Stimsonが指摘したように、1つの免責事項は、NbrCircle()を使用する方が良いでしょう。
crmackey 2015

whはセルのマップ単位ですか?
わからない場合-GIS

あなたは使ったほうが良いでしょうarcpy.sa.NbrCircle(radius, units)どこ単位はいずれかになります'MAP''CELL'
crmackey 2015

3

説明したように、フォーカル統計関数を使用して、ラスターのすべてのセルを平均化します。次に、ラスタ計算機のCon関数とIsNull関数を使用して、nullのセルのみを置き換えます。

Con(IsNull(<inputRaster>), <focalRaster>, <inputRaster>)

このソリューションで考えられる欠点の1つは、出力ラスターの周囲に不要な平均セル値が追加で表示される場合があることです。


評判やw / eが原因で賛成できませんが、この方法は、最初にフォーカル統計ラスターを作成してから、上記のコードを適用すると機能します。時間を節約するために、上記のコメントのように1行ですべて実行できることを願っています。私はこれらの物を数百持っています...
Steven Crisp

これは、焦点統計ラスターを保持するか、その場で解釈するかによって異なります...どちらの方法も基本的に同じです(+1と両方)。
Michael Stimson

3

Raster Calculatorを使用する必要があります。ESRIのサポートページの便利で関連性の高いコード行があります。HowTo:周囲のデータ値からの統計情報を使用して、ラスター内のデータ値を削除および置換しません。あなたの質問から、これはあなたがしようとしていることを正確に行うように聞こえますが、私が間違っている場合はお知らせください。これは、条件付きステートメントを使用して、周囲のセルからのデータがないセルの平均値を計算するラスター計算機のスクリーンショットです。 ここに画像の説明を入力してください

これらの処理が何百もある場合は、モデルビルダーでラスターイテレーターを使用することをお勧めします。これにより、次のようにすべてのラスターがラスター計算ツールに送られます。

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


2

LeonBで使用されているラスター計算方法を試してみましたが、メモリ不足エラーに遭遇しました。これは、私のシステム仕様を考えると驚くべきことです。小さなスタンドアロンpythonスクリプトを書いた- ここから変更-IDLEで私のために働いた...

import arcpy
from arcpy import env
from arcpy.sa import *

env.workspace="D:/Watershed/"

inRaster="D:/Watershed/tamtr14_1m"

arcpy.CheckOutExtension ("Spatial")

outCon=Con(IsNull(inRaster), FocalStatistics (inRaster, NbrRectangle (5,5, "CELL"), "MEAN"), inRaster)

outCon.save ("D:/Watershed/outCon")
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.