21.2.4. A rotulagem de item
o item: guilabel: Label ‘é uma ferramenta que ajuda a decorar seu mapa com textos que ajudam a entendê-lo; pode ser o título, autor, fontes de dados ou qualquer outra informação…Você pode adicionar um rótulo com o | label | : guilabel: `Adicionar etiqueta ferramenta a seguir: ref:` itens instruções de criação <create_layout_item>`e manipule-a da mesma maneira como exposto em: ref:` interact_layout_item
Por padrão, o item de rótulo fornece um texto padrão que você pode personalizar usando seu painel Propriedades do item. Além das Propriedades comuns dos itens 1, este recurso tem as seguintes funcionalidades (veja :número ref:figura_layout_rótulo):
21.2.4.1. Propriedades principais
O grupo Principais propriedades é o local para fornecer o texto do rótulo. O texto pode ser estático, dinâmico com funções e variáveis :ref:expressão 1, e/ou formatado com HTML. Partes dinâmicas de um rótulo precisam ser cercadas por [%
e %]
para serem interpretadas e avaliadas como tal.
Para usar expressões em rótulos, você pode clicar no botão Inserir/Editar Expressão…, escrever sua fórmula como de costume e quando a caixa de diálogo for aplicada, o QGIS adiciona automaticamente os caracteres ao redor.
Dica
Clicar no botão Inserir/Editar expressão… quando nenhuma seleção é feita na caixa de texto irá anexar a nova expressão ao texto existente. Se você deseja modificar uma expressão existente, primeiro você precisa selecionar a parte de seu interesse.
Como os mapas geralmente são preenchidos com algumas informações textuais comuns (data, autor, título, número da página, …), o QGIS fornece acesso direto às expressões ou variáveis correspondentes: pressione o botão Texto dinâmico para selecionar e insira-os em sua etiqueta.
Dica
O menu superior: seleção de menu: Adicionar Item –> Adicionar texto dinâmico –> pode ser usado para criar um novo item de etiqueta preenchido com a expressão predefinida selecionada.
É possível transformar um rótulo dinâmico em estático: pressione a seta suspensa ao lado do botão Inserir/Editar Expressão… e selecione Converter para estático. Quaisquer partes dinâmicas do conteúdo do rótulo serão avaliadas e substituídas por seus valores atuais. Você pode ajustar manualmente o texto resultante quando necessário.
As etiquetas podem ser interpretadas como código HTML: verificar |caixa de seleção| Renderizar como HTML. Agora você pode inserir marcações ou estilos HTML, URL, uma imagem clicável com link para uma página da web ou algo mais complexo…
O código a seguir combina renderização HTML com expressões, para uma rotulagem avançada e produzirá :número ref:figura_layout_rótulo_html:
<html>
<head>
<style>
/* Define some custom styles, with attribute-based size */
name {color:red; font-size: [% ID %]px; font-family: Verdana; text-shadow: grey 1px 0 10px;}
use {color:blue;}
</style>
</head>
<body>
<!-- Information to display -->
<u>Feature Information</u>
<ul style="list-style-type:disc">
<li>Feature Id: [% ID %]</li>
<li>Airport: <name>[% NAME %]</name></li>
<li>Main use: <use>[% USE %]</use></li>
</ul>
Last check: [% concat( format_date( "control_date", 'yyyy-MM-dd'), ' by <b><i>', @user_full_name, '</i></b>' ) %]
<!-- Insert an image -->
<p align=center><img src="path/to/logos/qgis-logo-made-with-color.svg" alt="QGIS icon" style="width:80px;height:50px;"</p>
</body>
</html>
21.2.4.2. Aparência
Define font and style of the text by clicking on the Font button. In the Label Font menu you can use some of the options for Formatting the label text.
Você pode especificar diferentes margens horizontais e verticais em
mm
. Esta é a margem da borda do item de layout. O rótulo pode ser posicionado fora dos limites do rótulo, por exemplo. para alinhar itens de etiqueta com outros itens. Nesse caso, você deve usar valores negativos para a margem.Usar o alinhamento de texto é outra maneira de posicionar seu rótulo. Pode ser:
Esquerda, Centro, Direita ou Justificar para Alinhamento horizontal
e Topo, meio, botão para Alinhamento vertical.
21.2.4.3. Explorando expressões em um item de etiqueta
Abaixo alguns exemplos de expressões que você pode usar para preencher o item do rótulo com informações interessantes - lembre-se que o código, ou pelo menos a parte calculada, deve estar entre [%
e %]
no :guilabel :Quadro das propriedades principais:
Exiba um título com o valor atual do recurso do atlas em “campo1”:
'This is the map for ' || "field1"
ou, escrito na seção Principais propriedades:
This is the map for [% "field1" %]
Adicione uma paginação para recursos de atlas processados (por exemplo, `` Página 1/10 ‘’)
concat( 'Page ', @atlas_featurenumber, '/', @atlas_totalfeatures )
Retorne o nome dos aeroportos do recurso atual da região do atlas, com base em seus atributos comuns:
aggregate( layer := 'airports', aggregate := 'concatenate', expression := "NAME", filter := fk_regionId = attribute( @atlas_feature, 'ID' ), concatenator := ', ' )
Ou, se uma relação de atributos 1 for definida:
relation_aggregate( relation := 'airports_in_region_relation', aggregate := 'concatenate', expression := "NAME", concatenator := ', ' )
Retorne o nome dos aeroportos contidos na feição atual da região do atlas, com base em sua relação espacial:
aggregate( layer := 'airports', aggregate := 'concatenate', expression := "NAME", filter := contains( geometry( @parent ), $geometry ), concatenator := ', ' )
OU:
array_to_string( array:= overlay_contains( layer := 'airports', expression := "NAME" ), delimiter:= ', ' )
Retorne a coordenada X inferior da extensão do item
Mapa 1
:x_min( map_get( item_variables( 'Map 1' ), 'map_extent' ) )
Recupere o nome das camadas no item
Mapa 1
do layout atual e formate em um nome por linha:array_to_string( array_foreach( map_get( item_variables( 'Map 1' ), 'map_layers' ), -- retrieve the layers list layer_property( @element, 'name' ) -- retrieve each layer name ), '\n' -- converts the list to string separated by breaklines )
Exiba a lista de camadas com seus strings de licença (direitos de uso) em um item de layout
Mapa 1
. Você precisa preencher as propriedades Metadados de acesso 1 das camadas primeiro.array_to_string( map_credits( 'Map 1', true ) )