Suite

Calculs de champs attributaires séquentiels avec des valeurs nulles à l'aide d'Arcpy


J'ai une série de coordonnées x,y converties à partir d'un fichier .ply. J'ai pu extraire le fichier dans un format x,y approprié pour arcmap, le problème que j'ai est qu'il s'agit de points de coordonnées représentant 90 polygones. Donc, dans arcmap, j'ai les coordonnées du polygone 1, puis une série de lignes nulles, puis les coordonnées du poly 2, etc. J'ai entré manuellement le numéro du polygone à l'aide de la calculatrice de champ, mais avec 91 cela me prend beaucoup de temps, donc J'ai pensé que je pourrais utiliser le script de calculs séquentiels. Chaque ligne nulle correspond au même nombre de lignes entre chaque poly (7). donc ce dont j'ai besoin, c'est d'un script qui mettra à jour un champ avec le polygone 1, saute 7 lignes de champ nul, poly 2, etc.

L'autre problème est que le nombre de points dans chaque polygone est différent, donc la seule façon de différencier chaque polygone est les lignes nulles entre les deux.

Je voulais dire ce script en particulier

http://help.arcgis.com/EN/ARCGISDESKTOP/10.0/HELP/index.html#//005s0000002m000000

Calculs cumulatifs et séquentiels


Voici une façon de numéroter les polygones :

import arcpy fc = "C:	empdata.gdbpoints" polygon = 1 nulls = 0 avec arcpy.da.UpdateCursor(fc, ("x", "Polygon")) comme curseur : pour la ligne dans curseur : si ligne[0] n'est pas Aucun : ligne[1] = polygone curseur.updateRow(ligne) sinon : nuls += 1 si nuls == 7 : polygone += 1 nuls = 0

Changer lafcvariable à l'emplacement de votre classe d'entités points. Vous pouvez l'exécuter directement dans la fenêtre Python d'ArcMap.


Vous pouvez le faire avec un curseur de mise à jour arcpy. Vous trouverez ci-dessous un petit script qui devrait s'en occuper. Il supposePolygoneest un champ numérique, comme un champ entier. Fondamentalement, il attribue un numéro fixe chaque fois qu'il voitXdonnées et incrémente ce nombre lorsqu'il voit le prochainNulla valeur pourX, en attendant d'utiliser ce nouveau numéro jusqu'à ce qu'il voieXdonnées à nouveau.

import arcpy featureClass = "C:path	oyourgeodatabase_andfeatureclass" fields = ("x", "y", "Polygon") avec arcpy.da.UpdateCursor(featureClass, fields) comme curseur : aUniqueID = 1 figé = False pour la ligne dans le curseur : si ligne[0] : si figé : figé = False ligne[2] = aUniqueID sinon ligne[0] : si non figé : aUniqueID += 1 figé = vrai curseur .updateRow(ligne)


Voir la vidéo: apprendre à lire une schema de haute tension (Octobre 2021).