Mais

Reclassificar a exibição do rótulo usando ArcPy?

Reclassificar a exibição do rótulo usando ArcPy?


Não consigo descobrir ou encontrar uma solução para os rótulos de simbologia após uma reclassificação ao tentar automatizar mapas. Eu executo o código a seguir e ele está quase fazendo exatamente o que eu quero. Depois de alterar o caminho de uma fonte de dados, executo as 2 linhas de código a seguir. A camada é definida para ter as cores que eu quero e os números correspondem ao que deveria estar lá. O único problema é a exibição dos rótulos para a classificação.

arcpy.mapping.UpdateLayer (df, lyr, updateLayer, True) lyr.symbology.reclassify ()

O mapa é configurado para ter 1 casa decimal como é o arquivo de camada, mas após a reclassificação é configurado para 4 dígitos significativos.

Alguém tem alguma ideia?

Isso é o que eu preciso para automatizar totalmente os mapas em que estou trabalhando. Parece loucura que, depois de fazer uma mudança de caminho e uma reclassificação, tenho que abrir o mxd, redefinir as propriedades da camada e atualizar as notas que gerei com base nas novas classes com os intervalos de atualização.


Acho que você está esperando muito de 'reclassificar'; em vez disso, você deve fazer uma classificação manual ou aplicar este código de amostra abaixo (não testado) para atualizar com base em 'intervalos' específicos que você define:

# do exemplo 2 de GraduatedColorsSymbology na web help import arcpy mxd = arcpy.mapping.MapDocument (r "C:  Project  Project.mxd") df = arcpy.mapping.ListDataFrames (mxd, "Census") [0] lyr = arcpy .mapping.ListLayers (mxd, "StatePopulation", df) [0] lyrFile = arcpy.mapping.Layer (r "C:  Project  LYRs  Population.lyr") arcpy.mapping.UpdateLayer (df, lyr, lyrFile, True) se lyr.symbologyType == "GRADUATED_COLORS": lyr.symbology.valueField = "POP2000" lyr.symbology.classBreakValues ​​= [250000, 999999, 4999999, 9999999, 35000000] lyr.symbology.classBreakLabels = "2509999 a 99999 , "1.000.000 a 4.999.999", "5.000.000 a 9.999.999", "10.000.000 a 35.000.000"] arcpy.mapping.ExportToPDF (mxd, r "C:  Project  Output  StatePopulation.pdf") del mxd, lyrFile

Resolvi o problema construindo sozinho o intervalo, conforme sugerido. Simplesmente veio até mim!

Aqui está a solução. você pode adicionar um intervalo inferior para definir os rótulos, conforme sugerido por T. Wayne ou apenas usar o intervalo para algumas notas que precisei criar no mapa.

lower_range1 = "{: .1f}". format (lyr.symbology.classBreakValues ​​[0]) + "-" + "{: .1f}". format (lyr.symbology.classBreakValues ​​[1]) lower_range2 = "{: .1f} ". Format (lyr.symbology.classBreakValues ​​[1] + .1) +" - "+" {: .1f} ". Format (lyr.symbology.classBreakValues ​​[2]) lower_range3 =" {: .1f } ". format (lyr.symbology.classBreakValues ​​[2] + .1) +" - "+" {: .1f} ". format (lyr.symbology.classBreakValues ​​[3]) lower_range4 =" {: .1f} " .format (lyr.symbology.classBreakValues ​​[3] + .1) + "-" + "{: .1f}". format (lyr.symbology.classBreakValues ​​[4])

Assista o vídeo: Learn How to Perform Statistical Spatial Data Analysis with R and ArcGIS