Ich möchte ein Mobilfunknetz auf einer Karte anzeigen. Eingabedaten sind eine CSV-Datei, in der jede Zeichenfolge ein Mobilfunksektor ist. Die Attribute sind: Sektor-ID, seine Koordinaten, sein Azimut und ein Winkel der Antennenstrahlbreite.
Die Werte für die Antennenstrahlbreite liegen im Bereich von 30 bis 360 Grad. 360 Antennenstrahlbreite bedeutet, dass es auf der Karte als Kreis angezeigt werden muss. Antennen mit anderen Strahlbreiten müssen als Sektoren mit geeigneten Öffnungswinkeln dargestellt werden.
Ist es möglich, die Antennen nur mit Symbolen anzuzeigen? Ich weiß, wie ich mein eigenes SVG-Symbol erstelle, und hoffe, es nach dem Azimut drehen zu können. Aber gibt es eine Möglichkeit, eine variable Antennenstrahlbreite entsprechend ihrem Attributwert von 30 bis 360 Grad anzuwenden?
Ich denke, die Symbole sind aufgrund der dynamischen Visualisierung auf der Karte entsprechend dem Maßstab der Ansicht der beste Weg, um die Antennen zu zeichnen, wenn dies in QGIS möglich ist.
Natürlich kann die Aufgabe gelöst werden, indem geeignete Polygone als Ebenenmerkmal gezeichnet werden, aber das wäre eine Problemumgehungslösung.
quelle
Antworten:
Vor einigen Tagen wurde QGIS ein neues Plugin namens Wedge Buffer Processing Algorithm hinzugefügt . Dies sieht so aus, als ob es von Interesse sein könnte.
Wie der Name schon sagt, handelt es sich um einen Verarbeitungsalgorithmus. Sie müssen ihn daher über die Verarbeitungs-Toolbox ausführen. Ich hatte noch keine Gelegenheit, es zu versuchen.
Es werden Kreissektoren erstellt - wie bei einem normalen Kreispuffer, aber der Keilwinkel und der Radius können mithilfe von Feldwerten eingestellt werden.
Dokumentation und Screenshots finden Sie auf der Github-Seite
quelle
Wenn Sie nur Symbologie verwenden möchten, schlage ich eine Lösung vor, die von meiner Antwort auf eine ähnliche Frage inspiriert ist: Erstellen von Sektorlichtern in QGIS? .
Nach einem ähnlichen Ansatz und unter der Annahme, dass Sie an einem projizierten CRS arbeiten (wenn Sie stattdessen ein geografisches Koordinatensystem verwenden, lesen Sie den Hinweis am Ende der Antwort), möchte ich unterstreichen, dass ich die Aufmerksamkeit auf die Erklärung richten werde Dies bedeutet, dass einige andere kleinere Parameter (wie Größen, Breiten usw.) von Ihnen leicht angepasst werden sollten, um Ihren Anforderungen besser zu entsprechen.
Außerdem gehe ich davon aus, dass dies
"AZIMUTH"
das Feld ist, in dem die Azimutwerte gespeichert sind, und"BEAMWIDTH"
das Feld, in dem die Antennenstrahlbreiten gespeichert sind.Lösung
Wir werden die Punkte mit a
Single symbol
und rendern, indem wir zu einerSimple Marker
und zweiGeometry generator
Symbolebenen zurückkehren:In der weiteren Erklärung werde ich der gleichen Reihenfolge der Symbole im obigen Bild folgen.
1) Einfacher Marker
Ich habe ein Standardsymbol für einen roten Kreis gewählt (dies ist der einfachere Teil dieses Tutorials), mit einer Größe von 3 mm und einer Breite von 0,4 mm.
2) Geometriegenerator Nr. 1
Fügen Sie eine neue Symbolebene hinzu und wählen Sie die
Geometry generator
und dieLineString / MultiLineString
Typen aus:Fügen Sie diesen Ausdruck in das
Expression
Feld ein:Wir haben gerade den Pfeil definiert, der auf die Azimutmenge zeigt (denken Sie zum Erstellen des Pfeils daran, den
Arrow
Symbolebenentyp unter derLine
Option im Hauptsymbolmenü auszuwählen ). Bitte beachten Sie, dass dies300
eine Entfernung in Metern darstellt und ein beliebiger Wert ist. Sie können ihn also nach Ihren Wünschen ändern.3) Geometriegenerator Nr. 2
Fügen Sie eine neue Symbolebene hinzu und wählen Sie den
Geometry generator
Typ und diePolygon / MultiPolygon
Typen aus:Fügen Sie diesen Ausdruck in das
Expression
Feld ein:Wir haben gerade den Sektor definiert. Bitte beachten Sie, dass
200
und2000
stellen Entfernungen in Metern dar und sie sind willkürliche Werte, da ich versuche, ein Polygon zu erstellen, das sich mit dem Kreis mit einem Radius von 200 m schneidet. Sie können sie also nach Ihren Wünschen ändern.Endergebnis
Wenn Sie die vorherigen Aufgaben korrekt ausführen, sollten Sie in der Lage sein, Ergebnisse wie diese zu erhalten (die Beschriftungen werden neben dieser Lösung hinzugefügt und sollten nur den Kontext besser erklären):
Hinweis
Wenn Sie ein geografisches Koordinatensystem verwenden , dh wenn Sie sich mit Graden und nicht mit Entfernungen befassen, sollte es ausreichen, die richtigen Werte zu verwenden, wenn ich eine Entfernung in den vorherigen Formeln verwendet habe. Die Entfernungen, die ich verwendet habe, sind:
so dass Sie es mit anderen beliebigen Werten ersetzen können in Grad (zum Beispiel ausgedrückt
0.0002
,0.002
und so weiter).Bonus
Ich habe den Stil hier angehängt : Sie können diesen Code mit einem beliebigen Texteditor öffnen und als QGIS-Layer-Style-Datei (dh mit einer
.qml
Erweiterung) speichern .Der obige Stil wurde mit QGIS 2.18.4 erstellt (er muss denselben Namen wie das von Ihnen verwendete Shapefile haben).
quelle
Ein großes Lob an Mgri.
In unserer Testschicht hat alles reibungslos funktioniert. In einer Produktionsschicht gelang es mir nach zwei bis drei Stunden, ein Problem mit der $ Geometrie aufzuspüren . Hatte eine Punktebene von einer Plattform exportiert, nicht bemerkt, aber es war MultiPoint . Dies schien Probleme zu verursachen: Der Pfeil wurde nicht gezeichnet; und seltsamerweise bildeten nur die berechneten Punkte das Polygon der Kreise.
Eine andere Sache ist, dass ich einen variablen Radius verwende . (Ich bin mir nicht sicher, ob es in diesem Fall das richtige Wort ist. Sie können es auch als "Strahllänge" oder was auch immer bezeichnen.)
Folgendes verwende ich jetzt mit einem Layer vom Typ MultiPoints-Geometrie (obwohl alle Features ein einzelner Punkt sind), der in QGis 2.18.3 für mich funktioniert
Pfeilausdruck Kein Pfeil bei 360 °.
Polygonausdruck
quelle
Ich war mit Teillösung im Web ohne zusätzliche Plugins begabt, nur qgis out of the box. Die Strahlbreite der Antenne wird nicht angezeigt. Drehen Sie einfach den einfachen Marker in die richtige Richtung: Verwenden Sie den einfachen Marker und drehen Sie ihn mit dem Antennenazimut + 180 Grad (Ebeneneigenschaften> Einzelsimbol-> Marker-> Einfacher Marker-> Dreieck-> Drehung-> Bearbeiten) -> Geben Sie <180 + "Antennenazimut"> in das Ausdrucksfeld ein und setzen Sie im Feld Ankerpunkt des Markers die Option Oben. Die Verwendung von <180 + "Antennenazimut"> ist aufgrund der ungeeigneten Richtung des eingebetteten einfachen Dreiecksmarkers erforderlich. Andernfalls wird die falsche Antennenrichtung angezeigt.
quelle