属性値を計算する手法に「フィールド演算」という機能があります。ArcMap 10.x では、属性テーブルのフィールド演算機能で、Python コード ブロックを使用して、高度な演算を実行することができるようになりました。
データを編集してフィーチャの削除などを行うと、ObjectID が連続しなくなりますが、今回の例ではこのデータに ID を 1 から昇順に割り当てる Python コードをご紹介します。(ObjectID の値自体を変更することはできません)
・フィールド演算の詳細はこちら
・ObjectID の詳細はこちら
変更前:ObjectID が連続していない
変更後:新規フィールドに連続 ID を振る
Python を使用すれば簡単に番号を割り当てることができます!
【手順】
1. ArcMap のコンテンツ ウィンドウにあるデータを右クリックして、[属性テーブルを開く] からテーブルを開きます。
2. 新規フィールドを作成します。[テーブル オプション] ボタン → [フィールドの追加] をクリックします。
3. 数値フィールドを任意の名前で作成します(ここでは「NewID」と指定)。
4. 作成したフィールドを右クリックし、[フィールド演算] をクリックします。
5. 以下の画像のように設定します。コード ブロックを使用することで高度な演算(関数定義やループ処理など)を行うことができます。
今回使用した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 文” を使用する