QGisでポリゴンを使用するヒートマップまたはコロプレスマップを作成するにはどうすればよいですか?


12

QGISのヒートマッププラグインで遊んでいますが、ポリゴンだけでなくポイントも使用する同様のプラグイン/ツールを使用してヒートマップを作成できるかどうか疑問に思っていますか?

ヒートマッププラグインがポイントで行うのとほぼ同じ方法で、データの密度の表現を取得したいと思います。

次の画像は、私の希望する結果の概略図です。

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


3
ポリゴンの重心を生成し、それらからヒートマップを構築することを考えましたか?
アンディティリア

1
データに関する詳細情報が役立ちます。ポリゴンは何を表し、どのように分布していますか?サンプル写真を投稿できますか?
アンディティリア

@andytilia:重心は、ポリゴンのカバレッジを正確に表していません。ポリゴンは、1200m2の領域内でのリソースの使用を表しています。いくつかのポリゴンは小さなベリーパッチを表し、他のポリゴンはカリブーとムースの生息地を覆っている巨大なポリゴンです。私は六角形のグリッドをビニングしてからオーバーラップをカウントしています...しかし、私はほとんど初心者なので、そのテーマについて理解できる良いチュートリアルを見つけることができませんでした。
NWTアダム

1
QGISヒートマッププラグインqgis.spatialthoughts.com/2012/07/…を
rkm

数値はあなたにとって何か意味がありますか、それともきれいで明確な視覚化を探していますか?
暗闇

回答:


5

ランダムポイントのセットをポリゴンに生成できるかもしれませんが、そのためのQGISツールがありますか?ポリゴンが重複している場合、この領域でのポリゴンの密度は高くなります。次に、ポイントにヒートマップを使用します。結果はそれに依存するため、最適なポイント数を見つけるために複数のラウンドを実行する必要があります。

データがいくつかの生息地の分布を示しており、それがとにかくあいまいな場合、これは1つのポイントが約1つの標本を反映する現実の世界の状況に最も近い可能性があります。


1
+1素晴らしいアイデア。追加するのは、ロケーションでポイントデータと六角形のポリゴンと結合し、一致しないフィーチャを取り除き、その中にポイントを生成することです。そうすることで、単一のポイントが他のすべてのポイントに埋もれてしまうことはありません。
ロマ

これは最良の結果をもたらすようです。ソリューションを提供してくれたすべての人々に感謝します。多くの良い解決策があるように思えるので、私はたった一人に賞金を与えるのは気分が悪いです!
NWTアダム

6

私があなたの質問を正しく理解していれば、以前に似たようなことをしたことがあります。私がやったことを覚えておかなければなりませんでした。

これは、ポリゴンが重なっていて、同じレイヤーではない場合に機能します。それらが同じレイヤー上にあり、可能な場合は、それらを別のレイヤーに移動します。ターゲットレイヤーが値のいずれかを継承しない場合。

使用するキープロセスがある場所で属性を参加の下でベクトル>データマングメントのメニュー。ここでは、六角形のフィールドをターゲットレイヤーとして指定し、結合レイヤーをポリゴンの1つとして指定します。結果のレイヤーに名前を付け、[ すべてのレコード保持 ]のラジオボタンをオンにします。

結果のレイヤーは、六角形レイヤーのコピーで、ポリゴンレイヤーと交差したすべてのセルが含まれているはずです。次に、インタレーションのために、最後に生成されたレイヤーをターゲットレイヤーとして使用し、次のポリゴンレイヤーを結合します。結果のレーザーを取り、すべてのレイヤーに参加するまで次のレイヤーに参加します。

最終レイヤーは、前のレイヤーのすべての属性フィールドを継承している必要があり、その多くはNULLとなる場合があります。

ここで、シェープファイルの内臓のいくつかを再生する必要があります。したがって、シェープファイルとしてレイヤーを保存していない場合は、ここで保存してください。QGISのワークスペースからレイヤーを削除します。

OpenOffice Calcでシェープファイルの* .dbfファイルを開きます。Excelは使用しないでください。それはファイルを破壊し、それは役に立たない、その難しい方法を学びました。また、データの順序を変更しないでください。ファイル内の行の順序にも非常に固有です。NULLがゼロでない場合は、ゼロになっていることを確認してください。慎重に交換してください。

次に、シェープファイルをQGISに挿入し、属性テーブルを開きます。これで、NULLではなくゼロが表示されるはずです。フィールド計算機を使用して、作業に割り当てられたフィールドを新しい列で合計します。

これで、対象フィールドと重複するすべてのフィーチャコレクションの値をある程度の精度で表示する合計フィールドが作成されました。シンボル機能を使用して、合計フィールドの値に基づいてポリゴンを色付けして、コロプレスマップを作成できます。

ファイル内の未使用フィールドをすべて削除する場合。Calcでdbfファイルを再度開き、不要な列を自由に削除してください。個人的には、私が頻繁に行うように、この方法でシェイプファイルに慣れることを学ぶことをお勧めします。


残念ながら、同じレイヤーで何百ものポリゴンがオーバーラップしています。これらを数百のレイヤーに分けずに、これを回避する方法を見つけることができますか?
NWTアダム

1
PostGIS(使用する場合)でポリゴンオーバーレイを作成して、重複するポリゴンを分割できます。gis.stackexchange.com/questions/83/… おそらく、より優れたSQL-fuを持っている人がここで私たちを助け、結果として生じるpolysが値を継承する方法を手伝うことができるでしょう。
RomaH

