Ansichtssymbole in QGIS zeichnen?

9

Ich habe in QGIS ein Ansichtspunktsymbol erstellt, indem ich einen Punkt als Kreis gestaltet und einige Linien hinzugefügt habe, die in verschiedenen Winkeln gedreht wurden

360 Sichtpunkt

In einer perfekten Welt wäre es mir lieber, wenn dieses Symbol ein Polygonstil wäre (und kein Punktstil), also bei jedem Zoom die richtige Größe (ohne zoomabhängige Symbole zu erstellen).

Mein Problem ist, dass ich einen Halbkreis wie diesen haben möchte:

halber Standpunkt

und ein mehr als halb weniger als voller Kreis wie dieser:

seltsamer Standpunkt

Irgendwelche Vorschläge, wie ich einen solchen Stil in QGIS erstellen kann?

Fredrik
quelle
3
Sie können ein SVG-Symbol erstellen und hinzufügen, drehen usw.! Nur ein Vorschlag
Fran Raga
2
Suchen Sie nach einer Antwort zum Geometriegenerator, die Ihnen eine Vorstellung geben könnte. Diese eine gis.stackexchange.com/questions/229961/… zum Beispiel könnte Sie auf den richtigen Weg bringen
JR
Wie werden die Segmentanzahl und die Position der fehlenden Segmente definiert?
Geozelot
Die Anzahl der Segmente ist beliebig. Ich muss nur so etwas wie diese Beispiele betrachten. Und ich bin mir nicht sicher, wie ich die fehlenden Zemente definieren könnte. Zeichnen Sie vielleicht einen Kreis und geben Sie ihm einen Wert "sei ein Kreis von 270 Grad" oder "sei ein voller Kreis außer 30 Grad, drehe 50 Grad"
Fredrik
2
Haben Sie versucht, Keilpuffer zu erstellen? Keilpuffer qgis docs
Amanti

Antworten:

4

Noch ein SVG-Ansatz:

Speichern Sie die folgenden Texte als SVG-Textdatei (sagen wir petal.svg) in Ihrem SVG-Ordner.

<?xml version="1.0" encoding="UTF-8"?>
<svg id="petal" enable-background="new 0 0 300 300" version="1.1" viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg">
  <path d="M150,150 v-100 a100,100 0 0,1 38.26834323,7.61205 z"
        fill="param(fill)" fill-opacity="param(fill-opacity)" stroke="param(outline)" stroke-opacity="param(outline-opacity)" stroke-width="param(outline-width) 0.2"/>
</svg>

Beim Laden auf QGIS als SVG-Marker wird ein einzelnes Blütenblatt (zentraler Winkel ~ 22,5 Grad) angezeigt. Der Drehwinkel beginnt bei Null und nimmt im Uhrzeigersinn zu. Bitte ändern Sie die Füll- und Umrissfarben nach Bedarf.

Geben Sie hier die Bildbeschreibung ein

Für Ihre Verwendung benötigen Sie möglicherweise zwei Blütenblätter (45 Grad), drei Blütenblätter (67,5 Grad) usw. Bitte lassen Sie mich wissen, wenn Sie diese Variationen benötigen .


BEARBEITEN (Fälle für zwei, drei und vier Blütenblätter hinzugefügt)

Zwei Blütenblätter:

<?xml version="1.0" encoding="UTF-8"?>
<svg id="2 petals" enable-background="new 0 0 300 300" version="1.1" viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg">
  <path d="M150,150 v-100 A100,100 0 0,1 188.26834,57.61205 L150,150 L188.26834,57.61205 A100,100 0 0,1 220.7107,79.28932 z"
        fill="param(fill)" fill-opacity="param(fill-opacity)" stroke="param(outline)" stroke-opacity="param(outline-opacity)" stroke-width="param(outline-width) 0.2"/>     
</svg>

Drei Blütenblätter:

<?xml version="1.0" encoding="UTF-8"?>
<svg id="3 petals" enable-background="new 0 0 300 300" version="1.1" viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg">
  <path d="M150,150 v-100 A100,100 0 0,1 188.26834,57.61205 L150,150 L188.26834,57.61205 A100,100 0 0,1 220.7107,79.28932 L150,150 L220.7107,79.28932 A100,100 0 0,1 242.388,111.7317 z"
        fill="param(fill)" fill-opacity="param(fill-opacity)" stroke="param(outline)" stroke-opacity="param(outline-opacity)" stroke-width="param(outline-width) 0.2"/>     
</svg>

Vier Blütenblätter:

<?xml version="1.0" encoding="UTF-8"?>
<svg id="4 petals" enable-background="new 0 0 300 300" version="1.1" viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg">
  <path d="M150,150 v-100 A100,100 0 0,1 188.26834,57.61205 L150,150 L188.26834,57.61205 A100,100 0 0,1 220.7107,79.28932 L150,150 L220.7107,79.28932 A100,100 0 0,1 242.388,111.7317 L150,150 L242.388,111.7317  A100,100 0 0,1 250,150 z"
        fill="param(fill)" fill-opacity="param(fill-opacity)" stroke="param(outline)" stroke-opacity="param(outline-opacity)" stroke-width="param(outline-width) 0.2"/>     
</svg>

Das Hinzufügen von Schichten von SVG-Markern kann eine Option sein ... dies ist jedoch größtenteils manuelle Arbeit und nicht empfehlenswert.

Geben Sie hier die Bildbeschreibung ein


Eine weitere Option - Shape Tools Plugin

Wenn Sie keine "Speichen" benötigen, würde ich das Shape Tools- Plugin empfehlen . Anders als Wedge buffersin QGIS3 können Sie einstellen , startund endAzimut direkt von Ihren Attributfeldern. Es macht die Dinge viel einfacher und schneller.

Geben Sie hier die Bildbeschreibung ein

Kazuhito
quelle
Einfach brilliant!
Taras
0

Sie haben es fast geschafft. Versuchen Sie diese Schritte:

  1. Öffnen Sie Ihr PNG mit inkscape und speichern Sie es als SVG (Ebene) in einem Ordner (möglicherweise sind SVG-Symbole in QGIS ein guter Ort).
  2. Gehen Sie in QGIS zu System -> Optionen -> System. Fügen Sie dann Ihren Ordnerpfad zu den SVG-Pfaden hinzu. Schließen Sie QGIS und öffnen Sie es erneut, um sicherzustellen, dass dieser neue Ordnerpfad geladen wird.
  3. Gehen Sie zu den Ebeneneigenschaften und suchen Sie nach Ihren neuen Symbolen. Ich habe es gerade bei dir versucht und es hat funktioniert.

Geben Sie hier die Bildbeschreibung ein

César Arquero
quelle
Wenn Sie die
Symbolgröße