Suite

Changer les valeurs des classes de couleurs graduées avec ArcPy ?

Changer les valeurs des classes de couleurs graduées avec ArcPy ?


J'essaie d'utiliser python pour ajuster les coupures de classe et les étiquettes de mes symboles de couleur graduée. La couche est une couche de requête liée à une base de données SQL et je souhaite pouvoir exécuter mon python (après la mise à jour de la base de données) pour créer automatiquement une carte et faire en sorte que la couche/la légende reflètent les modifications apportées à la base de données. J'ai essayé ce script mais cela ne fonctionne pas et j'obtiens une erreur que je ne reconnais pas.

import arcpy mxd = arcpy.mapping.MapDocument("current") df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0] lyr = arcpy.mapping.ListLayers(mxd, "Unsafe_Driving", df)[0] if lyr.symbologyType == "GRADUATED_COLORS": lyr.symbology.valueField = "CSA.DBO.%Unsafe_Driving_1.VARIANCE" lyr.symbology.classBreakValues ​​= [-.01, .01, .0866] lyr.symbology.classBreakLabels = [ "-8.66% à -1.00%", "-.99% à 1.00%","1.01% à 8.66%"] arcpy.RefreshActiveView()

Erreur d'exécution Traceback (appel le plus récent en dernier) : Fichier "", ligne 7, dans Fichier "c:program files (x86)arcgisdesktop10.1arcpyarcpyarcobjects_base.py", ligne 87, dans _set return setattr(self._arc_object, attr_name, cval(val)) RuntimeError

Le but ici est d'avoir 3 classes :

  1. Valeur la plus basse à -1,00 %
  2. -0,99 % à 1,00 %
  3. 1,01% à la valeur la plus élevée.

Étant donné que les valeurs les plus basses et les plus élevées peuvent changer, dois-je utiliser une requête pour les insérer dynamiquement dans le fichier lyr.symbology.classBreakValues ?


Je viens d'avoir exactement le même problème avec ArcGIS 10.2. Il s'avère que (dans 10.2 au moins) vous ne pouvez pas définir les valeurs de symbologie viaclassBreakValuesquand levalueFieldest dans un table jointe. Au lieu de cela, vous devez d'abord tout exporter vers une nouvelle classe d'entités, puis le code suivant devrait fonctionner :

if lyr.symbologyType == "GRADUATED_COLORS": lyr.symbology.valueField = "NewField_Variance" #Nom de l'espace réservé lyr.symbology.classBreakValues ​​= [-.01, .01, .0866] lyr.symbology.classBreakLabels = ["-8.66% à -1.00%", "-.99% à 1.00%", "1.01% à 8.66%"]

Je suis sur le point de passer à la version 10.3 - j'espère que ce sera corrigé.

Chapeau pour cet article sur les forums Esri de simontp, qui fait à son tour référence à cet article de cheffing.