1
私が強くお勧めするもう1つのオプションは、問題に対する正確なアプローチを再考する時が来たということです。どのデータをマップしようとしていますか?値がポリゴン全体で均一であると仮定する理由はありますか?重なり合うポリゴンには実際に累積的な効果がありますか?これらのことを示唆する十分な証拠がない限り、あらゆる種類の予測モデリングにこのマップを使用することは不安定な場合があります。考えてみてください。正しい解決策があるかもしれませんが、それをモデル化またはマップするより良い方法を見つけるかもしれません。
RomaH

1
PostGISの提案をありがとう。私はそれを見ていきますが、PostGISの使用方法を知るようになりました。質問を再評価することについては...あなたの言うことはわかりますが、私たちが表現しようとしているものを他にどのように視覚化できるかわかりません。私たちのデータは、コミュニティの長老とリソースユーザーが文化的観点から生産的または重要であるとマップするすべての領域を表しています。値マップはポリゴン全体で均一ではないが、マップで表現したいポイントには十分近いことを理解しています。
NWTアダム

1
qgisのマニュアルには何でもいいです。特に、シェープファイルの// tons //を扱うようになったら、非常にイライラすることがあります。SQL-fuを使用して後悔することはありません。postGISプラグインまたはGRASSプラグインを使用してください(以下の回答を参照してください:gis.stackexchange.com/a/42188/7689)。
egbutter

4

これは、ラスタを使用した一般的なワークフローです。QGISでそれを達成するための詳細がわかりません。

  1. 交差ツールを使用して、ポリゴンの重複領域の新しいベクターレイヤーを作成します
  2. オーバーラップレイヤーを含むベクターレイヤーをラスターに変換する
  3. ラスタ演算(おそ​​らく加算)を使用して、ラスタを結合します
  4. 結果は、ヒートマップのように見えるラスターでなければなりません

アルファ/ヌル値および/またはレイヤーの透明度により、任意のベースマップにラスターをオーバーレイできます。


このワークフローを実行した後、新しいラスターの範囲を覆う大きな灰色のブロックが残っています。これをヒートマップのようにするにはどうすればよいですか?
NWTアダム

1
最終ラスターのピクセルに異なる値が割り当てられていますか?いくつかの考え:ラスタを作成するときに、より細かい解像度(より多くのピクセル)を指定する必要がある場合があります。ラスターは同じサイズと解像度でなければなりません。結果のラスタ​​ーのカラーマップを拡大または変更して、値が大きいほど明るい色を表示する必要がある場合があります。

さて、カラーマップを設定しましたが、青(値0)と赤の値(2)の2色しか得られません。赤の値は、ベクターの元のレイヤーとオーバーラップレイヤーの領域をカバーします。レイヤーがラスタライズされたときに、各ポリゴンではなく、それぞれ1の値が与えられたと推測しています。次に、ラスターが追加されたとき、合計値は2に等しくなりました。レイヤーレベルではなく、ポリゴンレベルで値を維持/追加するにはどうすればよいですか。
NWTアダム

より細かい解像度のラスターが役立つはずです

より細かい解像度のラスターを作成するにはどうすればよいですか?
NWTアダム

4

代わりにこれを試してください。要件に合う場合は、データセットの計算ソリューションではありませんが、単にインフォグラフィックソリューションを探している場合は、代わりにこれを試すことができます。

六角形のセルをターゲットとして、ポイントデータを結合として、場所ごとに属性を結合します。すべての機能を保持することを選択します。継承された値が必要な色のセルにシンボルを設定し、透明度を50%などに設定します。

次に、レイヤー上の円ポリゴンを使用して、シンボルを同じ色と透明度に設定します。円ポリゴンをセルポリゴンの前に配置します。これにより、値が増加するにつれて彩度が増加するように見えます。

必要に応じて、すべてのポリゴンの線を抽出し、上部にオーバーレイして、サブレイヤーのアウトラインが他のレイヤーによって色付けされないようにすることもできます。

最適なソリューションを見つけるには、色と透明度を試してみる必要があります。同じ色が最高に見えますが、実験的です。


4

GRASSプラグインを使用することをお勧めします-QGISの機能はかなり制限されています(そして、GRASSなどのソフトウェアが既に存在するのに、なぜPythonでホイールを再発明するのですか?):

v.in.ogr.qgis

[ポリゴンに既に値があるかどうかによって、次の2行が必要になる場合があります]

v.db.addcol 
v.db.update_const 

これは我々がどこであるポリゴンに重複を追加し、その後、ラスタを作るそれらの列に基づいて、

v.to.db ... qcolumns=sum(col_with_polygon_value)
v.to.rast.attr

v.out.ogr [r.out.ogr]

3

単純なQGISでは注意が必要な場合があります。カスタムスクリプトが必要な場合や、PostGISやSpatialiteなどの空間データベースを使用する場合があります。PostGISでポイントの通常のグリッドを作成するか、CSVテキストファイルとして生成してインポートします。次に、st_bufferを使用して各ポイントの周囲に円を描画するか、ST_MakeEnvelopeを使用して四角形を描画し、各バッファーのすべての重複領域をカウントします。「データなし」を意味する場合は、おそらくすべて0の値を削除する必要があります。最後に、カウンタをWeightフィールドとして使用して、グリッドのヒートマップを実行できます。

最適な解像度を見つけるには、さまざまなグリッド解像度で実験する必要があります。本質的には、ベクトルの世界に留まるケビンによって提案されたラスターアプローチに非常に似ています。

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