Suite

Mise à jour d'un champ basé sur un autre champ dans ArcPy ?

Mise à jour d'un champ basé sur un autre champ dans ArcPy ?


J'ai besoin de mettre à jour un champ en fonction d'un autre champ de couches. Je pourrais le faire manuellement dans arcmap en joignant les deux couches ensemble, puis en utilisant la calculatrice de champ. Y a-t-il un moyen de le faire avec un script? C'est-à-dire qu'il suffit d'entrer le champ en tant qu'entrée et de l'exécuter et il calculera le champ dont j'ai besoin.

Je pensais dans le sens de

inputFC = arcpy.GetParameterAsText(0) curseur de recherche, curseur de mise à jour ?

tout ce que je veux, c'est que la moyenne d'un champ d'une couche soit entrée dans une ligne/colonne d'une autre.

Je devrais également ajouter que je veux cela en tant que script afin qu'il crée automatiquement un nouveau champ dans la polyligne et y place la moyenne des autres champs de couches.


Si je comprends bien les détails de la question (décrits dans les commentaires), je pense que vous devriez pouvoir faire tout cela en deux étapes à l'aide d'outils de géotraitement intégrés, que vous pouvez bien sûr également scripter en Python :

  1. Utilisez les statistiques récapitulatives (analyse) pour créer un tableau avec la valeur moyenne du champ X dans la couche A. Spécifiez le champ Cas comme étant le champ ID qui relie la couche A à la couche B.
  2. Utilisez Join Field (Data Management) pour joindre de façon permanente le champ de valeur moyenne du résultat de l'étape 1 à la couche B.

Essayez-le d'abord de manière interactive dans ArcToolbox, puis dans la fenêtre Résultats, cliquez avec le bouton droit sur les résultats de chacune des deux étapes et cliquez sur "Copier en tant qu'extrait Python", puis collez-les dans un nouveau script Python. Ajustez au besoin (lire les paramètres et affecter aux variables, utiliser les variables dans les arguments de l'outil au lieu de les coder en dur, etc.).

Voici un exemple de workflow qui, espérons-le, peut être appliqué à de nombreux autres problèmes.


Description des données:
J'ai une classe d'entités ponctuelles nomméeatlantique_ouragans_2000(à partir des données d'exemple du SDK ArcObjects) qui a de nombreux points enregistrant la vitesse du vent, la pression, etc., le long de la trajectoire de chaque ouragan de la saison des ouragans 2000 :

J'ai créé une classe d'entités polyligne à partir de celle-ci à des fins de démonstration (chaque ligne est une piste d'ouragan distincte). Le seul attribut significatif sur la couche polyligne,ID ÉVÉNEMENTest le nom de l'ouragan qui servira de champ d'identification qui renvoie à la classe d'entités ponctuelles :

Énoncé du problème : La classe d'entités points a unVITESSE DU VENTchamp enregistrant la vitesse du vent à chaque point d'une trajectoire d'ouragan donnée. je veux prendre la moyenneVITESSE DU VENTvaleur de tous les points pour chaque piste dans la classe d'entités ponctuelles et l'affecter à chaque entité polyligne en ajoutant un champ.

Solution:

  1. J'ai utilisé les statistiques récapitulatives comme suit :

    Ce qui a produit ce tableau :

  2. J'ai ensuite utilisé Join Field comme suit :

Résultat final:

Sortie de l'extrait Python :

arcpy.Statistics_analysis("C:/GISData/test.gdb/atlantic_hurricanes_2000","C:/GISData/test.gdb/atlantic_hurricanes_2000_average_windspeed","WINDSPEED MEAN","EVENTID") arcpy.JoinField_management("C:/GISData/test .gdb/atlantic_hurricanes_2000_lines","EVENTID","C:/GISData/test.gdb/atlantic_hurricanes_2000_average_windspeed","EVENTID","MEAN_WINDSPEED")