Em resumo
Você deve dividir cada círculo em duas metades e depois convertê-las em polilinha (ou qualquer outro meio para imitar os perímetros das metades superior e inferior). O principal é ter no final uma camada com o perímetro superior e o inferior.
Em seguida, você rotula o superior com uma rotulação de curva com uma configuração superior e rotula o inferior com uma rotulação inferior.
Abaixo do guia Como fazer com capturas de tela
A tabela de suas entidades deve ficar assim (é um exemplo de teste, será diferente com seus dados). Eu criei um campo de posição e um campo de etiqueta aqui.
No caso de você manter uma camada física, duplique a camada e defina o filtro para corresponder 'UP' para uma cópia da camada e 'DOWN' para a outra (dica: quando alguém definirá essa propriedade nos dados definidos campo isso será mais simples)
Deve ficar assim nas propriedades:
Para cada um, você define diferentes propriedades de rotulagem
Abaixo da camada
Camada superior
então você obtém:
Não parece haver uma maneira incorporada ou um plug-in para fazer com que os rótulos estejam em conformidade com uma curva (ou com qualquer forma que não seja uma linha reta). A única maneira de pensar para obter esse efeito no QGIS é usar um quadro HTML para cada etiqueta no compositor de impressão. HTML não é o meu ponto forte, mas encontrei alguns sites que explicam como fazer isso (links na parte inferior deste post). Parece muito tedioso - provavelmente muito mais fácil produzir um mapa sem rótulos e adicioná-los em um programa diferente. Ou produza as etiquetas em outro programa, salve como imagens e adicione as imagens ao compositor de impressão.
https://css-tricks.com/set-text-on-a-circle/
/programming/14990284/curved-text-using-html-css
https://www.webmasterworld.com /forum21/1250.htm
fonte