Python コード例(その3):フィールド演算を使用して昇順で ID を割り当てる方法

属性値を計算する手法に「フィールド演算」という機能があります。ArcMap 10.x では、属性テーブルのフィールド演算機能で、Python コード ブロックを使用して、高度な演算を実行することができるようになりました。
データを編集してフィーチャの削除などを行うと、ObjectID が連続しなくなりますが、今回の例ではこのデータに ID を 1 から昇順に割り当てる Python コードをご紹介します。(ObjectID の値自体を変更することはできません)
・フィールド演算の詳細はこちら
・ObjectID の詳細はこちら

変更前:ObjectID が連続していない
A01_2

変更後:新規フィールドに連続 ID を振る
A02_2

Python を使用すれば簡単に番号を割り当てることができます!

【手順】
1. ArcMap のコンテンツ ウィンドウにあるデータを右クリックして、[属性テーブルを開く] からテーブルを開きます。

2. 新規フィールドを作成します。[テーブル オプション] ボタン → [フィールドの追加] をクリックします。

3. 数値フィールドを任意の名前で作成します(ここでは「NewID」と指定)。
A03

4. 作成したフィールドを右クリックし、[フィールド演算] をクリックします。
A05

5. 以下の画像のように設定します。コード ブロックを使用することで高度な演算(関数定義やループ処理など)を行うことができます。
A06_2

今回使用したPythonコード
関数 autoIncrement を定義し、グローバル変数としてrecを設定し、1 からステップ間隔 1 でインクリメントしていく例

rec=0
def autoIncrement(i):
  global rec
  pStart = 1 #開始値の設定(必要に応じて変更)
  pInterval = 1 #間隔の値の設定(必要に応じて変更)
  if (rec == 0):
    rec = pStart
  else:
   rec = rec + pInterval
  return rec

[注意事項]
本 Python コードは、サンプルとして提供しておりますのでサポート対象外となります。従って、サンプルプログラムに関するご質問はお受けできません。また、本サンプルを使用して生じたいかなる障害についても、弊社では責任を負いかねますことを予めご了承願います。

参考ヘルプ:フィールド演算の例

■関連リンク
Python コード例(その1):表紙つきPDFを作成する方法
Python コード例(その2):時系列マップをPDF に出力する方法
Python コード例(その4):ArcPy で Geometry オブジェクトを使用する方法
Python コード例(その5):ModelBuilder で Python の “If 文” を使用する