Chcę utworzyć kilka symboli SVG dla QGIS przy użyciu Inkscape, te symbole muszą mieć atrybuty opisane w pytaniu. Przez ostatnie dwa dni eksperymentowałem zgodnie z instrukcją Sourcepola i naśladowałem niektóre symbole dołączone do qgis, które mają pożądane atrybuty bez powodzenia.
W końcu eksperymentowałem z najprostszą formą symbolu: stworzyłem svg, który zawiera tylko okrąg w Inkscape i próbowałem go zmodyfikować.
Oryginalny plik ( circle.svg ) ma następującą linię:
<path
sodipodi:type="arc"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.01988637;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
Zmodyfikowałem to w:
<path
sodipodi:type="arc"
style="fill:param(fill) #ffffff;fill-opacity:1;stroke:param(outline) #000000;stroke-width:param(stroke-width) 1.01988637;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
Zapisano jako circle_modified.svg i wybrał go jako symbol punktu, ale Qgis nie mógł zmienić wszystkich trzech parametrów jednocześnie.
Co zrobiłem źle lub powinienem zrobić inaczej?
Mój system: Qgis 1.8.0 na 64-bitowym Ubuntu 12.04, Inkscape 0.48, edytor tekstu Gedit 3.4.1.
class="st3"
niestyle="fill:#00a...
zfill="param(fill) #FFF" stroke="param(outline) #000" stroke-width="param(outline-width) 1"
tak aby pracować dla mnie. (Stworzyłem svg w ilustratorze).Chciałem to zrobić, odkąd wczoraj dowiedziałem się, jak dodać symbole SVG , ale wszystkie były czarne. Odpowiedź udzielona przez jgrocha działa - chciałem zagłosować, ale po dołączeniu do forum GIS muszę najpierw zyskać reputację!
Znalazłem również tę stronę, która potwierdza odpowiedź: SYMBOLE SVG W QGIS Z MODYFIKOWANYMI KOLORAMI
Dzięki!
źródło
Wydaje się, że warto udzielić prostej odpowiedzi na temat podstawowych plików SVG, aby przejść obok podanych tutaj szczegółów na temat szczegółów dotyczących oprogramowania ...
Plik SVG to tylko plik tekstowy. Zakończeniem pliku będzie .svg, ale można go otworzyć w edytorze tekstu takim samym jak plik z zakończeniem .txt
Prosty plik svg wygląda mniej więcej tak:
Widać przy tym, że kolory są zdefiniowane przez parametry (gdzie kropki są zastępowane znakami od 0 do 9 lub AF):
I szerokość obrysu jest zdefiniowana przez
Za pomocą edytora tekstu można dodać następujące elementy, aby zastąpić dowolne zdefiniowane wartości w SVG ... umożliwiając ustawienie wartości przez QGIS. QGIS rozumie wartość „param (fill)” - i inne wartości „param (...)” - ponieważ są one ustawiane przez sam QGIS.
Kolor wypełnienia:
fill="param(fill) #FFF"
Kolor konturu / linii:
stroke="param(outline) #000"
Kontur / szerokość linii:
stroke-width="param(outline-width) 1"
Wypełnienie krycia:
fill-opacity="param(fill-opacity)"
Krycie konturu / linii:
stroke-opacity="param(outline-opacity)"
Pamiętaj, że nic nie stoi na przeszkodzie, abyś używał wartości „param (...)” w nieco dziwnych miejscach - na przykład możesz użyć wartości „param (wypełnienie-krycie)” do zdefiniowania koloru wypełnienia w jednym bicie Plik SVG, ale kolor obrysu / linii w innym kawałku SVG.
W oknie dialogowym kompozytora QGIS lub symbolu stylu ustawienia kolorów SVG są dość oczywiste. Krycie wypełnienia i obrysu / linii jest ustawiane jako część ustawień kolorów. Ustawienie obrysu / szerokości linii jest oczywiste.
Wreszcie dwa punkty
Po pierwsze, zauważ, że w SVG prawidłowe jest zdefiniowanie kolorów jako zbioru takich atrybutów:
Wygląda na to, że nie działa poprawnie, jeśli dołączasz parametry opisane tutaj.
Po drugie, podczas korzystania z oprogramowania takiego jak Illustrator lub Inkscape, to oprogramowanie może dodawać wiele dodatkowych atrybutów do tekstu SVG. Jeśli wiesz, co robisz i rozumiesz podstawy SVG, jak wyżej, może uprościć życie, jeśli pozbędziesz się tego dodatkowego tekstu. W szczególności może się okazać, że kolory są ustawiane poprzez definicję stylów, a nie pozycja po pozycji.
źródło
Miałem również ten sam problem, ale po kilku próbach w końcu zadziałało. Piszę tutaj procedurę z nadzieją, że okaże się pomocna. Stworzyłem prostą spiralę w inkscape i zapisałem ją jako svg. Następnie otworzyłem go w edytorze tekstu (np. Notepad ++), a wpis „styl” pojawił się dwukrotnie w moim kodzie svg. Najpierw w tej części:
A potem tutaj:
Aby kod działał w celu uzyskania edytowalnej spirali svg w qgis, całkowicie usunąłem pierwszy wpis „style” z pierwszego fragmentu kodu:
I wstaw drugi „styl” w drugim fragmencie kodu w następujący sposób:
„# 000” i „#FFF” to dwa domyślne kolory wypełnienia i konturu, natomiast „1” to domyślna szerokość konturu, jeśli nie określono inaczej. Po zapisaniu tych zmian możesz zapisać plik SVG we właściwej ścieżce, określonej przez QGis (w zależności od wersji można go znaleźć w Ustawieniach -> Opcje -> Ścieżki SVG). Wreszcie twój nowy obiekt svg pojawi się wśród innych domyślnych obiektów i będzie można go edytować.
Mam nadzieję, że to może pomóc
źródło
Mam zamiar rozwinąć tę kwestię, ponieważ zajęło mi to trochę czasu, aby ją uruchomić. Zrób swój symbol i zapisz go jako Inkscape SVG i otwórz w edytorze tekstu. W dolnym bloku kodu zobaczysz; style = "fill: # 00a000; wypełnienie-krycie: 1; obrys: # 000000; szerokość obrysu: 1; (...)" Zamień ten wiersz na; fill = "param (fill) #FFF" stroke = "param (kontur) # 000" stroke-width = "param (kontur-szerokość) 1" W moich plikach SVG linia stylu pojawia się dla każdego elementu lub kształtu w pliku svg i zastąpienie tych linii nie działało dla mnie; ale robienie tego na dole na Inkscape SVG działało. Wypróbowałem moje rozwiązanie i wskazówki tutaj na temat zoptymalizowanych i zwykłych formatów SVG, ale to nie zadziałało, mam nadzieję, że to pomoże. Inkscape 0.48, QGIS 2.12.0, NotePad ++
źródło
Wydaje się, że to problem, jeśli użyjemy dokładnej wartości. Za każdym razem, gdy otwieramy opcje, indywidualna wartość koloru lub obrysu jest resetowana do wartości w SVG. Można to naprawić, ustawiając wartość w opcjach zaawansowanych. Moje testy pokazały mi, że lepiej byłoby używać
fill="param(fill)"
zamiastfill="param(fill) #FFF"
i tak dalej w SVG.Kolejne interesujące obejście: jeśli masz plik SVG z kolorem pierwszego planu i tła, możesz użyć koloru obrysu jako koloru tła wypełnienia. Zauważ, że nie możesz użyć osobnego koloru konturu dla całego SVG.
źródło
Dzięki Wam wszystkim. Jest tu kilka świetnych wskazówek, które wskazały mi właściwy kierunek, ale żadne nie odnosiło się do mojego konkretnego problemu, więc dodam to, co odkryłem do puli. Ponieważ wydaje się, że nie ma jednej właściwej odpowiedzi dla każdego przypadku, chciałbym najpierw zaproponować sugestię jak najszybszego przetestowania wyników.
Szybkie testy edycji
Dzięki tej konfiguracji możesz natychmiast zobaczyć, jak QGIS reaguje na twoje zmiany. Pozostaw plik svg otwarty w Notatniku, a panel właściwości otwórz w QGIS. Aby przetestować wyniki edycji, wystarczy nacisnąć Ctrl + S, aby zapisać ją w Notatniku i przełączyć na QGIS. Aby ponownie załadować plik SVG, zmień typ warstwy symbolu na dowolny inny, a następnie zmień go z powrotem na marker SVG. Jest tam tylko jeden, więc nie masz problemu ze znalezieniem go. Bardzo szybko przetestowałem dziesiątki edycji. Jeśli masz problemy z przywróceniem pliku svg do formy źródłowej po edycji, możesz go po prostu usunąć i wykonać kolejną kopię.
Edytowanie ikony SVG
Problem, który miałem, polegał na tym, że konkretna ikona, nad którą pracowałem, nie zawierała nigdzie słów „styl” ani „wypełnienie”, więc miałem problem z ustaleniem, gdzie należy umieścić linię parametru. Sztuczka Inkscape opisana przez Martinę rozwiązała ten problem, ale mam ich kilka do zrobienia i nie chciałem otwierać i zapisywać każdego w Inkscape, więc postanowiłem spróbować prób i błędów. Patrząc na kod, zauważyłem, że informacje o wersji i metadane były na górze, a instrukcje kształtu były na dole ujęte w cudzysłów, które były ograniczone na początku
<g><path d=
(niektóre mają<g><g><path d=
), a na końcu przez/></g></svg>
. Po krótkich eksperymentach odkryłem, że umieszczenie linii parametru międzypath
ad=
działało, ale ikona była niewidoczna w okienku wyboru, a ikona w okienku podglądu u góry była całkowicie wypełniona na czarno. Problem z niewidoczną ikoną wydaje się być błędem. Naprawiłem to, dodając parametr krycia, który opiszę poniżej. Okazało się, że czarne wypełnienie było tylko dlatego, że ikona miała tylko 4 mm i była wypełniona tylko konturem. Aby to naprawić, podniosłem rozmiar ikony do 10 mm (w QGIS) i podniosłem kontur do 0,1 (w Notatniku).Podsumowanie
Jeśli ikona nie ma nigdzie słów „styl” ani „wypełnij”, ale ma tę linię
<g><path d=
(lub<g><g><path d=
) tuż przed instrukcjami kształtu, możesz dodać parametry edycji, zastępując powyższą linię słowem<g><path fill="param(fill) #FFF" stroke="param(outline) #000" stroke-width="param(outline-width) 1" d=
Jeśli ramka jest zbyt gruba, możesz ją zmniejszyć, zmieniając ostatnią liczbę na ułamek, np
<g><path fill="param(fill) #FFF" stroke="param(outline) #000" stroke-width="param(outline-width) 0.5" d=
Jeśli chcesz, aby ikona była półprzezroczysta, możesz to zrobić, zmieniając powyższą linię na tę
<g><path style="opacity:0.5;fill:param(fill) #FFF" stroke="param(outline) #000" stroke-width="param(outline-width) 1" d=
. Wartość krycia może wynosić od 1 (całkowicie nieprzezroczysta) do 0 (całkowicie przezroczysta) i można użyć setnych, a nawet tysięcznych dla dodatkowej precyzji (np. 0,01). Ta sama zasada dotyczy grubości obramowania.Jeśli masz ich wiele do edycji, możesz znaleźć pliki wsadowe tutaj na StackExchange, aby zautomatyzować proces wyszukiwania i zamiany.
źródło