Como inserir e modificar rótulos (labels) de shapefiles no ArcGIS?
Aprenda como colocar rótulos nos seus shapefiles e como realizar modificações do tipo, letras maiúsculas para minúsculas, só mostrar alguns rótulos.
Quando estamos montando um mapa, muitas vezes precisamos rotular algumas feições (pontos, linhas ou polígonos).
Esses elementos podem ser polígonos representandos países, estados ou municípios; linhas representando estradas e ferrovias; ou pontos representando áreas amostradas ou sítios arqueológicos.
Iniciarei esse tutorial explicando como rotular tais itens de forma geral, em seguida, mostrarei como rotular apenas alguns itens (e.g. só mostrar o nome das cidades visitadas), utilizando uma expressão (em Python).
Vamos utilizar o shapefile disponibilizado pelo IBGE, basta clicar aqui e fazer o download do arquivo br_unidades_da_federação.zip. Lembrando que outros shapes podem ser acessados aqui.
Após abrir esse shapefile no ArcGIS, digamos que você quer mostrar os nomes dos estados.
Esse procedimento é simples, basta clicar com o botão direito sobre o shapefile, e clicar em Properties. Em seguida, clique na aba Labels, marque a opção “Label features in this layer” e na caixa Text String, selecione NM_ESTADO, ou seja, nome do estado. Depois, basta clicar em aplicar e Ok.
Certo, mas e se o seu estudo estiver sendo realizado no estado do Amazonas e você quer mostrar só esse nome?
Para isso, voltaremos às propriedades do shapefile, e na aba Labels, ao invés de somente selecionar um item na caixa Text String, vamos clicar no botão Expression.
Aqui, você precisará modificar a ultima caixa da janela, chamada parser para o item Python, em seguida, marque a caixa Advanced. Em seguida, cole o texto abaixo conforme a figura, e não se esqueça dos espaços no inicio (eles são importantes na linguagem Python).
def FindLabel ( [NM_ESTADO] ): if [NM_ESTADO] == "AMAZONAS": return [NM_ESTADO]
Agora é só clicar em ok e aplicar as modificações realizadas.
Esse código esta informando ao ArcGIS que nós criamos uma função chamada FindLabel, onde um dos seus argumentos de entrada é [NM_ESTADO]. Em seguida, definimos uma condição para que, se [NM_ESTADO] for igual à AMAZONAS, o ArcGIS deverá retornar o valor que esta dentro de [NM_ESTADO], ou seja, Amazonas.
Ainda não satisfeito, você, criterioso, não quer que o as letras fiquem todas em MAIÚSCULAS. Isso é simples de se resolver, basta acrescentar, no mesmo código, a terminação .title() depois de [NM_ESTADO]. Como a seguir:
def FindLabel ( [NM_ESTADO] ): if [NM_ESTADO] == "AMAZONAS": return [NM_ESTADO].title()
Acrescentando outros nomes
Para finalizar a postagem, irei mostrar como acrescentar outros estados utilizando o mesmo procedimento.
Para isso, é preciso usar o comando elif, onde você poderá rotular os nomes de outras feições. Vamos acrescentar os nomes dos estados do Pará e do Maranhão.
def FindLabel ( [NM_ESTADO] ): if [NM_ESTADO] == "AMAZONAS": return [NM_ESTADO].title() elif [NM_ESTADO] == u"PARÁ": return [NM_ESTADO].title() elif [NM_ESTADO] == u"MARANHÃO": return [NM_ESTADO].title() else: return
Note que para os estados do Pará e do Maranhão, colocamos um “u” no inicio de seus nomes, isso porque eles são textos que contém acentos. Se não colocássemos esse u (para marcar como texto Unicode), o ArcGIS simplesmente não mostraria os rótulos.
E caso você precise adicionar outros estados, bastar inserir outras linhas com elif, seguida do comando return, mantendo sempre o comando else por último.
Qualquer dúvida ou dificuldade para aplicar esses comandos aos seus dados, deixe seu comentário abaixo e responderemos assim que possível.
Atualização 31/03/2017
Realizamos um vídeo explicando esse procedimento, confira ele abaixo.
[youtube https://www.youtube.com/watch?v=wNgmryHcsyU&w=560&h=315]
Como faço pra por um sufixo depois do rótulo? Por exemplo: estou medindo a área de polígonos em hectares, rotulei os polígonos com a field “área” que criei, mas fica apenas o número e queria colocar o sufixo “ha”. Tem como fazer isso?
Bom dia João Sauvesuk,
Sim, é possível. Para realizar esse procedimento, você irá concatenar, ou seja, unir, duas informações.
Considerando o seu exemplo, no código de python do Label Expression, adicione após o return [area] o texto + ” ha”. De forma completa, ele vai ficar assim: return [area] + ” ha”.
Você pode realizar esse procedimento para adicionar qualquer unidade (ou texto) às suas medidas.
Deu certo, muito obrigado
Como coloco o simbolo de “%” em um número? Quero mostrar no mapa, e na tabela de atributos estou sem o percentual pois não dá para inserir.
Bom dia Nathalia,
Você terá que criar uma expressão para acrescentar a porcentagem ao número existente na tabela de atributos. O procedimento é semelhante ao que respondemos no comentário do João Sauvesuk. Considerando que “Porcentagem” é a coluna que tem os seus valores, na janela do “Label Expression”, no código de python, acrescente após o return [Porcentagem] o texto + “%”. No final, ele vai ficar desta forma: return [Porcentagem] + “%”.
(obs.: Não é possível inserir o símbolo % na tabela de atributos pois o campo que contém a porcentagem é numérico – só números – seria necessário criar um campo de texto para adicionar o símbolo).
Como removo apenas o nome de um município deixando os outros visíveis?