QGISを使用してベクトルポイントデータ内のクラスターを識別しますか?


34

田舎のブロードバンドデータポイントのベクトルデータセット(どのくらい高速かなど)があり、同様の特性を持つポイントのクラスターがあるかどうかを調べ、それらを囲むポリゴンをプロットしたいと思います。

たとえば、1つのPostGISデータセットに45,000ポイントがあり、ランドスケープに分散している場合があります。互いにx km以内にあり、速度がy kbps未満であるクラスターを識別し、適格なクラスターごとに凸包を生成します。

たとえば、QGISでこれを行う簡単な方法はありますか?


3
ブロードバンドの性質に注意を払うことをお勧めします。高速は都市部内で発生します。産業コングロマリット。CO、モデム、その他のファイバー/ケーブル/ DSLインフラストラクチャから道路に沿って放射します。特定のセルタワーからのブロードキャスト(「ブロードバンド」の定義に応じて)。このように高い速度は、クラスタに表示され、下側の速度は次のようになりますギャップクラスターインチ 特に、凸包が低速領域のまともな記述になることはまずありません。見つけた「クラスター」をどのように解釈するのかを知っておくとよいでしょう。
whuber

助けてくれてありがとう。私は、より多くの農村地域を研究しています。有線ブロードバンドのアーキテクチャは、街頭キャビネットや電柱への直接給電線の分布、およびその地域の地理などにより、より異常な状況を引き起こす可能性があります。その結果、ローカルソリューションを構築するための便利な出発点となり、戦略を策定する上で重要なステップになるクラスターを見つけることができます。実際、都市部でもそれらを見つけることができます。これは、多くの場合、産業遺産や、鉄道線や川のような渡りにくいことが原因です。
エイドリアン

回答:


15

私はいくつかの提案からのビットを結合し、私自身のビットを追加し、私にとってうまく機能するソリューションを見つけました-そしてすべてはQGis内から!

最初にPostGis SELECTを実行して、正しい共通属性を持ち、互いにx km以内にあるポイントを見つけました。

SELECT DISTINCT s1.postcode、s1.the_geom、s1.gid FROM Broadband_data AS s1 JOIN Broadband_data AS s2 ON ST_DWithin(s1.the_geom、s2.the_geom、1000)WHERE s1.postcode!= s2.postcode AND s1.fastest_broadband <= 2000

(Manningの非常に優れたPostGis in Actionブックからかなりまっすぐに、自己結合を追加するだけです)

次に、Carson FarmerのManageRプラグインをロードし、レイヤーをインポートしました。ここから私が提案PAMクラスタリング処理に続いここでは、と凸包はfToolsを使用して秒単位で計算された上で形状ファイルに結果をエクスポート(カーソンは、周りを取得しません!)。


PostGIS in Actionの第1版は絶版になりました。以下は、第2版manning.com/books/postgis-in-action-second-editionへのリンクと、無料のmanning-content.s3.amazonaws.com/download/a / ...である最初の章へのリンクです。 PostGIS
MartinHügi17年

8

QGISソリューションではありませんが、私は個人的にSaTScanを使用した探索的分析を選択します。高速で、十分に文書化されており、広く適用されているため、起動時に問題が発生することはありません。ただし、45kポイントにはいくらかのRAMが必要になる場合があります。

Postgresから直接読み取ることができるかどうかはわかりませんが、dbfおよびテキストファイルから簡単にインポートできます。

分析の出力は、PostgresまたはQGISに簡単に読み戻すことができます。円形のクラスターまたは楕円を検索することを決定できます(データに特定のタイプの集落がある場合、たとえば、谷間の長い形状の都市/村などに使用すると便利です)。その後、ポリゴンまたは楕円を生成したり、クラスターのメンバーである場所のみを表示したりできます。

Google Earthで結果をすばやくプレビューするには、NAACCRのSaTScanからGoogle Earthへの変換ツールを使用することもできます。

重要なこと-モンテカルロシミュレーション(最低99、私が思う)を実行することを決定した場合、クラスターの統計的有意性についても何かを伝えることができます。このクラスターの解釈と正当化は、少なくとも過去20年にわたって空間科学で議論されてきたため、別の問題になります(私は思う;)。

高い値、低い値、または高い値と低い値のクラスターを探して、純粋に空間分析を実行することもできます。データに一時的な属性がある場合(毎日、毎週の集計)、いくつかの時空モデルを実行することは非常に興味深いと思います。


2
良さそう-良い答え
マッパーズ

5

SciPyにはクラスタリングパッケージ(Python用)があり、Pythonコンソールで使用したり、簡単なプラグインを作成してそれを実行したり、postgis内でPL / pythonを使用したりできます。

http://docs.scipy.org/doc/scipy/reference/cluster.html

解析後、fツールを使用して凸包を作成します。


私はPythonの経験がほとんどない単純なユーザーですが、見てみましょう-私は学ぶ必要があることを知っています!
エイドリアン

SciPyクラスタリングでは、ポイント間の空間的な関係が考慮されますか?
ラデク

1
ポイントのx座標とy座標に2つの共変量を追加するだけです。
ホセ

5

ここで RとGRASSを使用してやりたいことの似たような例があります。別の方法として、提案されているscipyのクラスタリングツールを使用し、この方法を使用して凸包計算を実行することもできます。


3

Ftoolsプラグインを試すことができます。 Vector> Geoprocessing Tools> Convex Hulls

にはオプションがCreate convex hulls based on input fieldあり、入力フィールドパラメータは入力ポイントの属性から取得する必要があります。


助けてくれてありがとう。凸包ビットはポリゴンを作成しますが、クラスターが存在するかどうか、またはクラスターがどこにあるかを識別しません。最初に、互いにx km以内のポイントを同様の特性に関連付ける方法を見つけたいと思います。クラスターの存在を一意に識別し、各クラスターのメンバーのpostgisテーブルの追加フィールドを更新するスクリプトを実行する必要があると思います。例えば、ドロネー三角形分割を作成し、三角形の辺が長いのxキロ未満ですが、私はそれを行うにはどのようにさっぱりだが、すべての点フィルタリング
エイドリアン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.