オープンソースツールを使用して衛星画像の画像境界/フットプリントを計算していますか?


10

以下に示すように、範囲/境界ボックスではなく、いくつかの単一レイヤーラスターイメージのポリゴンアウトラインを作成する必要がありますが、nodata値がない領域を作成します。

上記の質問への回答で、Image Boundaryプラグインについて言及しましたが、Ubuntuで実行されているQGIS 1.8.0 Lisboaでは見つかりません。

ツールはまだ利用できますか?

そうでなければ、ArcMapではなく、gdal、R、QGIS、GRASSなどのオープンソースツールを使用してこれを行う方法はありますか?


回答:


4

公式リポジトリにプラグインがある古いリポジトリを追加できます。

http://pyqgis.org/repo/contributed

画像境界プラグインには有効なピクセルを計算するオプションがありますが、画像はフルシーンである必要があります。CBERSまたはLandsatの場合、このプロセスでは最初の4つのコーナーが計算されます。画像には、イメージングのない領域(衛星センサーによってスキャン)の値がゼロのデータは必要ありません。

画像境界の作成者


こんにちは@lmotta、リポジトリリンクをありがとう。私が現在取り組んでいる画像はすべてNA値(またはQGISの価値ツールによると-3.4e + 38)のSAR画像です。ツールでnodata値を手動で追加できる場合、唯一のオプションとしてZEROを使用する代わりに、それはすばらしいでしょう。それ以外の場合は、最初にRでスクリプトを実行してNA値に新しいゼロの値を与えることができます。それは素晴らしいツールですが、ありがとう!
spib 2013年

画像境界の新しいリポジトリはありますか?あなたが提供するリンクは404です。たぶん以下ですか?:github.com/lmotta/imagefootprint_plugin
Aaron

画像境界のドキュメントを見つけることができる場所はありますか?
-Loonuh

11

私は最終的にこれを行う方法を見つけました:

ステップ1: gdalwarp -dstnodata 0 -dstalpha -of GTiff foo1 foo2

これは2つの重要なことを行います。宛先のデータなし(外枠)の値を0に設定し、アルファバンドを作成します。

ステップ2: gdal_polygonize.py foo2 -b 2 -f "ESRI Shapefile" foo3

2番目の手順では、手順1で作成したアルファバンド(バンド2)を使用して、そのバンドからシェープファイルを作成します。

これにより、多くの画像がある場合、正確なアウトラインを作成するために、bashスクリプトで簡単にスクリプト化できます。  


素晴らしい、このソリューションはプラグインやソフトウェアに依存していません。NoDataの影響を受けやすいラスターフットプリントを作成することは、GISタスクの1つであり、本来あるべきほど簡単ではありません。
チャーリーパー2018

この方法を使用すると、さまざまな色がグループ化されていることを表すと思われる、多角形でいっぱいのシェープファイルができあがります。これを回避して、いくつかのポリゴンがはいデータを表すようにするにはどうすればよいですか?
Loonuh

5

GDALプロジェクトの提案gdal_translateどおりに使用しました。

gdal_translate -b mask -of vrt -a_nodata 0 test.tif test.vrt
# Note the  -a_nodata 0 doesn't seem to work when the mask is input, so do another pass
gdal_translate -b 1 -of vrt -a_nodata 0 test.vrt test2.vrt
gdal_polygonize.py -q  -8 test2.vrt -b 1 -f "ESRI Shapefile" testdata.shp

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


1
GDALトランクバージョンで、元画像に対して直接gdal_polygonizeを使用できるようになりましたosgeo-org.1560.x6.nabble.com/...。ただし、データのないポリゴンを削除するには、ある程度のクリーンアップが必要です。
user30184

4

Image Boundaryプラグインも機能しなかったため、GDALでも同じアプローチを使用しました。それにもかかわらず、最初のステップを次のように変更した後、それは私のためにのみ機能しました:

ステップ1gdalwarp -srcnodata 0 -dstalpha -of GTiff foo1 foo2

Landsat8バンド(data = 0)を使用していて、-dstnodata関数を使用すると次のようになります。

帯域1データなし =「データなし」
帯域2シーン全体/エクステントの(アルファバンド)=「255」

とのに対し、-srcnodata機能私が取得します:

帯域1データなし =「データなし」
帯域2のみ有効なデータのために抽出ポリゴンにできないデータ=「データなし」と有効なデータと(アルファバンド)=「255」。

この動作の背後にある理由(アルファの計算方法)を完全に理解することはできませんでしたが、これが同じ問題に直面している他の人に役立つことを願っています。


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