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:
