フィールドの計算を使用して属性フィールドにファイル名を追加しますか?


9

ファイルの属性テーブルのフィールドにシェープファイル名を追加する方法を誰かが知っていますか?

説明を見つけました:

'ファイル名が何であれ、文字列がdbaseファイルの名前に基づいて挿入されるように、式の%Name%のようなCalculateFieldでインライン変数を使用する必要があります!

%Name%でCalculateFieldツールを試しましたが、次のメッセージが表示されました。

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)

私の間違いはどこですか?

回答:


11

このpythonコードは、FILENAMEフィールドをすべてのフィーチャクラス(データセット内のものを除く)に追加し、フィーチャクラス名を入力します。

# 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")

バージョン10.2で動作します。バージョン10.2.2では機能しません。
Nate Bradshaw

アークマップのPythonコンソールにコードを入力しても何も起こりません(10.6)このバージョンでは動作しないようです(?)
David

6

これを行うのに役立つスクリプトがarcscripts Webサイトにあります

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

概要「FILENAME」というフィールドを作成し、シェープファイルのファイル名を属性テーブルの各エントリに添付するための簡単なスクリプト。指定したディレクトリ内のシェープファイルと同じ数だけ使用します。シェープファイルエントリを個別に選択し、別のファイルに結合して、元のシェープファイル名のパンくずリストを維持するときに役立ちます。

変更が必要なすべてのshapfileを含むディレクトリ内でファイルを実行します

これがあなたの願いです


情報:Arcgis 10.Xでは機能しません(Arcgis 9.x以降、Pythonコード構文が変更されました)。
gisnside '09


1

上記のすべてが機能しない場合は、バージョンの非互換性または知識の欠如(私にとってはそうです)が原因で、次の回避策を試してください。

  • [CADにエクスポート]変換ツールを使用して、すべてのフィーチャクラスをジオデータベースからDWGファイルにエクスポートします
  • フィーチャクラスの名前は、CADファイルの[レイヤー]フィールドに入力するために使用されます
  • CADからジオデータベースへの変換ツールを使用して、フィーチャをGDBにエクスポートして戻します
  • これで、各単一フィーチャのテーブルにレイヤー名フィールドができます。
  • マージツールを使用して、GDBのフィーチャクラスを1つのシェープファイルに結合します。これには、アイテムを識別するための元のフィーチャクラス名を持つレイヤー属性フィールドがあります。

0

私が探しているのとまったく同じことを行う米国の魚と野生生物サービスのArcGISツールへのこのリンクを見つけました。それは魅力のように働きました!


これはで説明したのと同じツールで、以前の答え
PolyGeo

US Fish and Wildlife Serviceのツールは、フィールド名が「NAME」の場合にのみ機能します。Calculate Field Tool 'Field Name'を%Field Name%で更新することで柔軟にできます
Eleza Kollannur
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.