シンボルのみを使用する場合は、同様の質問:QGISでセクターライトを作成しますか?。
同様のアプローチに従い、投影CRSで作業していると仮定すると(代わりに、地理座標系を使用している場合は、回答の最後にある注を参照)、説明に注意を集中することを強調したい目的の結果を再現するための最小限の操作:これは、ニーズに合わせて他のマイナーパラメーター(サイズ、幅など)を簡単に調整できることを意味します。
さらに、私はそれ"AZIMUTH"
が方位角値"BEAMWIDTH"
を保存するフィールドであり、アンテナビーム幅を保存するフィールドであると仮定します。
解決
Single symbol
1つSimple Marker
および2つのGeometry generator
シンボルレイヤーを繰り返して、ポイントをレンダリングします。
さらなる説明では、上の画像のシンボルと同じ順序に従います。
1)シンプルマーカー
サイズが3 mm、幅が0.4 mmのデフォルトの赤い円のシンボルを選択しました(これはこのチュートリアルの簡単な部分です)。
2)ジオメトリジェネレーター1
新しいシンボルレイヤーを追加しGeometry generator
、LineString / MultiLineString
タイプとタイプを選択します。
次の式をExpression
フィールドに挿入します。
make_line(
$geometry,
make_point($x + 300*cos(radians(90 - "AZIMUTH" )), $y + 300*sin(radians((90 - "AZIMUTH" ))))
)
方位角セットを指す矢印を定義しました(矢印を作成するには、メインシンボルメニューからオプションのArrow
下のシンボルレイヤータイプを選択してLine
ください)。300
は距離をメートル単位で表し、任意の値ですので、必要に応じて自由に変更してください。
3)ジオメトリジェネレーター2
新しいシンボルレイヤーを追加し、Geometry generator
タイプとタイプを選択しPolygon / MultiPolygon
ます。
次の式をExpression
フィールドに挿入します。
CASE
WHEN ("BEAMWIDTH") <= 180
THEN
intersection(
buffer(
$geometry, 200),
make_polygon(
geom_from_wkt(
geom_to_wkt(
make_line(
$geometry,
make_point($x + 2000*cos(radians(90 - "AZIMUTH" - "BEAMWIDTH"/2 )), $y + 2000*sin(radians((90 - "AZIMUTH" - "BEAMWIDTH"/2 )))),
make_point($x + 2000*cos(radians(90 - "AZIMUTH" )), $y + 2000*sin(radians((90 - "AZIMUTH" )))),
make_point($x + 2000*cos(radians(90 - "AZIMUTH" + "BEAMWIDTH" /2)), $y + 2000*sin(radians((90 - "AZIMUTH" + "BEAMWIDTH"/2)))),
$geometry)
)
)
)
)
WHEN ("BEAMWIDTH") > 180
THEN
difference(
buffer(
$geometry, 200),
make_polygon(
geom_from_wkt(
geom_to_wkt(
make_line(
$geometry,
make_point($x + 2000*cos(radians(90 - "AZIMUTH" - "BEAMWIDTH"/2 )), $y + 2000*sin(radians((90 - "AZIMUTH" - "BEAMWIDTH"/2 )))),
make_point($x - 2000*cos(radians(90 - "AZIMUTH" )), $y - 2000*sin(radians((90 - "AZIMUTH" )))),
make_point($x + 2000*cos(radians(90 - "AZIMUTH" + "BEAMWIDTH" /2)), $y + 2000*sin(radians((90 - "AZIMUTH" + "BEAMWIDTH"/2)))),
$geometry)
)
)
)
)
END
セクターを定義しました。なおしてください200
とは、2000
メートル単位の距離を表しており、彼らは任意の値であり、私は200メートルの半径を有する円と交差するポリゴンを作成しようとしているので、そのニーズに応じてそれらを変更して自由に感じます。
最終結果
前のタスクを正しく実行すると、次のような結果を取得できるはずです(ラベルはこのソリューションとは別に追加され、コンテキストをよりよく説明するだけです)。
注意
地理座標系を使用している場合、つまり距離ではなく度を扱っている場合は、前の式で距離を使用したときに適切な値を使用すれば十分です。使用した距離は次のとおりです。
- 300 m(ジオメトリジェネレーターNo. 1を参照);
- 200 m(ジオメトリジェネレーターNo. 2を参照);
- 2000 m(ジオメトリジェネレーターNo. 2を参照);
そのため、度で表された他の任意の値(たとえば、0.0002
など0.002
)に置き換えることができます。
ボーナス
ここにスタイルを添付しました:任意のテキストエディターでこのコードを開き、QGISレイヤースタイルファイル(.qml
拡張子付き)として保存できます。
上記のスタイルはQGIS 2.18.4を使用して作成されました(使用しているシェープファイルと同じ名前でなければなりません)。