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.

Tim
fonte

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
Get Spatial
fonte
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()
PolyGeo
fonte