線のシェイプファイルと別のポリゴンがあります。2本以上のラインがポリゴンと交差する場合、それらを接続(スナップ)する必要がありますが、手動デジタル化中にこれが発生しない場合があります。これらすべてのエラーを見つけて修正する必要があります。私v.clean
はGRASS GISから使用し、多くの頂点を自動的にスナップしましたが、それは良かったですが、それらの切断された線のいくつかは私が与えた許容範囲から離れており、許容範囲を大きくしすぎると他のタイプのエラーが発生し始めます。
何か案は?
線のシェイプファイルと別のポリゴンがあります。2本以上のラインがポリゴンと交差する場合、それらを接続(スナップ)する必要がありますが、手動デジタル化中にこれが発生しない場合があります。これらすべてのエラーを見つけて修正する必要があります。私v.clean
はGRASS GISから使用し、多くの頂点を自動的にスナップしましたが、それは良かったですが、それらの切断された線のいくつかは私が与えた許容範囲から離れており、許容範囲を大きくしすぎると他のタイプのエラーが発生し始めます。
何か案は?
回答:
私の問題の理解は次のとおりです。
ポリラインの終点がポリゴンと交差する場合、同じポリゴンと交差するすべての追加のポリラインの終点に(頂点を追加または調整して)ポリラインを接続する必要があります。
一部のポリラインエンドポイントは、アンダーシュートであるためポリゴンと交差しませんが、上記のように接続する必要があります。
この答えはすでに与えられたものに基づいていますが、すべてのQGISコマンドを知っているわけではないので完全ではありません-他の誰かがこれに追加することができますか?
各ポリラインについて、エンドポイント座標を抽出し(ベクトル>ジオメトリツール>ノードを抽出して整理)、ポリゴン内にあるかどうかを計算します(ベクトル>リサーチツール>場所で選択)。
ポリゴン内にあるポリラインエンドポイントの場合、ポリラインの端をポリゴンの中心まで延長します(ベクター>ジオメトリツール>ポリゴンセントロイドを使用して、ポリゴンの中心を抽出します。ポイントとしてポリラインの頂点を追加し、ポイントからパスへのプラグインを使用して変更されたポリラインを再構築する前に、適切な番号を付けて頂点を追加します)
一部またはすべてのラインが正しく接続されている状況があるかもしれないと言いますが、これらの状況では(一致するポリラインの端点で識別可能)、延長するポイントとしてポリゴンの重心の代わりに一致する端点の位置を使用することを選択できますそのポリゴンの追加の未接続ポリライン。
ポリラインの終点がポリゴンの外側にある場合、ポリラインの端を最も近いポリゴンの中心まで延長します。繰り返しますが、GRASS v.distanceモジュールがトリックを実行するように見えますが、最も近いポリゴンを計算するかどうかはわかりません。
いくつかのカスタムアルゴリズムを使用してそれを行うことができると思います...どのように実装したいかを確認しますが、動作すると思います。
各線に対して、各終点に対して、終点の頂点に対して多角形の点を作成し、それを多角形にリンクします。
次に、各ポリゴンについて、複数のラインの終点がリンクされている場合、それらをすべて平均座標、またはおそらくポリゴンの重心にマージ(移動)します。
それは非常に簡単です。ただし、標準の演算子では使用できません。ArcGISでコーディングに数日かかると思います。
別のメモ、投稿した画像では、線の1つが多角形の外側にあります...各端点の頂点に最も近い頂点を見つけるだけで、これをより簡単に処理できます。必要に応じて、頂点が一方向にのみスナップされるようにします)、頂点の平均位置に移動できます。
興味深い問題!スナップを自動的に実行する方法を考えることはできませんが、少なくとも手動で修正する必要がある領域を特定する手順は次のとおりです。
状況(機能の数、この状況にある数とそうでない数など)によっては、これにより時間を節約できます。
編集:合計2のポリゴンを使用してラインレイヤーのサブセットを作成し、他のフィーチャを変更しないように、許容値が大きいポリゴンでクリーンアップを実行することもできます。
エンドポイントを取得したら、ポリゴンの重心を施設として、近くのラインのエンドポイントをターゲットとして、スパイダーダイアグラムを作成します。スパイダーダイアグラム分析を実行すると、各ポリラインのセグメントが作成されます。
これは、ポリゴンの外側で終了する場合でも機能します。QGISでこれを行う方法はわかりませんが、申し訳ありませんが、私はよく知っているESRIの製品でこれを行います。それは、whuberが最初の返信で「スター」を構築するよう提案したときに理解したことです。
QGISでこのような分析を実行する方法を知っている人がここにいると確信しています