Je souhaite afficher un réseau cellulaire sur une carte. Les données d'entrée sont un fichier .csv où chaque chaîne est un secteur cellulaire. Les attributs sont: le secteur id, ses coordonnées, son azimut et un angle de largeur de faisceau d'antenne.
Les valeurs de largeur de faisceau d'antenne se situent dans une plage de 30 à 360 degrés. La largeur du faisceau de l'antenne 360 signifie qu'elle doit être indiquée sur la carte comme un cercle. Les antennes avec d'autres largeurs de faisceau doivent être représentées comme des secteurs avec des angles d'ouverture appropriés.
Est-il possible de montrer les antennes en utilisant uniquement des symboles? Je sais comment créer mon propre symbole SVG et j'espère trouver comment le faire pivoter en fonction de l'azimut. Mais existe-t-il un moyen d'appliquer une largeur de faisceau d'antenne variable en fonction de sa valeur d'attribut de 30 à 360 degrés?
Je pense que les symboles sont le meilleur moyen de dessiner les antennes en raison de la visualisation dynamique sur la carte en fonction de l'échelle de vue, si cela est possible dans QGIS.
Bien sûr, la tâche peut être résolue en dessinant des polygones appropriés en tant qu'entité de couche, mais ce serait une solution de contournement.
la source
Réponses:
Il y a quelques jours, un nouveau plugin a été ajouté à QGIS appelé Wedge Buffer Processing Algorithm . Cela semble être intéressant.
Comme son nom l'indique, c'est un algorithme de traitement, vous devrez donc l'exécuter à partir de la boîte à outils de traitement. Pas encore eu l'occasion de l'essayer.
Il crée des secteurs de cercles - comme un tampon circulaire normal, mais l'angle et le rayon du coin peuvent être définis à l'aide des valeurs de champ.
La documentation et les captures d'écran sont visibles sur la page github
la source
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 uneSimple Marker
et deuxGeometry 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 lesLineString / MultiLineString
types:Insérez cette expression dans le
Expression
champ: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 cela300
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 lesPolygon / MultiPolygon
types:Insérez cette expression dans le
Expression
champ:Nous venons de définir le secteur. Veuillez noter que
200
et2000
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:
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).
la source
Bravo à mgri.
Dans notre couche de test, tout s'est bien passé. Dans une couche de production, après deux / trois heures, j'ai réussi à localiser un problème avec $ geometry . Avait exporté une couche de points à partir d'une plate-forme, n'a pas pris note, mais c'était MultiPoint . Cela semblait causer des problèmes: la flèche n'était pas dessinée; et curieusement, seuls les points calculés ont fait le polygone des cercles.
Une autre chose est que j'utilise un rayon variable . (Je ne sais pas si c'est le bon mot dans ce cas, vous pouvez également le nommer «longueur de faisceau» ou autre).
Voici ce que j'utilise maintenant, avec une couche de type géométrie MultiPoints (alors qu'en fait toutes les fonctionnalités sont un seul point), et cela fonctionne pour moi dans QGis 2.18.3
Expression de la flèche Aucune flèche si 360 °.
Expression de polygone
la source
J'ai été doué d'une solution partielle sur le Web sans plugins supplémentaires, juste qgis hors de la boîte. Il n'affiche pas la largeur de faisceau de l'antenne, il suffit de faire pivoter un marqueur simple dans la bonne direction: utilisez un marqueur simple et faites-le pivoter avec un azimut d'antenne + 180 degrés (Propriétés du calque> Simbol simple-> Marqueur-> Marqueur simple-> triangle-> rotation-> modifier -> tapez <180 + "antenne azimut"> dans le champ d'expression. Et définissez également Top dans le champ Point d'ancrage du marqueur). L'utilisation de <180 + "azimut d'antenne"> est nécessaire en raison de la direction inappropriée du marqueur triangulaire simple intégré. Sinon, la direction de l'antenne sera incorrecte.
la source