Suite

Reclasser l'affichage des étiquettes à l'aide d'ArcPy ?


Je n'arrive pas à comprendre ou à trouver une solution de contournement pour les étiquettes de symbologie après une reclassification lors de la tentative d'automatisation des cartes. J'exécute le code suivant et il fait presque exactement ce que je veux qu'il fasse. Après avoir modifié un chemin de source de données, j'exécute les 2 lignes de code suivantes. Le calque est configuré pour avoir les couleurs que je veux et les nombres correspondent à ce qui devrait être là. Le seul problème est l'affichage des étiquettes pour la classification.

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

La carte est définie pour avoir 1 décimale, tout comme le fichier de couche, mais après le reclassement, elle est définie sur 4 chiffres significatifs.

Quelqu'un at-il des idées?

C'est la seule chose dont j'ai besoin pour automatiser entièrement les cartes sur lesquelles je travaille. Il semble fou qu'après avoir modifié le chemin et reclassé, je doive ouvrir le mxd pour réinitialiser les propriétés de la couche, puis mettre à jour les notes que j'ai générées en fonction des nouvelles classes avec les plages de mise à jour.


Je pense que vous attendez trop de « reclassifier » ; vous devriez plutôt faire une classification manuelle, ou appliquer cet exemple de code ci-dessous (non testé) pour actualiser en fonction de « pauses » spécifiques que vous définissez bien sûr :

# de l'exemple 2 de GraduatedColorsSymbology dans l'aide Web import arcpy mxd = arcpy.mapping.MapDocument(r"C:ProjectProject.mxd") df = arcpy.mapping.ListDataFrames(mxd, "Census")[0] lyr = arcpy .mapping.ListLayers(mxd, "StatePopulation", df)[0] lyrFile = arcpy.mapping.Layer(r"C:ProjectLYRsPopulation.lyr") arcpy.mapping.UpdateLayer(df, lyr, lyrFile, True) si lyr.symbologyType == "GRADUATED_COLORS": lyr.symbology.valueField = "POP2000" lyr.symbology.classBreakValues ​​= [250000, 999999, 4999999, 9999999, 35000000] lyr.symbology.classBreakLabels = ["250 000 à 999 999" , "1 000 000 à 4 999 999", "5 000 000 à 9 999 999", "10 000 000 à 35 000 000"] arcpy.mapping.ExportToPDF(mxd, r"C:ProjectOutputStatePopulation.pdf") del mxd, lyrFile

J'ai résolu le problème en construisant la gamme moi-même comme suggéré. C'est juste venu pour moi !

Voici la solution. vous pouvez ajouter une plage inférieure pour définir les étiquettes comme suggéré par T. Wayne ou simplement utiliser la plage pour certaines notes que j'avais besoin de créer sur la carte.

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])


Voir la vidéo: Procesamientos de ráster en QGIS (Octobre 2021).