Ativando rótulos de camada usando o ArcPy?


8

Não consigo ativar os rótulos no meu script Python:

import arcpy
mxd = arcpy.mapping.MapDocument(r"Mypathhere") #Map document reference
layer = arcpy.mapping.ListLayers(mxd, "Layername")[0] #Indexing list for 1st layer
if layer.supports("LABELCLASSES"):
    for lblclass in layer.labelClasses:
        lblclass.showClassLabels = True
arcpy.RefreshActiveView()
mxd.save()
del mxd

Se eu precisar ativar a etiquetagem no gerenciador de etiquetas primeiro, isso pode ser feito com o ArcPy?

O script não quebra. Eu não recebo nenhum erro. Os pontos simplesmente não são rotulados.

Respostas:


5

Acho que seu problema é que seu código está ativando a caixa de seleção em Propriedades da camada que diz "Recursos de rótulo nesta classe". A parte que está faltando é o código a ser habilitado na caixa de seleção "Recursos de etiqueta nesta camada"

Tente inserir este código:

layer.showLabels = True

Após sua instrução if que ativa as classes de rótulo, da seguinte maneira:

import arcpy
mxd = arcpy.mapping.MapDocument(r"Mypathhere") #Map document reference
layer = arcpy.mapping.ListLayers(mxd, "Layername")[0] #Indexing list for 1st layer
if layer.supports("LABELCLASSES"):
    for lblclass in layer.labelClasses:
        lblclass.showClassLabels = True
layer.showLabels = True`
arcpy.RefreshActiveView()
mxd.save()
del mxd

1

Se você não está sempre usando classes de rótulo e simplesmente deseja ativar os rótulos, o código pode ser simplificado para:

import arcpy
mxd = arcpy.mapping.MapDocument(r"MyPathHere") 
layer = arcpy.mapping.ListLayers(mxd, "LayerName")[0] 
layer.showLabels = True

e se você quiser fazer coisas como atualizar a exibição de dados / layout (o que estiver ativo), consulte a caixa de seleção marcada no Sumário e / ou salvar as alterações no seu mapa e adicione linhas como:

arcpy.RefreshActiveView()
arcpy.RefreshTOC()
mxd.save()
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.