arcpyを使用して属性フィールドに値を追加する


8

属性テーブルの既存のフィールドに値を追加する必要があります。値は、同じ属性テーブルの別のフィールドの値によって決定されます。スクリプトの別のフィールドで値を定義できません。誰かがそれを手伝ってくれる?

回答:


8

私はArc 10.1カーソルを使用していませんが、明らかにそれはもっと簡単です。

10.0では、いくつかの方法で対処できますが、以下に基本的な初心者のアプローチを示します。

# Create a cursor on a feature class
cur = arcpy.UpdateCursor(myFeatureClass)

# Loop through the rows in the attribute table
for row in cur:
    # The variable sqMiles will get the value from the column
    # named 'Area_Miles'
    sqMiles = row.getValue('Area_Miles')
    # Calculate how many acres
    acres = (sqMiles * 640)
    # Assign the acres to a column named 'Area_Acres'
    row.setValue('Area_Acres', acres)
    # Apply the change
    cur.updateRow(row)

    # The loop will then move on to the next row/feature

よりシンプルで凝縮されたバージョン:

cur = arcpy.UpdateCursor(myFeatureClass)

for row in cur:
    row.setValue('Area_Acres', row.getValue('Area_Miles') * 640)
    cur.updateRow(row)

参照:http : //help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//000v0000003m000000


5
トム、この回答で使用した方法を使用して、ESRIのすべての「ヘルプファイル」を書き直してください。そうすれば、より多くの人々が理解し、世界はより幸せな場所になります。
Jason Miller

2
トム、@ JasonMillerのアドバイスに従ってください。そして私たちのためにこれを取り締まってくれてどうもありがとう。私は読み書きができないと思っていましたが、今はもう読みません。
FaCoffee 2017年

2

これを行うにはいくつかの方法があります。

  1. 計算がかなり簡単であれば、フィールド計算ツールを使用します。code_blockパラメーターを使用する必要がある場合は、スクリプト(またはツール自体)で構文を正しく取得することが必ずしも容易ではないため、オプション#2を使用します。

  2. 将来的にスクリプトの作成に関心がある場合は、カーソルを使用することを強くお勧めします。1つのフィールドからPythonリストに値を書き込み、forループを使用してリスト内の各項目に対して計算を実行してから、リストを新しいフィールドに書き戻すことができます。

最も単純な数式を除くすべてのカーソルをスクリプト化する方が簡単なので、フィールドの計算を使用することはほとんどありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.