web-dev-qa-db-ja.com

複数の線分を1つの線に結合する-GIS

デジタル化してベクターレイヤーに変換したマップがあります(川のみ)。問題は、ベクトル化によって川ごとに多数のセグメントが生成され、それらが異なる特徴として表示されることです(それぞれに複数の直線セグメントがある場合がありますが、川全体をカバーしているわけではありません)。私が探しているのは、極値が特定の距離内にあるすべてのセグメントを1つのフィーチャ(ポリラインだと思います)にマージするツールです。私はQGisとGRASSプラグインを使用しています。 v.clean.snap、v.build.polylinesを試しましたが、実際に行をマージすることはできませんでした。どんな助けでも大歓迎です!

9
LittleFish

プログラミング言語でGEOSライブラリを使用して、場合によってはコマンドラインを使用してそれを行うことができます。私の場合、rgeosライブラリを使用してRで実行していました。

require(rgdal)
require(rgeos)
lines <- readOGR("f:/dir", "itineraris")
# grouping line features by lines$ITINERARI
lines2 <- gLineMerge(lines, byid = lines$ITINERARI, id = lines$ITINERARI)
writeOGR(lines2, "f:/dir", "itineraris_merged", driver="ESRI Shapefile")

注意: ドキュメント "具体的には、交差する端点で線分を結合します"の注記から、線は機能は連続している必要がありますが、IDでマージする場合にもこれが当てはまるかどうかは明確ではありません。

5
TMS

この質問に出くわした他の人のために:

Roadgraphプラグイン(Shortest Path)またはPointsToRouteスクリプトを使用できます。どちらかの端でポイントを選択し(またはPoints2Routeの場合は、複数のパスから指定するポイントを追加します)、それ自体のレイヤーにエクスポートします。

133のマップに関する限り、PointsToRouteスクリプトを変更して、同様のヘビーデューティーな状況に合わせて、線のレイヤーを自動的にステップスルーし、それらのエンドポイント間のルートを見つけました。クリーンアップして、すぐにgithubで公開できるかどうかを確認します。

PointsToRoute: https://github.com/anitagraser/QGIS-Processing-tools/blob/master/1.1/scripts/points_to_route.py

ShortestPath(Roadgraph):これはQGISプラグインマネージャーによって有効になります。 QGISの最新バージョンでは、プラグインがそれ自体を「最短パス」と呼んでいるにもかかわらず、Vector->RoadGraph-> Settingsメニューによって構成されていることに注意してください。

3
JJones

線の部分を手動で選択してから、「マージ」ツール(高度な編集ツールバーにあります)を使用することをお勧めします。

http://gis.stackexchange.com でそのような質問をすることもできます

3
underdark

他の人に役立つ可能性のある非常に遅い回答:

私は同じ問題に直面し、それを解決するためにQGISプラグインを開発しました。複数の接続された回線(つまり、エンドポイントを共有する回線)を、より小さな長い回線のセットに自動的にマージします。出力レイヤータイプは、PolyLineではなくLineです。マージは、次の2つの基準のいずれかに基づくことができます。

  • 長さ:セグメントは、最も長い隣接セグメントにマージされます。
  • 配置:セグメントは、最適に配置された隣接セグメントにマージされます。この基準は、河川網に最も適していると思います。

このプラグインはMergeLines完全なドキュメントはこちら )と呼ばれ、公開QGISリポジトリにあります。作業はまだ進行中です。新しい機能を提案することを躊躇しないでください。

2
ArMoraer