"$ CURRENT_DATE (aaaa-MM-dd)" acabou sendo muito útil e eu o incluí em muitos dos meus modelos de compositor. Existem mais desses comandos disponíveis? Gostaria de mostrar automaticamente o nome do meu projeto, ou um determinado nome de camada, etc.?
SAnderka
Respostas:
8
Atualmente, essa é uma solicitação de recurso não atendida (consulte o recurso 1385 ).
No entanto, existem soluções melhores do que tentar implementar todos os tipos de tokens que os usuários possam precisar ou solicitar (que pode ser uma lista que se expande).
Atualmente, existem pelo menos dois meios para implementar uma solução mais robusta:
A) O texto da etiqueta é opcionalmente gerado usando o Editor de Expressão QGIS
Atualmente, este é o método usado no mecanismo de rotulagem avançado ...
Como os rótulos do Composer não são relativos à fonte de dados de uma camada de mapa, a seção Fields and Valuesprecisa ser substituída e preenchida com tokens de impressão mais apropriados, como nome do projeto, título, projeção, usuário etc. (as funções de data já estão no mestre ramificações). Felizmente, tem havido trabalho dos desenvolvedores para tornar relativamente "fácil" adicionar novas seções de expressão, embora ainda seja necessário algum trabalho. Também seria necessário trabalho adicional para acomodar novos tokens.
B) O texto do rótulo (ou tokens) é opcionalmente o resultado do snippet (s) do Python
Embora não seja tão amigável quanto a solução Editor de Expressão, uma vez que requer uma compreensão do Python, a implementação de um desses recursos possivelmente exigiria apenas um único esforço de desenvolvimento. Então, qualquer aspecto textual de um projeto QGIS, incluindo seus vários itens do Composer , disponíveis via API do PyQGIS (por exemplo, Python Console), pode ser acessado, formatado e enviado para o texto.
Os trechos do Python podem ser agrupados em tokens individuais e incorporados no texto atual da caixa de edição de texto ou contidos em uma caixa de edição de texto separada na GUI, ativada pela caixa de seleção. Por motivos de segurança, o código provavelmente não seria executado automaticamente no lançamento do Composer (poderia ser uma opção para permitir sempre).
A abordagem de caixa de edição de texto separada permitiria a validação de código Python e a codificação de funções Python nomeadas especificamente, por exemplo, o seguinte snippet:
substituiria qualquer número de tokens no texto nomeados $pytoken_userou $pytoken_title.
Ambas as soluções acima são consideravelmente mais extensíveis do que a implementação de tokens individuais em linha no código fonte do QGIS. Também pode haver outras ou melhores soluções.
O Dr. Hugentobler recentemente reformulou o Compositor de Impressão na filial principal do QGIS, portanto agora é o momento ideal para solicitar esses recursos de rotulagem para a próxima versão do QGIS . Vou adicionar uma solicitação de recurso para esses dois o mais rápido possível.
Respostas:
Atualmente, essa é uma solicitação de recurso não atendida (consulte o recurso 1385 ).
Você pode adicionar suas idéias para novos 'tokens' (ou 'campos', conforme eles são identificados na solicitação). Lembre-se de incluir opções de formatação recomendados conforme as classes do Qt para o tipo de dados , como tem sido feito com a sintaxe
$CURRENT_DATE(yyyy-MM-dd)
, que é resolvido usandoQDate::currentDate().toString( formatText )
e QDate classe string formatação .No entanto, existem soluções melhores do que tentar implementar todos os tipos de tokens que os usuários possam precisar ou solicitar (que pode ser uma lista que se expande).
Atualmente, existem pelo menos dois meios para implementar uma solução mais robusta:
A) O texto da etiqueta é opcionalmente gerado usando o Editor de Expressão QGIS
Atualmente, este é o método usado no mecanismo de rotulagem avançado ...
Como os rótulos do Composer não são relativos à fonte de dados de uma camada de mapa, a seção
Fields and Values
precisa ser substituída e preenchida com tokens de impressão mais apropriados, como nome do projeto, título, projeção, usuário etc. (as funções de data já estão no mestre ramificações). Felizmente, tem havido trabalho dos desenvolvedores para tornar relativamente "fácil" adicionar novas seções de expressão, embora ainda seja necessário algum trabalho. Também seria necessário trabalho adicional para acomodar novos tokens.B) O texto do rótulo (ou tokens) é opcionalmente o resultado do snippet (s) do Python
Embora não seja tão amigável quanto a solução Editor de Expressão, uma vez que requer uma compreensão do Python, a implementação de um desses recursos possivelmente exigiria apenas um único esforço de desenvolvimento. Então, qualquer aspecto textual de um projeto QGIS, incluindo seus vários itens do Composer , disponíveis via API do PyQGIS (por exemplo, Python Console), pode ser acessado, formatado e enviado para o texto.
Os trechos do Python podem ser agrupados em tokens individuais e incorporados no texto atual da caixa de edição de texto ou contidos em uma caixa de edição de texto separada na GUI, ativada pela caixa de seleção. Por motivos de segurança, o código provavelmente não seria executado automaticamente no lançamento do Composer (poderia ser uma opção para permitir sempre).
A abordagem de caixa de edição de texto separada permitiria a validação de código Python e a codificação de funções Python nomeadas especificamente, por exemplo, o seguinte snippet:
substituiria qualquer número de tokens no texto nomeados
$pytoken_user
ou$pytoken_title
.Ambas as soluções acima são consideravelmente mais extensíveis do que a implementação de tokens individuais em linha no código fonte do QGIS. Também pode haver outras ou melhores soluções.
O Dr. Hugentobler recentemente reformulou o Compositor de Impressão na filial principal do QGIS, portanto agora é o momento ideal para solicitar esses recursos de rotulagem para a próxima versão do QGIS . Vou adicionar uma solicitação de recurso para esses dois o mais rápido possível.
fonte