PerfectVector
Autor: Irene Kim7 min czytania

Znaczniki SVG w QGIS: przygotuj symbole z edytowalnymi kolorami

Przygotuj własny znacznik SVG do QGIS z parametrami wypełnienia i obrysu, rzeczywistym otworem oraz akcentem o stałym kolorze. Zachowaj zwykły plik źródłowy SVG i sprawdź kopię docelową.

Na tej stronie

Aby przygotować własny znacznik SVG do QGIS z edytowalnymi kolorami, dodaj znaczniki parametrów param() używane przez QGIS do atrybutów wypełnienia i obrysu, którymi ma sterować aplikacja. W obszarach, których kolory mają pozostać stałe, zachowaj jawnie określone kolory. QGIS 3.44 Symbol Selector manual opisuje znaczniki parametrów wypełnienia, obrysu, ich krycia oraz szerokości obrysu.

Zacznij od niewielkiego, uporządkowanego symbolu. Ikona, która wygląda przekonująco w rozmiarze ilustracji, może stracić czytelność otworu, akcentu lub obrysu, gdy zostanie użyta jako znacznik na mapie.

Zakres tego poradnika: wyrenderowaliśmy zwykły plik źródłowy SVG w przeglądarce i sprawdziliśmy kod XML kopii z parametrami. Nie importowaliśmy tej kopii do QGIS. Poniższa składnia parametrów jest zgodna z dokumentacją wersji 3.44; sprawdzenie kopii docelowej w aplikacji pozostawiamy Tobie lub odbiorcy pracującemu w GIS.

Zachowaj zwykły plik źródłowy i kopię do QGIS

Użyj dwóch plików o tej samej geometrii:

PlikPrzeznaczenie
marker-master.svgZwykłe atrybuty wypełnienia i obrysu SVG do edycji i sprawdzania w przeglądarce.
marker-qgis.svgKopia docelowa ze znacznikami parametrów QGIS w wybranych atrybutach.

Taki podział ułatwia sprawdzanie oryginalnej grafiki. Podgląd zwykłego pliku źródłowego w przeglądarce pokazuje, jak ten plik jest w niej renderowany. Nie potwierdza jednak, że kopia do QGIS została poprawnie zaimportowana ani że jej ustawienia działają zgodnie z zamierzeniem.

Nasz oryginalny znacznik ma zielony korpus, przezroczysty okrągły otwór i złoty akcent w kształcie rombu. Zawiera dwie ścieżki i nie ma osadzonego obrazu rastrowego.

Oryginalna grafika źródłowa
Zwykły zielony znacznik SVG w kształcie pinezki, wyrenderowany w przeglądarce, z przezroczystym otworem i złotym akcentem o stałym kolorze, wraz z podglądami w rozmiarach 24, 32 i 48 pikseli
Zwykły plik źródłowy SVG wyrenderowany w przeglądarce. Przez otwór widać szachownicę; nie jest to test importu do QGIS ani parametrów kolorów.

Utwórz rzeczywisty otwór w grafice źródłowej

Zapisz ten kod jako marker-master.svg:

<svg xmlns="http://www.w3.org/2000/svg"
     width="64" height="64" viewBox="0 0 64 64">
  <path id="body" fill="#237466" fill-opacity="1"
        stroke="#173f37" stroke-opacity="1" stroke-width="2"
        fill-rule="evenodd"
        d="M32 5C19 5 10 14 10 27C10 42 32 59 32 59S54 42 54 27C54 14 45 5 32 5Z M32 17A10 10 0 1 0 32 37A10 10 0 1 0 32 17Z"/>
  <path id="accent" fill="#f2c96c" stroke="none"
        d="M32 41L36 46L32 51L28 46Z"/>
</svg>

Ścieżka korpusu zawiera kontur zewnętrzny i wewnętrzny kontur kołowy. W tej konstrukcji fill-rule="evenodd" sprawia, że obszar wewnętrzny staje się otworem. Dzięki temu przez otwór w znaczniku widać tło — w tym miejscu nie jest rysowane białe koło. Opis atrybutu fill-rule w MDN wyjaśnia, jak ta reguła określa, które obszary są wypełniane.

