一定のパラメータを持つベクタについて

133 views
Skip to first unread message

Ryuiki

unread,
May 10, 2021, 1:23:31 AM5/10/21
to QGIS初心者質問グループ

QGIS入門者として とても勉強になるサイトで感謝しております。
またしても壁にぶつかりました。

半径rが異なる(150m~500m程度)、中心角60度の扇形のベクタ(shp)を複数作成したいのですが作り方が解りません。
半径を決めて円を描いてそこから頂点の編集で扇形は作れますが、きっちり中心角60度の設定が分かりません

どなたかご教授のほど、よろしくお願い致します。

福岡

unread,
May 10, 2021, 2:54:37 AM5/10/21
to QGIS初心者質問グループ
Ryuiki 様

こんにちは

プロセッシングツールの「ベクタジオメトリ - 式によるジオメトリ」を使うと良さそうです。

ちょっと試してみたのですが、ポイントの属性テーブルにazimuth、radiusというフィールドを設け、それぞれが扇形の角度、半径と想定してみました。
「wedge_buffer」という関数を使うと、各ポイントに対して、ご希望の地物を生成することができると思います。

関数の説明をコピペしておきます。

==========説明開始=========================================
関数 wedge_buffer
点ジオメトリから生成されたくさび形バッファを返します。
構文
wedge_buffer(center,azimuth,width,outer_radius[,inner_radius=0.0])

記号[]は、オプションの引数を意味します。
引数

center
バッファの中心点(原点)。点ジオメトリでなければなりません。
azimuth
くさび形の中央と点の角度(単位は度)
width
バッファ幅(度)。ウェッジは、方位角の方向にバッファ幅の半分の大きさで両側に伸びることに注意してください。
outer_radius
外側半径
inner_radius
(オプション)内側半径
==========説明終了=========================================

式は次のようにしました。

wedge_buffer( $geometry , "direction" ,60, "radius" )

結果をみると、うまくいっているようです。
よろしければ、お試しください。

2021年5月10日月曜日 14:23:31 UTC+9 Ryuiki:

福岡

unread,
May 10, 2021, 3:15:21 AM5/10/21
to QGIS初心者質問グループ
Ryuiki 様

こんにちは

ちょっと訂正です。
扇形の向かう角度ですが、属性テーブルのフィールド名は「direction」としました。

先ほどの投稿では、説明と式の整合性がとれていませんでした。
申し訳ありませんでした。m(__)m

2021年5月10日月曜日 15:54:37 UTC+9 福岡:

Ryuiki

unread,
May 10, 2021, 8:29:08 PM5/10/21
to QGIS初心者質問グループ
福岡様

いつもありがとうございます。
昨日返信させて頂いたのですが、なぜかエラーが返ってきてNGでした。
改めて再返信させて頂きたいと思います。

ご教授頂いた式に半径500mを入れて次式で試しました。
 出力レイヤは作成されますが、図柄が出ずうまくいきませんでした。
wedge_buffer( $geometry , "direction" ,60, "radius",500 )

もう少し詰めてみたいと思います。
有難うございました!

2021年5月10日月曜日 16:15:21 UTC+9 福岡:

福岡

unread,
May 10, 2021, 9:03:18 PM5/10/21
to QGIS初心者質問グループ
Ryuiki 様

こんにちは

ざっと式を拝見したところ、オプションの内側半径として500mを設定しているようです。
属性テーブルに外側半径を「radius」というフィールドで設定しているのでしたら、最後の「,500」は不要と思います。

また、一律に半径を500mとして試したいのであれば、「,radius」を削除すると良いと思います。

2021年5月11日火曜日 9:29:08 UTC+9 Ryuiki:

Ryuiki

unread,
May 10, 2021, 9:16:49 PM5/10/21
to QGIS初心者質問グループ
福岡様

早速の返信、恐縮です。

確かに、フィールドに数字を入力しているので不要ですね。
再入力したところ、図は書き出されましたが、方向や位置が!?です。
さらに細かい設定をしたいのですが、基準ポイントからの向き(北から南東に152°など)、ポイントからの距離などの設定はこの式を変形すれば可能でしょうか?
当然フィールドも項目がその分追加になると思います。

よろしかったらお教えください。
2021年5月11日火曜日 10:03:18 UTC+9 福岡:

福岡

unread,
May 11, 2021, 12:22:09 AM5/11/21
to QGIS初心者質問グループ
こんにちは

お示しした例ですが、ポイントからの扇形の向きを「direction」に入力してコントロールできるように考えました。
数値を入れ替えるなど、色々お試しください。角度は、北を起点に時計回りのものになります。

次に起点ですが、ポイントのジオメトリを「$geometry」で拾っています。
これを例えばX、Y方向の移動距離でコントロールするとします。
以下は例示です。

「move_x」、「move_y」という移動量を入力するフィールドを設けます。
移動先のジオメトリですが「make_point」という関数を用いて生成します。
現在のポイントのx座標とy座標に移動量を加算すると良いので、「$geometry」の代わりに

make_point( $x + "move_x" , $y + "move_y" )

となると思います。

式全体では

wedge_buffer( make_point( $x + "move_x" , $y + "move_y" ) , "direction" ,60, "radius" )

で良いと思います。

最後に関数についてですが、フィールド計算機で確かめることができます。
クリックして関数名を反転させると、右の枠に説明が出てきます。
calculator.png

どのような関数があって、どのように使うのかがわかるので、たまに触ってみると面白いと思います。

なお、今回は式を実際に試していません。
不具合などがあった際には、お知らせくだされば対応いたしますのでよろしくお願いいたします。

2021年5月11日火曜日 10:16:49 UTC+9 Ryuiki:
Reply all
Reply to author
Forward
0 new messages