Si vous ne souhaitez utiliser que la symbologie, je vous propose une solution inspirée de ma réponse à une question similaire: Créer des secteurs de lumières dans QGIS? .
En suivant une approche similaire et en supposant que vous travaillez sur un CRS projeté (à la place, si vous utilisez un système de coordonnées géographiques, voir la note à la fin de la réponse), je tiens à souligner que je concentrerai l'attention sur l'explication des choses minimales à faire pour reproduire le résultat souhaité: cela signifie que certains autres paramètres mineurs (comme les tailles, les largeurs, etc.) doivent être facilement ajustés par vous pour mieux répondre à vos besoins.
De plus, je suppose que "AZIMUTH"
c'est le champ qui stocke les valeurs d'azimut et "BEAMWIDTH"
c'est le champ qui stocke les largeurs de faisceau d'antenne.
Solution
Nous rendrons les points avec un Single symbol
et en répétant une Simple Marker
et deux Geometry generator
couches de symboles:
Dans l'explication supplémentaire, je suivrai le même ordre des symboles dans l'image ci-dessus.
1) Marqueur simple
J'ai choisi un symbole par défaut d'un cercle rouge (c'est la partie la plus facile de ce tutoriel), ayant une taille de 3 mm et une largeur de 0,4 mm.
2) Générateur de géométrie n ° 1
Ajoutez une nouvelle couche de symboles et sélectionnez le Geometry generator
et les LineString / MultiLineString
types:
Insérez cette expression dans le Expression
champ:
make_line(
$geometry,
make_point($x + 300*cos(radians(90 - "AZIMUTH" )), $y + 300*sin(radians((90 - "AZIMUTH" ))))
)
Nous venons de définir la flèche qui pointe vers l'ensemble d'azimut (pour créer la flèche, n'oubliez pas de sélectionner le Arrow
type de couche de symboles sous l' Line
option dans le menu principal des symboles). Veuillez noter que cela 300
représente une distance en mètres et que c'est une valeur arbitraire, alors n'hésitez pas à la modifier selon vos besoins.
3) Générateur de géométrie n ° 2
Ajoutez une nouvelle couche de symboles et sélectionnez le Geometry generator
type et les Polygon / MultiPolygon
types:
Insérez cette expression dans le Expression
champ:
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
Nous venons de définir le secteur. Veuillez noter que 200
et 2000
représentent des distances en mètres et ce sont des valeurs arbitraires parce que j'essaie de créer un polygone à intersecter avec le cercle ayant un rayon de 200 m, alors n'hésitez pas à les changer selon vos besoins.
Résultat final
Si vous effectuez correctement les tâches précédentes, vous devriez pouvoir obtenir des résultats comme ceux-ci (les étiquettes sont ajoutées en dehors de cette solution et elles ne devraient expliquer que mieux le contexte):
Remarque
Si vous utilisez un système de coordonnées géographiques , c'est-à-dire si vous avez affaire à des degrés et non à des distances, il devrait suffire d'utiliser les valeurs appropriées lorsque j'ai utilisé une distance dans les formules précédentes. Les distances que j'ai utilisées sont:
- 300 m (voir Générateur de géométrie n ° 1);
- 200 m (voir Générateur de géométrie n ° 2);
- 2000 m (voir Générateur de géométrie n ° 2);
vous pouvez donc le remplacer par d'autres valeurs arbitraires exprimées en degrés (par exemple 0.0002
, 0.002
et ainsi de suite).
Prime
J'ai attaché le style ici : vous pouvez ouvrir ce code avec n'importe quel éditeur de texte et l'enregistrer en tant que fichier de style de couche QGIS (c'est-à-dire avec une .qml
extension).
Le style ci-dessus a été créé à l'aide de QGIS 2.18.4 (il doit avoir le même nom que le fichier de formes que vous utilisez).