Suite

Calculer une valeur z en python

Calculer une valeur z en python


J'ai des contours où la valeur z est stockée dans la géométrie et je souhaite l'afficher en tant qu'attribut. Je veux l'inclure dans un script python.

J'ai une expression qui fait cela dans la calculatrice de champ python:

!Forme!.firstpoint.z

Cela fonctionne parfaitement, mais lorsque je l'inclus dans mon script :

arcpy.CalculateField_management( shapefile , "VALUE" , "!Shape!.firstpoint.z", "PYTHON")

cela ne fonctionne pas, ce qui me surprend car je pensais que le champ de calcul était exactement le même que le calculateur de champ, mais accessible via arcpy.

L'erreur est que c'est une chaîne, donc n'a pas d'attribut z : " File "", ligne 1, dans AttributeError : l'objet 'str' n'a pas d'attribut 'z"

J'ai donc essayé :

arcpy.CalculateField_management( shapefile , "VALUE" , "!Shape.firstpoint.z!", "PYTHON")

et cela me dit que "firstpoint.z" n'est pas un attribut de forme

J'ai ensuite essayé :

arcpy.CalculateField_management( shapefile , "VALUE" , "!Shape.firstpoint!.z", "PYTHON")

Et cela semblait considérer le premier point comme un unicode plutôt qu'un point. "Fichier "", ligne 1, dans AttributeError : l'objet 'unicode' n'a pas d'attribut 'z'"

Il semble que mon problème soit de l'amener à considérer firstpoint comme un point, mais je ne comprends pas pourquoi.


Le type d'expression doit êtrePYTHON_9.3

Ce code a fonctionné pour moi :

from arcpy import * fc = r"C:	est	est.gdb	est" fld = "testfld" shapeFldName = Describe (fc).shapeFieldName CalculateField_management (fc, fld, "!{}!.firstPoint.Z".format (formeFldName), "PYTHON_9.3")

Bon python !