QGISを使用したラスタークラスタリング


10

各クラス内の空間クラスターに基づいて、分類されたラスターをポリゴンに変換する方法を探しています。クラスターを有効と見なすには、クラスの1つからのセルの最小パーセンテージで構成する必要があります。

例:クラス "1"の70%(またはそれ以上)のセルで構成される領域は、他のクラスに属する30%のセルと混ざっていても、クラス "1"のクラスターと見なされます。したがって、クラスタリング分析は、同じクラスのセル間の距離に基づく必要があります。

別のオプションは、特定のクラス内の最小数のセルと最大検索領域の定義に基づいてクラスタリングを行うことです。

例:指定された領域内に「クラス1」のセルが100個あると、クラスターと見なされます。  

クラスタリングに関連するほとんどのツールは、ベクトルに対してのみ機能するようです。SAGAツールのクラスター分析を見ましたが、それは私の目的に実際には合いませんでした。これを解決するためのアイデア、または役立つ他のツールはありますか?


ラスターをベクターに変換し、ベクタークラスタリングツールを使用できます。
csk

これはオプションですが、可能であればラスター形式で分析する方がはるかに簡単だと思います。ベクトルへの変換は、おそらく、ラスタセルの結合で詳細が失われるポリゴンを生成するか、または処理するポイントが多すぎる(ビッグデータセット)。
スピラン

3
私はこれがQGISソリューションではないことを知っていますが、PythonまたはRを使用して近傍関数を考え出して、各セルを調べ、近傍内の70%以上のセルがクラスに属している場合に新しいラスターを作成できますその後、そのセルはそのクラスに再分類されますか?
リアムG

それは確かにうまくいくかもしれません、ありがとう!Pythonは初めてですが、試してみる価値はあります。
Spiran

回答:


5

「ラスターロジック」でこの問題に対処したい場合は、いくつかのフィルターを検討することができます。最良の選択は、「バックグラウンド」値内の各クラスのピクセルの空間分布によって異なりますが、次の2つの解決策があります。

削除するパッチが比較的大きい場合は、「ふるい」を使用する必要があります(gGIS_sieve.pyに基づくQGIS 3.2のラスター>分析>ふるい)。

gdal_sieve.pyスクリプトは、指定されたしきい値サイズ(ピクセル単位)よりも小さいラスターポリゴンを削除し、それらを最大の隣接ポリゴンのピクセル値に置き換えます。結果は既存のラスターバンドに書き戻すか、新しいファイルにコピーできます。

「塩コショウ」効果のようなものがある場合(異なるクラスの多くの孤立したピクセルが、小さなパスごとに数ピクセルしかない場合)、多数決フィルターを使用する必要があります(たとえば、GRASS>ラスター> rの追加ツールに移動します。 neighbors> select "mode" option)このフィルタは境界に(わずかに)影響することに注意してください。

r.neighbors-各セルのカテゴリ値をその周囲のセルに割り当てられたカテゴリ値の関数にし、新しいセル値を出力ラスターマップレイヤーに格納します

必要に応じて、SAGAツール(SAGA>ラスターフィルター)で同じファイラー(マジョリティフィルター、ふるいクラス)と他のフィルター(形態)を見つけることができます。


これは実際に私がそれを解決したほとんどの方法でした。基本的には、グラスの近傍分析ツールを使用して、側面でいくつかの計算を行います。しかし、解決策を投稿するのを忘れてしまいました。入力radouxjuに感謝します。
Spiran 2019
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.