Ajout d'un nom de fichier au champ d'attribut à l'aide de Calculer le champ?


9

Quelqu'un sait-il comment ajouter le nom du fichier de formes à un champ de la table attributaire du fichier?

J'ai trouvé une description:

'Vous devez utiliser la variable inline dans CalculateField comme% Name% dans expresssion pour que quel que soit le nom du fichier, la chaîne sera insérée en fonction du nom du fichier dbase!'

J'ai essayé l'outil CalculateField avec% Name%, mais j'ai reçu un message:

Executing: CalculateField "2011-11-6 15_41_point" DBFName %Name% PYTHON #
Start Time: Thu Dec 08 23:34:23 2011
WARNING 000405: No records within table
Succeeded at Thu Dec 08 23:34:24 2011 (Elapsed Time: 1.00 seconds)

Où est mon erreur?

Réponses:


11

Ce code python ajoute le champ FILENAME à toutes les classes de fonctionnalités (à l'exception de celles des jeux de données) et se remplit avec le nom de la classe de fonctionnalités.

# Import standard library modules
import arcpy, os, sys
from arcpy import env

# Allow for file overwrite
arcpy.env.overwriteOutput = True

# Set the workspace directory 
env.workspace = r"P:\geodatabase.gdb\filename" 

# Get the list of the featureclasses to process
fc_tables = arcpy.ListFeatureClasses()

# Loop through each file and perform the processing
for fc in fc_tables:
    print str("processing " + fc)

    # Define field name and expression
    field = "FILENAME"
    expression = str(fc) #populates field   

    # Create a new field with a new name
    arcpy.AddField_management(fc,field,"TEXT")

    # Calculate field here
    arcpy.CalculateField_management(fc, field, '"'+expression+'"', "PYTHON")

fonctionne dans la version 10.2. mais ne fonctionne pas dans la version 10.2.2.
Nate Bradshaw

Rien ne se passe si je tape le code dans la console python de l'arc map (10.6) Il semble ne pas fonctionner avec cette version (?)
David

6

Il y a un script sur le site Web arcscripts qui devrait vous aider à le faire

http://arcscripts.esri.com/details.asp?dbid=14534

Résumé Un script simple pour créer un champ appelé "FILENAME" et attacher le nom de fichier du fichier de formes à chaque entrée de la table attributaire. À utiliser avec autant de fichiers de formes dans un répertoire spécifié. Utile lorsque vous sélectionnez des entrées de fichier de formes et les combinez dans un fichier séparé pour conserver une trace de navigation du nom du fichier de formes d'origine.

Exécuter le fichier dans un répertoire contenant tous les fichiers de formes à modifier

J'espère que c'est ce que tu cherches


Pour info: ne fonctionne pas pour Arcgis 10.X (la syntaxe du code Python a changé après Arcgis 9.x).
gisnside


1

Si tout ce qui précède ne fonctionne pas pour vous, en raison d'une incompatibilité de version ou d'un manque de connaissances (comme c'est le cas pour moi), essayez cette solution:

  • utilisez l'outil de conversion Exporter vers CAD et exportez toutes vos classes d'entités de votre géodatabase dans un fichier DWG
  • le nom de la classe d'entités sera utilisé pour remplir le champ Couche du fichier CAO
  • utiliser l'outil de conversion CAD en géodatabase pour exporter à nouveau vos entités dans un GDB
  • vous aurez maintenant les champs de nom de couche dans votre table pour chaque entité unique
  • utilisez l'outil Fusionner pour combiner vos classes d'entités de la GDB en un seul fichier de formes, qui aura le champ d'attribut de couche avec le nom de classe d'entités d'origine pour vous permettre d'identifier les éléments

0

J'ai trouvé ce lien vers un outil ArcGIS du US Fish and Wildlife Service qui fait exactement ce que vous recherchez. Ça a marché comme sur des roulettes!


Il s'agit du même outil que celui décrit dans une réponse précédente
PolyGeo

L'outil du US Fish and Wildlife Service ne fonctionne que si le nom du champ est "NAME". Il peut être rendu flexible en mettant à jour l'outil de calcul de champ 'Nom du champ' avec% Nom du champ%
Eleza Kollannur
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.