Wie passt man ein SVG-Bild so an, dass es in QGIS änderbar ist?

Ich habe ein SVG-Bild eines Schleifenpfeils von einer Website heruntergeladen. Es sieht aus wie das:

Geben Sie hier die Bildbeschreibung ein

Ich möchte den Code dieser SVG so anpassen, dass die Füllfarbe, die Strichfarbe und die Strichbreite in QGIS änderbar sind. (QGIS ist ein Open-Source-Softwaresystem für geografische Informationen.) Wie dies bewerkstelligt werden kann, wird in dieser GIS SE-Frage erläutert.

Leider habe ich Probleme, die Methoden in jgrochas Antwort anzuwenden. Er sagt, man sollte das style-Attribut des path-Elements durch den folgenden Code ersetzen:

fill="param(fill) #FFF" stroke="param(outline) #000" stroke-width="param(outline-width) 1"

Beim Öffnen der SVG-Datei in Inkscape kann ich das Stilattribut jedoch nicht finden. So sieht der Code im XML-Editor aus:

Geben Sie hier die Bildbeschreibung ein

Obwohl das path-Element vorhanden ist, sehe ich das style-Attribut nirgendwo. Ich habe auch versucht, den SVG-Code in einem normalen Texteditor anzuzeigen. Wenn ich es öffne, erhalte ich den folgenden Code:

<?xml version="1.0" ?><!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 1.1//EN'  'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable-background="new 0 0 48 48" id="Layer_1" version="1.1" viewBox="0 0 48 48" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g><g><polygon points="43.1,13.3 31.3,12.4 31.6,8.5 39.6,9.2 40.2,1.2 44,1.5   "/>

Hier drüben kann ich nicht einmal mehr die Pfad-ID erkennen.

Fragen

  1. Wie kann ich - wenn überhaupt - den Code der SVG-Datei des Schleifenpfeils so ändern, dass die Strich-/Füllfarbe und die Strichbreite in QGIS änderbar sind?
  2. Soll dies im XML-Editor von Inkscape erfolgen, oder geht das auch in einem „normalen“ Texteditor?
  3. Warum kann ich die Pfad-ID dieser SVG-Datei im normalen Texteditor nicht sehen?
Dies kann bei GIS.SE besser beantwortet werden. Ich bin mir nicht sicher, warum Sie dies hier gepostet haben. Ja, ein einfacher Texteditor sollte jedoch den gesamten XML-Code anzeigen. Ich kann Inkscape nicht erklären ... benutze es niemals.
@Scott Ich habe hier gepostet, weil ich dachte, dass die Leute in dieser SE im Allgemeinen mehr über Inkscape- und SVG-Dateien wissen als die bei GIS.SE
Fair genug ... 😀
Der XML-Code sieht schlampig aus, es gibt zwei g-Tags (Gruppen), die nicht geschlossen sind und sogar das svg-Tag ist nicht richtig geschlossen. Wenn Sie nicht an anderer Stelle auf den Pfad verweisen, benötigen Sie keine ID. Ich denke, Inkscape verwendet die Standardfarbe (Schwarz), wenn keine Farbe angegeben ist, ähnlich für die anderen fehlenden Informationen. Wenn ich jedoch Ihren Codeausschnitt speichere, zeigt Inkscape nur den Stift des Pfeils an, nicht den runden Teil, und ich kann in Ihrem Code nicht sehen, wo der runde Teil angegeben werden sollte. Die Verwendung der Füllparameter hat keine Auswirkung (ich habe die Farbe auf AAA geändert, um zu überprüfen, ob es einen Effekt gibt. Ändern Sie es auf nur …
… fill="#AAA" stroke="#333" stroke-width="3" vor dem schließenden XML-Tag von polygon (Werte AAA, 333 und 3 nur um auf einen Effekt zu prüfen) wirkt wie ein Zauber. Allerdings fehlt natürlich noch der runde Teil des Pfeils.

Antworten (1)

Ich denke, ein Teil des Problems hier ist, dass das SVG nicht in Inkscape generiert wurde. Das Herumspielen mit den SVGs anderer Leute oder anderer Anwendungen in Inkscape kann manchmal wirklich chaotisch werden.

Persönlich würde ich es einfach in Inkscape neu erstellen, da es ein sehr einfaches Design ist. Es wäre sicherlich einfacher, als zu versuchen, es zu bearbeiten. Speichern Sie dann mit der Option „Optimiertes SVG“ im Dropdown-Menü „Dateityp“. Sie können diese Option verwenden, um den größten Teil des XML zu entfernen, der nicht wirklich erforderlich ist.

So erhalten Sie unten so etwas, das dann einfach in einem einfachen Texteditor bearbeitet werden kann

<?xml version="1.0" encoding="UTF-8"?>
<svg width="27.9mm" height="27.9mm" version="1.1" viewBox="0 0 27.9 27.9" xmlns="http://www.w3.org/2000/svg">
<g fill="none" stroke="#d40000" stroke-width="2.23">
<path d="m26.8 13.9a12.8 12.8 0 01-10.6 12.6 12.8 12.8 0 01-14.3-8.22 12.8 12.8 0 015.6-15.5 12.8 12.8 0 0116.2 2.81" stop-color="#000000"/>
<path d="m24.7.472-.434 5.65-5.58-.401" stop-color="#000000" style="font-variation-settings:normal"/>
</g>
</svg>
Danke schön! Ich werde versuchen, diese SVG-Datei so zu bearbeiten, dass sie dem Zweck entspricht, den ich für QGIS im Sinn habe
@MaxMuller Beachten Sie auch, dass Sie die Attribute stop-color und style entfernen können, da diese nicht erforderlich sind. Ich weiß nicht, warum Inkscape sie hinzufügt.
Ich versuche gerade, die SVG-Datei in QGIS einzubinden. Ich kann es zwar als Markierung laden, habe aber Probleme mit der richtigen Platzierung. Folgendes sehe ich, wenn ich es lade: imgur.com/iXVgITv . Hast du eine Idee, wie man das beheben kann?
@MaxMuller - Entschuldigung, aber ich habe keine Erfahrung mit QGIS. Vielleicht Zeit, ein QGIS-Forum zu finden?