QGISでx km以内に他のポイントがないシェープファイル内のポイントを特定する


11

これはおそらく素朴な質問ですが、私はQGISの新規ユーザーとして苦労しています。

非常に大きなシェープファイルを持っています(275,000ポイントですが、必要に応じて処理を高速化するためにこれを約10個のサブリージョンに分割できます)。

200メートル以内に他のポイントがないすべてのポイントを識別し、ファイルのフィールドに値「unique」を使用してそれらの各ポイントをコーディングします。

ローカルクラスタの一部である他のすべてのポイントについては、それらを「クラスタ化された」ものとしてコーディングします。

それを達成したら、各クラスターに対してランダムに1つだけを選択して、データセットに保持し、他のクラスターは破棄したいと思います。

現在、ステップ1を達成できていないため、サポートを歓迎します。

回答:


0

QGISのNNJoinプラグインを使用して自己結合を試すこともできます。

入力レイヤーの各フィーチャに対して、最も近いフィーチャ(自己結合の場合は自身を除く)を見つけ、生成されたデータセット内の最も近いフィーチャの距離とすべての属性を含めます。データセットには少し時間がかかります(約175000の機能を持つポイントデータセットで試しましたが、数分かかります...)。


9

[ベクター]> [分析ツール]> [距離マトリックス]、および結合を使用して、要求を達成できます。

私が使用するQGISサンプルデータ例証するために、空港の層を。これは小さなデータセットであるため、275000ポイントのシェープファイルでどのように動作するかわかりません。

1.レイヤーを宛先とターゲットの両方として使用して距離マトリックスを作成します。

「最も近い(k)ターゲットポイントのみを使用する」にチェックを付けて、1に設定することを忘れないでください。

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

2.区切りテキストレイヤーを追加してCSVを開きます

区切り文字として「コンマ」を選択し、ジオメトリ定義をジオメトリなしとして設定します

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

3.新しく作成されたテーブルを使用して、元のレイヤーに結合を作成します

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

4.フィールド計算機を使用して、必要な値をフィールドに入力します

結合により、airportsテーブルの属性内から距離テーブルの値にアクセスできるようになりました。したがって、新しいフィールドを作成し、距離マトリックス値に応じて「クラスター化」および「一意」の値を設定することは非常に簡単です。サンプルデータのため、値1200000(1200 km)を使用しているため、ケース(200)に適合させる必要があります。

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

最後に、レイヤーにはpoint_typeという新しいフィールドがあり、最も近いポイントまでの最小距離に応じて値が異なります。

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


それはエレガントなソリューションのように見えます。しかし、私は1つの複雑さを抱えています。IDENTICALの場所を持つポイントがいくつかあることを知っています(これらは、元のデータキャプチャ中の名前の同義語からの結果です)。あるケースでは、同じポイントで3を特定しました。あなたのソリューションは、すべてのポイントが一意に配置されていることを(合理的に)想定していると思います。最初に同じ場所のポイントを排除するためにカバレッジをスクリーニングできる明白な方法はありますか?
リーベッテネー14年

@LeighBettenayこの回答が元の質問に対応している場合、回答者の努力に報いるためにそれを受け入れ(緑色のチェックマーク)、新しい質問として追加要件を調査/提案する必要があると思います。素晴らしい最初の質問のために+1!
PolyGeo

@PolyGeo申し訳ありませんが、このフォーラムは初めてで、プロトコルがわかりません。すばらしい答えを「緑のカチカチ」に満足しますが、悲しいことにどのように知らないか!
リーベテナイ14年

質問の投票の下にある灰色のチェックマークをクリックするだけです(質問の左隅)。ありがとう
アレクサンドル・ネト14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.