Я хочу создать некоторые символы SVG для Qgis, используя Inkscape, эти символы должны иметь атрибуты, как описано в вопросе. В течение последних двух дней я экспериментировал в соответствии с инструкциями Sourcepole и подражал некоторым символам, поставляемым в комплекте с qgis, которые имели желаемые атрибуты без какого-либо успеха.
Наконец, я экспериментировал с простейшей формой символа: я создал SVG, который содержит только круг в Inkscape, и попытался изменить его.
Исходный файл ( circle.svg ) имеет следующую строку:
<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"
Я изменил это в:
<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"
Сохранено как circle_modified.svg и выбрано в качестве символа точки, но Qgis не может изменить все три параметра одновременно.
Что я сделал не так или должен поступить иначе?
Моя система: Qgis 1.8.0 в 64-битной Ubuntu 12.04, Inkscape 0.48, текстовый редактор Gedit 3.4.1.
class="st3"
, а неstyle="fill:#00a...
сfill="param(fill) #FFF" stroke="param(outline) #000" stroke-width="param(outline-width) 1"
тем, чтобы заставить его работать на меня. (Я создал svg в иллюстраторе.)Кажется, стоит дать простой ответ об основах SVG, чтобы дополнить детали, представленные здесь, об особенностях программного обеспечения ...
Файл SVG - это просто текстовый файл. Конец файла будет .svg, но его можно открыть в текстовом редакторе так же, как файл с окончанием .txt.
Простой SVG-файл выглядит примерно так:
В этом вы можете видеть, что цвета определяются параметрами (где точки заменяются символами от 0 до 9 или AF):
И ширина хода определяется
Следующее может быть добавлено с помощью текстового редактора, чтобы заменить любые определенные значения, которые вы выбираете в SVG ..., позволяя устанавливать значения в QGIS. QGIS понимает значение для «param (fill)» - и другие значения «param (...)» - так как они устанавливаются самой QGIS.
Цвет заливки:
fill="param(fill) #FFF"
Цвет контура / линии:
stroke="param(outline) #000"
Контур / ширина линии:
stroke-width="param(outline-width) 1"
Заполните непрозрачность:
fill-opacity="param(fill-opacity)"
Непрозрачность контура / линии:
stroke-opacity="param(outline-opacity)"
Обратите внимание, что ничто не мешает вам использовать значения 'param (...)' в немного странных местах - например, вы можете использовать значение 'param (fill-opacity)', чтобы определить цвет заливки в одном бите Файл SVG, но цвет обводки / линии в другом бите SVG.
В диалоговом окне QGIS composer или style style настройки для цветов SVG довольно очевидны. Непрозрачность заливки и обводки / линий задается как часть настроек цвета. Настройка ширины обводки / линии очевидна.
Наконец два очка
Во-первых, обратите внимание, что в SVG можно определить цвета как набор атрибутов, например:
Похоже, что это не работает должным образом, если вы включаете параметры, как описано здесь.
Во-вторых, при использовании программного обеспечения, такого как Illustrator или Inkscape, многие дополнительные атрибуты могут быть добавлены в текст SVG этим программным обеспечением. Если вы знаете, что делаете и понимаете основы SVG, как указано выше, это может упростить жизнь, если вы избавитесь от этого дополнительного текста. В частности, вы можете обнаружить, что цвета задаются с помощью определения стилей, а не элемента за элементом.
источник
Я также хотел сделать это с тех пор, как вчера узнал, как добавить символы SVG , но все они были черными. Ответ от jgrocha работает - я хотел бы проголосовать, но, только что присоединившись к форуму ГИС, мне нужно сначала получить некоторую репутацию!
Я также нашел эту страницу, которая подтверждает ответ: SVG СИМВОЛЫ В QGIS С ИЗМЕНЯЕМЫМИ ЦВЕТАМИ
Благодарность!
источник
У меня тоже была такая же проблема, но после некоторых попыток она наконец заработала. Я пишу здесь процедуру, надеясь, что она поможет. Я создал простую спираль в Inkscape и сохранил ее как SVG. Затем я открыл его в текстовом редакторе (например, Notepad ++), и в моем коде svg дважды появилась запись «style». Сначала в этом куске:
И тогда здесь:
Чтобы код работал, чтобы иметь редактируемую спираль svg в qgis, я полностью удалил первую запись «style» из первого фрагмента кода:
И замените вторую запись «style» во втором фрагменте кода следующим образом:
«# 000» и «#FFF» - это два цвета по умолчанию для заливки и контура, а «1» - это ширина контура по умолчанию, если не указано иное. После сохранения этих изменений вы можете сохранить svg в правильном пути, указанном QGis (в зависимости от версии его можно найти в меню «Настройки» -> «Параметры» -> «Пути SVG»). Наконец, ваш новый объект SVG появится среди других объектов по умолчанию, и он будет доступен для редактирования.
Надеюсь, что это может помочь
источник
Я собираюсь остановиться на этом, потому что мне потребовалось некоторое время, чтобы заставить его работать. Сделайте ваш символ и сохраните его как Inkscape SVG и откройте в текстовом редакторе. В нижнем блоке кода вы увидите; style = "fill: # 00a000; непрозрачность заполнения: 1; обводка: # 000000; ширина обводки: 1; (...)" Заменить эту строку на; fill = "param (fill) #FFF" stroke = "param (outline) # 000" stroke-width = "param (outline-width) 1" В моих файлах SVG линия стиля отображается для каждого объекта или фигуры в svg и замена этих строк не работает для меня; но работа в нижней части Inkscape SVG работала. Я опробовал свое решение и указания здесь на оптимизированных и простых форматах SVG, но это не сработало, надеюсь, это поможет. Inkscape 0.48, QGIS 2.12.0, NotePad ++
источник
Это кажется проблемой, если мы используем точное значение. Каждый раз, когда мы открываем опции, отдельные значения цвета или обводки сбрасываются на значения в SVG. Это можно исправить, установив значение в дополнительных параметрах. Мои тесты показали, что было бы лучше использовать
fill="param(fill)"
вместоfill="param(fill) #FFF"
SVG и т. Д.Еще один интересный обходной путь: если у вас есть SVG с цветом переднего плана и фона, вы можете использовать цвет обводки в качестве фона заливки. Обратите внимание, тогда вы не можете использовать отдельный цвет контура для всего SVG.
источник
Спасибо вам всем. Здесь есть несколько отличных советов, и они указали мне правильное направление, но ни один не решил мою конкретную проблему, поэтому я добавлю то, что я понял, в банк. Поскольку, похоже, нет правильного ответа для каждого случая, я хотел бы сначала предложить предложение для проверки ваших результатов как можно быстрее.
Быстрое редактирование Тестирование
С помощью этой настройки вы можете сразу увидеть, как QGIS реагирует на ваши изменения. Оставьте файл svg открытым в Блокноте и панель свойств в QGIS. Чтобы проверить результаты редактирования, просто нажмите Ctrl + S, чтобы сохранить его в Блокноте и переключиться на QGIS. Чтобы перезагрузить SVG, измените тип слоя символов на что-нибудь еще, затем верните его обратно в маркер SVG. Там также есть только один, так что у вас нет проблем с его поиском. Я очень быстро проверил десятки правок. Если у вас возникли проблемы с возвратом svg в исходную форму после редактирования, вы можете просто удалить его и сделать еще одну копию.
Создание SVG Icon Editable
Проблема, с которой я столкнулся, заключалась в том, что на конкретном значке, над которым я работал, нигде не было слов «стиль» или «заливка», поэтому я не мог понять, куда поместить строку параметра. Уловка Inkscape, описанная Мартиной, решила эту проблему, но у меня есть куча из них, и я не хотел открывать и сохранять каждый в Inkscape, поэтому я решил попробовать методом проб и ошибок. Глядя на код, я увидел, что информация о версии и метаданные были вверху, а инструкции формы были внизу заключены в кавычки, которые были ограничены в начале
<g><path d=
(некоторые имеют<g><g><path d=
), а в конце -/></g></svg>
. После небольшого эксперимента я выяснил, что размещение строки параметров междуpath
иd=
работал, но значок был невидимым на панели выбора, а значок на панели предварительного просмотра вверху был полностью залит черным. Кажется, проблема с невидимым значком была ошибкой. Я исправил это, добавив параметр непрозрачности, который я опишу ниже. Оказалось, что черная заливка была только потому, что значок был только 4 мм, и он был заполнен только контуром. Чтобы это исправить, я увеличил размер значка до 10 мм (в QGIS) и уменьшил контур до 0,1 (в Блокноте).Резюме
Если ваша иконка нигде не содержит слов «стиль» или «заливка», но у нее есть эта строка
<g><path d=
(или<g><g><path d=
) прямо перед инструкциями формы, вы сможете добавить параметры редактирования, заменив вышеуказанную строку на<g><path fill="param(fill) #FFF" stroke="param(outline) #000" stroke-width="param(outline-width) 1" d=
Если граница слишком толстая, вы можете уменьшить ее, изменив последнее число на дробь, например
<g><path fill="param(fill) #FFF" stroke="param(outline) #000" stroke-width="param(outline-width) 0.5" d=
Если вы хотите сделать свой значок полупрозрачным, вы можете сделать это, изменив приведенную выше строку на эту
<g><path style="opacity:0.5;fill:param(fill) #FFF" stroke="param(outline) #000" stroke-width="param(outline-width) 1" d=
. Значение непрозрачности может быть от 1 (полностью непрозрачное) до 0 (полностью прозрачное), и вы можете использовать сотые или даже тысячные для дополнительной точности (например, 0,01). То же правило относится к толщине границы.Если у вас есть много их для редактирования, вы можете найти пакетные файлы здесь, в StackExchange, чтобы автоматизировать процесс поиска и замены.
источник