viewBox definiuje prostokątny obszar współrzędnych grafiki źródłowej. Tutaj jest to kwadrat o boku 64 jednostek, z miejscem wokół obrysu. Zachowaj ten sam obszar w obu kopiach. Jeśli symbol wydaje się nieoczekiwanie mały w swoim obszarze, sprawdź geometrię i puste marginesy, zanim zwiększysz jego wyświetlany rozmiar.

Złoty akcent jest osobną ścieżką, dzięki czemu jego kolor jest określony jednoznacznie. W przypadku bardziej złożonej ikony zdecyduj, które obszary mają mieć wspólny kolor korpusu, zanim dodasz parametry. Nasz poradnik dotyczący kolorów SVG wyjaśnia, gdzie mogą być zapisane wypełnienia i obrysy.

Dodaj parametry do korpusu i zachowaj stały kolor akcentu

Utwórz kopię o nazwie marker-qgis.svg. W ścieżce z id="body" zastąp pięć atrybutów wypełnienia i obrysu poniższym blokiem atrybutów:

fill="param(fill) #237466"
fill-opacity="param(fill-opacity) 1"
stroke="param(outline) #173f37"
stroke-opacity="param(outline-opacity) 1"
stroke-width="param(outline-width) 2"

Zachowaj dane ścieżki i fill-rule bez zmian. Pozostaw fill="#f2c96c" i stroke="none" ścieżki accent w obecnej postaci.

Atrybut SVGZnacznik parametru QGISDocelowe ustawienie
fillparam(fill)Kolor wypełnienia korpusu
fill-opacityparam(fill-opacity)Krycie wypełnienia korpusu
strokeparam(outline)Kolor obrysu korpusu
stroke-opacityparam(outline-opacity)Krycie obrysu korpusu
stroke-widthparam(outline-width)Szerokość obrysu korpusu

Wartości po znacznikach parametrów są opcjonalnymi wartościami domyślnymi w składni QGIS. Nie gwarantują, że zwykła przeglądarka SVG zrozumie tak sparametryzowaną wartość atrybutu wypełnienia lub obrysu. Do ogólnej edycji i podglądu SVG używaj zwykłego pliku źródłowego.

Nie zastępuj automatycznie każdego koloru przez param(fill). W tym projekcie zniweczyłoby to decyzję o zachowaniu osobnego złotego akcentu. Stosuj wspólny znacznik parametru tylko w obszarach, które mają reagować na to samo ustawienie.

Sprawdź kopię docelową przed przekazaniem

Nasza kontrola XML potwierdziła, że oba pliki mają ten sam viewBox i identyczne dane ścieżek. Kopia do QGIS zawiera pięć zamierzonych znaczników parametrów w body; accent zachowuje stałe złote wypełnienie. W tym przykładzie nie ma elementów <image>, plików zewnętrznych ani fontów.

W przypadku własnego znacznika sprawdź, czy:

  • Plik źródłowy zawiera oczekiwane kształty wektorowe. Zmiana atrybutu wypełnienia lub obrysu nie pozwala zmieniać kolorów pikseli wewnątrz osadzonego obrazu jako osobnych obszarów.
  • Parametry otrzymują tylko zamierzone ścieżki. Zachowaj jawnie określone kolory akcentów dekoracyjnych.
  • Deklaracja stylu nie zachowuje w innym miejscu pliku sprzecznej, stałej wartości wypełnienia lub obrysu.
  • Otwór pozostaje rzeczywistym otworem podczas wyświetlania na kontrastowym tle.
  • Znacznik ma dość miejsca na obrys, bez dużego pustego obszaru wokół.

Pomyślne parsowanie XML potwierdza poprawność składni. Nie poświadcza, że docelowy mechanizm renderowania obsługuje wszystkie funkcje SVG. Zachowaj prostotę grafiki źródłowej, a następnie przeprowadź kontrolę w aplikacji.

