Eu quero criar alguns símbolos svg para o Qgis usando o Inkscape, esses símbolos devem ter atributos conforme descrito na pergunta. Nos últimos dois dias, tenho experimentado as instruções do Sourcepole e imitamos alguns símbolos que vêm com qgis que possuem atributos desejados sem sucesso.
Finalmente, experimentei a forma mais simples de símbolo: criei um svg que contém apenas um círculo no Inkscape e tentei modificá-lo.
O arquivo original ( circle.svg ) tem esta linha:
<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"
Eu modifiquei para:
<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"
Salvei como circle_modified.svg e o selecionei como símbolo de ponto, mas o Qgis não pôde alterar os três parâmetros ao mesmo tempo.
O que fiz de errado ou devo fazer de diferente?
Meu sistema: Qgis 1.8.0 no Ubuntu 12.04 64 bits, Inkscape 0.48, editor de texto Gedit 3.4.1.
class="st3"
, nãostyle="fill:#00a...
com afill="param(fill) #FFF" stroke="param(outline) #000" stroke-width="param(outline-width) 1"
fim de fazê-lo funcionar para mim. (I criou o SVG no Illustrator.)Eu também queria fazer isso desde que descobri como adicionar símbolos SVG ontem , mas todos eram pretos. A resposta dada pelo jgrocha funciona - eu queria votar, mas, depois de entrar no fórum GIS, preciso primeiro obter alguma reputação!
Também encontrei esta página que confirma a resposta: SÍMBOLOS SVG EM QGIS COM CORES MODIFICÁVEIS
Obrigado!
fonte
Parece valer a pena fornecer uma resposta simples sobre os conceitos básicos de SVGs para acompanhar os detalhes fornecidos aqui sobre detalhes sobre software ...
Um arquivo SVG é apenas um arquivo de texto. O final do arquivo será .svg, mas pode ser aberto em um editor de texto o mesmo que um arquivo com o final .txt
Um simples arquivo svg se parece com isso:
Neste, você pode ver que as cores são definidas pelos parâmetros (onde os pontos são substituídos por caracteres entre 0-9 ou AF):
E a largura do traço é definida por
É possível adicionar o seguinte, usando o editor de texto, para substituir os valores definidos que você escolher no SVG ..., possibilitando que os valores sejam definidos pelo QGIS. O QGIS entende um valor para 'param (fill)' - e os outros valores 'param (...)' - pois esses são definidos pelo próprio QGIS.
Cor de preenchimento:
fill="param(fill) #FFF"
Cor do contorno / linha:
stroke="param(outline) #000"
Estrutura de tópicos / largura da linha:
stroke-width="param(outline-width) 1"
Opacidade de preenchimento:
fill-opacity="param(fill-opacity)"
Esboço / opacidade da linha:
stroke-opacity="param(outline-opacity)"
Observe que não há nada que o impeça de usar os valores 'param (...)' em locais um pouco estranhos - por exemplo, você pode usar o valor 'param (opacidade de preenchimento)' para definir uma cor de preenchimento em um bit do Arquivo SVG, mas uma cor de traço / linha em outro bit do SVG.
Na caixa de diálogo QGIS compositor ou símbolo de estilo, as configurações das cores SVG são bastante óbvias. A opacidade de preenchimento e traçado / linha é definida como parte das configurações de cores. A configuração do traço / largura da linha é óbvia.
Por fim, dois pontos
Primeiro, observe que enquanto estiver em um SVG, é válido definir as cores como uma coleção de atributos da seguinte forma:
Isso parece não funcionar corretamente se você estiver incluindo parâmetros conforme descrito aqui.
Segundo, ao usar software como o Illustrator ou o Inkscape, muitos atributos adicionais podem ser adicionados ao texto SVG por este software. Se você sabe o que está fazendo e entende os conceitos básicos de um SVG, como acima, ele pode tornar a vida mais simples se você se livrar desse texto adicional. Em particular, você pode achar que as cores são definidas através da definição de estilos, em vez de item por item.
fonte
Eu também tive o mesmo problema, mas depois de algumas tentativas, finalmente funcionou. Estou escrevendo aqui o procedimento esperando que seja de alguma ajuda. Eu criei uma espiral simples no inkscape e salvei como svg. Então eu abri em um editor de texto (por exemplo, Notepad ++) e a entrada "style" ocorreu duas vezes no meu código svg. Primeiro neste pedaço:
E então aqui:
Para fazer o código funcionar para ter uma espiral svg editável no qgis, removi completamente a primeira entrada "style" do primeiro bloco de código:
E substitua a segunda entrada "estilo" no segundo pedaço de código da seguinte maneira:
"# 000" e "#FFF" são duas cores padrão para o preenchimento e o contorno, enquanto "1" é a largura padrão do contorno, se não for especificado de maneira diferente. Após salvar essas alterações, você pode armazenar o svg no caminho correto, o especificado pelo QGis (dependendo da versão, pode ser encontrado em Configurações -> Opções -> caminhos SVG). Finalmente, seu novo objeto svg aparecerá entre os outros objetos padrão e será editável.
Espero que possa ajudar
fonte
Vou expandir isso porque levei um tempo para fazê-lo funcionar. Crie seu símbolo e salve-o como um Inkscape SVG e abra no editor de texto. No bloco de código inferior, você verá; style = "fill: # 00a000; opacidade de preenchimento: 1; traço: # 000000; largura do traçado: 1; (...)" Substitua esta linha por; fill = "param (fill) #FFF" stroke = "param (estrutura) # 000" stroke-width = "param (estrutura de tópicos) 1" Nos meus arquivos SVG, a linha de estilo aparece para cada entidade ou forma no svg e substituir essas linhas não funcionou para mim; mas fazê-lo na parte inferior de um Inkscape SVG funcionou. Tentei minha solução e as instruções aqui nos formatos SVG otimizado e simples, mas não funcionou, espero que ajude. Inkscape 0.48, QGIS 2.12.0, NotePad ++
fonte
Parece ser um problema, se usarmos um valor exato. Sempre que abrimos as opções, um valor individual para cor ou traçado é redefinido para os valores no SVG. Isso pode ser corrigido definindo um valor nas opções avançadas. Meus testes mostraram-me, seria melhor usar
fill="param(fill)"
em vez defill="param(fill) #FFF"
e assim por diante no SVG.Outra solução interessante: se você tiver um SVG com cor de primeiro plano e plano de fundo, poderá usar a cor do traçado como cor de fundo do preenchimento. Observe que você não pode usar uma cor de contorno separada para todo o SVG.
fonte
Obrigado a todos. Há algumas ótimas dicas aqui e elas me apontaram na direção certa, mas nenhuma abordou meu problema específico, então adicionarei o que descobri ao pote. Como não parece haver uma resposta certa para todos os casos, gostaria de oferecer uma sugestão para testar seus resultados o mais rápido possível.
Teste de edição rápida
Com essa configuração, você pode ver imediatamente como o QGIS responde às suas edições. Deixe o arquivo svg aberto no Bloco de Notas e o painel de propriedades aberto no QGIS. Para testar os resultados de uma edição, basta pressionar Ctrl + S para salvá-lo no Bloco de Notas e passar para QGIS. Para recarregar o svg, altere o tipo de camada de símbolo para qualquer outra coisa e, em seguida, altere-o novamente para o marcador SVG. Também há apenas um lá, então você não terá problemas para encontrá-lo. Testei dezenas de edições muito rapidamente assim. Se você tiver algum problema para obter o svg de volta ao formulário de origem após uma edição, basta excluí-lo e fazer outra cópia.
Tornando o ícone SVG editável
O problema que tive foi que o ícone específico em que eu estava trabalhando não tinha as palavras "estilo" ou "preenchimento" em nenhum lugar, por isso tive problemas para descobrir onde colocar a linha de parâmetro. O truque do Inkscape descrito por Martina resolveu esse problema, mas tenho um monte deles para fazer e não queria abrir e salvar cada um no Inkscape, por isso decidi tentar tentativa e erro. Observando o código, pude ver que as informações e os metadados da versão estavam na parte superior e as instruções de forma na parte inferior, entre aspas, delimitadas no início por
<g><path d=
(algumas têm<g><g><path d=
) e no final por/></g></svg>
. Depois de algumas experiências, descobri que colocar a linha de parâmetro entrepath
ed=
funcionou, mas o ícone estava invisível no painel seletor e o ícone no painel de visualização na parte superior foi totalmente preenchido em preto. O problema do ícone invisível parece ter sido um bug. Corrigi-o adicionando um parâmetro de opacidade que descreverei abaixo. Verificou-se que o preenchimento preto era apenas porque o ícone tinha apenas 4 mm e foi preenchido apenas pelo contorno. Para corrigir isso, aumentamos o tamanho do ícone em até 10 mm (no QGIS) e aumentamos o contorno para 0,1 (no bloco de notas).Sumário
Se o seu ícone não tiver as palavras "estilo" ou "preenchimento" em nenhum lugar, mas tiver esta linha
<g><path d=
(ou<g><g><path d=
) logo antes das instruções de forma, você poderá adicionar os parâmetros de edição substituindo a linha acima por<g><path fill="param(fill) #FFF" stroke="param(outline) #000" stroke-width="param(outline-width) 1" d=
Se a borda for muito grossa, você pode encolher alterando o último número para uma fração, por exemplo
<g><path fill="param(fill) #FFF" stroke="param(outline) #000" stroke-width="param(outline-width) 0.5" d=
Se você deseja tornar seu ícone semitransparente, faça isso alterando a linha acima para esta
<g><path style="opacity:0.5;fill:param(fill) #FFF" stroke="param(outline) #000" stroke-width="param(outline-width) 1" d=
. O valor da opacidade pode ser de 1 (totalmente opaco) a 0 (totalmente transparente) e você pode usar centésimos ou até milésimos para precisão adicional (por exemplo, 0,01). A mesma regra vale para a espessura da borda.Se você tiver muitos deles para editar, poderá encontrar arquivos em lote aqui no StackExchange para automatizar o processo de pesquisa e substituição.
fonte