Você pode fornecer algumas capturas de tela da sua tabela de atributos e os pontos atuais exibidos no mapa?
whyzar
@whyzar Exemplo de imagem carregada
Jakob
2
A colisão também pode ser reduzida se você definir a opção "Desencorajar etiquetas dos recursos de cobertura" na guia Renderização.
MAP
Eu não acho que isso possa ser feito. Nada na API quer para verificar se um rótulo é visível: qgis.org/api/classQgsLabel.html
HeikkiVesanto
Outra pergunta foi feita que cobre a necessidade / desejo de detectar quais recursos estão rotulados ou não. Quaisquer respostas úteis para isso podem dar a alguém um novo ângulo para abordar essa questão.
Phil G
Respostas:
3
Isso não é o ideal, mas se você estiver de acordo com o rótulo sempre aparecendo no marcador, poderá usar um plano de fundo em seu rótulo como solução alternativa.
Vá para Propriedades da camada e, em Estilo, escolha "Sem símbolos" (sim, você leu certo).
Em Rótulos, escolha Plano de fundo no submenu (parece um símbolo de rodovia interestadual). Normalmente, uso um SVG, mas um círculo pode funcionar bem para o que você deseja.
No submenu Plano de fundo, escolha seu Tipo de tamanho: Buffer ou Fixo. Com o Buffer, o símbolo aumentará até que seja grande o suficiente para abranger todo o texto, portanto, espero que você queira consertar. O exemplo abaixo usa buffer.
Na parte superior da seção Rótulos, escolha o campo com o qual deseja rotular ou insira uma expressão.
Verifique se o canal não está deslocado.
Desvantagens:
Complicações com o símbolo exibido em uma legenda em um compositor de impressão (existem soluções alternativas ao criar outra camada e referenciá-la no índice, antes de desativar e bloquear as camadas)
O texto está centralizado no símbolo. Você pode concatenar espaços na frente do rótulo para movê-lo para a direita, mas mais outros rótulos ficam ocultos e não são exibidos. Você não tem a opção de mover rótulos em torno de pontos para a menor quantidade de conflito.
Você perde muita funcionalidade na formatação de símbolos, como escalas de cores.
Parece que os conflitos de rótulo às vezes precisam ser mais severos para ocultar o rótulo - o meu às vezes se sobrepõe sem alguns detalhes. Isso pode ser resultado do uso do tipo de tamanho do buffer.
Um exemplo que pega um nome de arquivo de "campo_1" e remove a extensão .jpg para formar o texto do rótulo para os locais das fotos:
Os resultados:
zoom in: e zoom out:
(nota - a direção que o ícone svg aponta foi definida por uma expressão referenciando outro campo na tabela)
Você pode me dar um pequeno exemplo de consulta para selecionar valores que atualmente mostram um rótulo?
Jakob
Certamente, forneça uma captura de tela da tabela de atributos com a qual você está trabalhando e quais campos têm os rótulos desejados.
usar o seguinte comando
Acabei de perceber que, para o QGIS, trabalho principalmente com o ArcGIS, mas em teoria o processo deve ser o mesmo, para selecionar todos os dados associados aos valores que possuem os rótulos e criar uma nova camada com esses valores selecionados.
usar o seguinte comando
-3
Defina uma regra (estilo baseado em regras) para o seu símbolo :
"label" IS NOT NULL
(supondo que seu campo para rótulos seja nomeado "rótulo")
Agora os símbolos serão mostrados, se o campo para etiquetas não estiver vazio.
Eu não acho que é isso que o OP está pedindo. Os valores no rótulo não serão nulos, eles apenas não serão mostrados porque se sobrepõem a outros rótulos.
Respostas:
Isso não é o ideal, mas se você estiver de acordo com o rótulo sempre aparecendo no marcador, poderá usar um plano de fundo em seu rótulo como solução alternativa.
Desvantagens:
Um exemplo que pega um nome de arquivo de "campo_1" e remove a extensão .jpg para formar o texto do rótulo para os locais das fotos:
Os resultados:
zoom in: e zoom out:
(nota - a direção que o ícone svg aponta foi definida por uma expressão referenciando outro campo na tabela)
fonte
você já deu uma olhada no excelente tutorial de Nyall Dawson em http://nyalldawson.net/2015/07/recent-labelling-improvements-in-qgis-master/
No terceiro segmento de seu tutorial, ele discute a criação de uma camada de obstáculos. Isso pode ajudá-lo.
fonte
Basta selecionar todos os valores que possuem um rótulo usando uma consulta, exportar para a nova camada do que usar a camada recém-criada.
fonte
Defina uma regra (estilo baseado em regras) para o seu símbolo :
"label" IS NOT NULL
(supondo que seu campo para rótulos seja nomeado "rótulo")
Agora os símbolos serão mostrados, se o campo para etiquetas não estiver vazio.
fonte