Sprawdź znacznik w projekcie QGIS odbiorcy

W oknie wyboru symbolu punktowego wybierz warstwę symbolu SVG marker (znacznik SVG) i wczytaj kopię docelową. Podręcznik QGIS dla wskazanej wersji, do którego link znajduje się powyżej, opisuje ten typ symbolu i dostępne ustawienia.

Zanim użyjesz symbolu na całej mapie, poproś odbiorcę o osobne sprawdzenie wypełnienia korpusu, obrysu i krycia; potwierdzenie, że złoty akcent zachowuje stały kolor; obejrzenie otworu przy docelowym rozmiarze znacznika; oraz ponowne otwarcie udostępnionego projektu z dostępnym plikiem symbolu. Sprawdź też wyeksportowaną mapę lub układ wydruku, ponieważ to właśnie ten plik otrzymają odbiorcy.

Te kontrole kończą proces przekazania symbolu. Nasz obraz z przeglądarki i kontrola pliku źródłowego obejmują grafikę wejściową, natomiast rzeczywisty projekt QGIS decyduje o ostatecznym wyniku.

Gdy ikona początkowo jest rastrowym clipartem

Jeśli Twój własny piktogram istnieje tylko jako PNG lub JPG, narzędzie PerfectVector do konwersji clipartów na SVG może odtworzyć grafikę wektorową do edycji. Sprawdź ścieżki, uprość szczegóły, które znikają po zmniejszeniu ikony do rozmiaru znacznika, i oddziel korpus od wszelkich akcentów o stałym kolorze, zanim dodasz parametry QGIS. Poradnik przygotowania małych ikon omawia czytelność grafiki źródłowej i jej porządkowanie przy małych rozmiarach.

W ten sposób przygotowujesz wygląd symbolu. Nie nadajesz obrazowi georeferencji, nie odzyskujesz współrzędnych ani nie przekształcasz narysowanej mapy w dokładne dane geograficzne. Nasz poradnik dotyczący map rysowanych odręcznie wyjaśnia tę różnicę. Jeśli plik wejściowy zawiera już wymagane ścieżki wektorowe, użyj go bezpośrednio; poradnik dotyczący plików SVG pomoże Ci sprawdzić jego zawartość.

Często zadawane pytania

Dlaczego zaimportowany znacznik SVG nie udostępnia ustawień kolorów, których potrzebuję? Sprawdź, czy odpowiednie atrybuty wypełnienia i obrysu zawierają znaczniki parametrów QGIS. W tym przykładzie parametry ma tylko korpus; złoty akcent celowo zachowuje stały kolor. Następnie sprawdź ustawienia w docelowej wersji QGIS.

Czy mogę zachować stały kolor jednego akcentu? Pozostaw wypełnienie tego obszaru jako jawnie określony kolor i zastosuj wspólne parametry tylko do obszarów, którymi chcesz sterować. Zachowaj akcent w osobnej ścieżce, aby łatwo było sprawdzić plik źródłowy.

Czy wektoryzacja ikony zmienia ją w dane geograficzne? Nie. Tworzy grafikę dla symbolu. Lokalizacje na mapie, współrzędne i dokładność nadal zależą od danych geograficznych i sposobu pracy w GIS.

Źródła

  1. QGIS 3.44 — The Symbol Selector — Parametry znaczników SVG i opcjonalne wartości domyślne.
  2. MDN — fill-rule — Wypełniane obszary i reguła parzystości użyta do utworzenia otworu.
  3. MDN — viewBox — Prostokątny obszar współrzędnych SVG używany w obu kopiach pliku źródłowego.

W przypadku piktogramu rastrowego przekonwertuj clipart na SVG, sprawdź otwór i drobne szczegóły, a następnie przygotuj osobną kopię do QGIS. Zachowaj zwykły plik źródłowy, po czym poproś odbiorcę, aby przed przekazaniem przetestował kolory i wygląd znacznika w rzeczywistym projekcie.

Więcej z bloga

Zacznij od czystszego SVG,
który łatwiej edytować