別のレイヤーのフィーチャから特定の距離でQGISのポリゴンをカットする


8

以下のようなポリゴンを、QGISで、別のレイヤーの指定されたフィーチャの両側の設定された距離で、この場合はOSマスターマップからの歩道ラインでカットできるようにしたいと思います。

このようにして、たとえば森林地帯の乗車ネットワークを表すことができる線に沿ってバッファを効果的に設定します。この場合、これは非常に単純な線形機能ですが、多くの場合、はるかに複雑であり、切り出すのに非常に時間がかかる可能性があります。理想的には、これも使用されるので、元のポリゴンを保持する必要があります。

この方法でポリゴンをカットすることは可能ですか、またはラインに沿ってバッファとして新しいポリゴンを作成し、既存のポリゴンからこれらをカットする必要がありますか?

カットするポリゴンのスクリーングラブ

回答:


3

このワークフローでは、を使用するためにrefFunctionsプラグインが必要ですgeomintersects()

  1. ポリゴンレイヤーの属性テーブルを開きます。
  2. フィールド電卓をアクティブにします。
  3. オンUpdate existing fieldにし<geometry>て、プルダウンメニューから選択します。
  4. この表現を提供してください: difference($geometry, buffer(geom_from_wkt(geomintersects( 'Your_LineLayerName', '$geometry')), 20))

必要に応じてYour_LineLayerName、(パス)レイヤーと20(バッファーサイズ)を変更してください。

NB。変更はすぐに元に戻せないため、元のポリゴンファイルのコピーを保管しておいてください。


1
Kazuhito氏、ありがとうございました。既存のポリゴンからバッファリングされたラインをカットして削除しているようです。新しいポリゴンとして保持することはできますか?
JimS-W 2017

@ JimS-Wのintersection()代わりにを使用するとdifference()、バッファリングされた部分が得られます。ただし、1つのアクションで両方のジオメトリ(差分と交差)を取得するのに役立つとは思いません。
Kazuhito

1
それで結構です。スクラッチレイヤーで2つを組み合わせることで、必要なものを取得できるはずです。再度ありがとう
JimS-W 2017

4

あなたはにする必要がありますbufferあなたが必要としてから使用して他の多角形のものをアウトをカット距離で選択された線(パス)difference

それが非常に頻繁に行う必要がある操作である場合、両方の操作を一緒に実行するPythonスクリプトを作成する価値があります。


iantに感謝します。私はかなり定期的にそれを行う必要がありますが、基本的なクエリだけでなく、スクリプトの記述をどこから始めればよいのか本当にわかりません。かなり簡単だと思いますか?
JimS-W 2017

QGIS 3.2.1で、差分($ geometry、buffer(geom_from_wkt(geomintersects( 'Your_LineLayerName'、 '$ geometry'))、20))を使用してこの操作を繰り返し実行しようとしましたが、動作しないようです。エラー「Eval Error: 'QgsGeometry' object has no attribute 'exportToWkt'」を返すか、カットしようとしているレイヤーが存在しないことを通知するだけです。@Kazuhito?refFunctionsプラグインをインストールしました。
JimS-W 2018

コメントではなく、新しい質問をしてください
Ian Turton

@Ian Turtonを行います。トレースを有効にする->オフセット機能が、どのような場合でも今必要なことのほとんどをカバーしています。
JimS-W 2018

0

QGISの新しいバージョン(私は3.2.1を使用しています)では、([トレースを有効にする]の横にあるドロップダウンメニューから)スナップツールバーの[オフセット]機能を使用して、これをはるかに迅速かつ簡単に行うことができます。

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

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