Suite

Arcpy.listfields pour un débutant


Je suis très mauvais en Python et je n'arrive même pas à faire fonctionner ce script et le pire, c'est qu'il s'agit d'un très petit script.

Disons que j'ai un fichier de formes dans C: emp est.shp et que je souhaite répertorier tous les noms de champs dans ce fichier de formes.

Disons une classe d'entités avec 4 noms de champs : TYPE, NAME, SPEED, AREA et je veux lister les noms de champs. Je pensais que cela fonctionnait mais non :

import arcpy fclass = "C:/Data/Municipal.gdb/Hospitals" fieldnames = [f.name for f in arcpy.ListFields(fclass)]

À quoi dois-je penser si j'ai une featureclass dans .GDB ou si je veux utiliser une featureclass de MXD.

Python liste-t-il dans la fenêtre les noms de champs ou puis-je obtenir une sortie comme .txt Je suis intéressé par les deux manières afin que je puisse apprendre.


import arcpy # r signifie chaîne brute et ignorera /n, /t, les caractères spéciaux, etc. >>> shp = r'C:TEMPSHPAirport.shp' >>> shp_fields = arcpy.ListFields(shp)

shp_fields est maintenant une liste d'"objets de champ de description"

Voyons ce qu'il y a dans cette liste

>>> imprimer shp_fields >>> [, , ,… ]

Déconstruisons l'objet « description du champ » pour obtenir les informations souhaitées.

>>> shp_field_names = [f.name pour f dans arcpy.ListFields(shp)]

ou alors

>>> shp_field_names = [f.baseName pour f dans arcpy.ListFields(shp)]

ou alors

>>> shp_field_name = [f.aliasName pour f dans arcpy.ListFields(shp)]

Lorsque vous dites « Je pensais que cela fonctionnait mais ça n'a pas marché », il y a un certain nombre de choses qui peuvent mal tourner.

Votre logique et votre syntaxe sont correctes et ne devraient pas générer d'erreur ou d'exception. Il est cependant difficile de déterminer ce que vous essayez d'accomplir.

Vérifiez si python est correctement installé.

Vérifiez si le package de site arcpy est importable.


Le ci-dessous a fonctionné pour moi et a renvoyé une liste de noms de champs avec le type de données et la longueur des données :

import arcpy # Pour chaque champ de la classe d'entités Hospitals, imprimez # le nom, le type et la longueur du champ. field = arcpy.ListFields(r"C:UsersutilavtDocumentsArcGISParcel_UpdatesshpsPARCELS.shp") pour le champ dans les champs : print("{0} est un type de {1} avec une longueur de {2}" .format(champ.nom, champ.type, champ.longueur))


Voir la vidéo: Week 8: 3 Arcpy Listing and Describe Functions (Octobre 2021).