ESRIジャパン株式会社 ArcGISブログ

検索

2012年5月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

RSS

« ArcGIS Server のマップ キャッシュ Tips (6) - マップ キャッシュ作成 | メイン | ArcGIS Explorer のカスタマイズ Part4:アドインの実装 »

2011年1月28日 (金)

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

属性値を計算する手法に「フィールド演算」という機能があります。ArcGIS Desktop 10 では、属性テーブルのフィールド演算機能で、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 コードは、サンプルとして提供しておりますのでサポート対象外となります。従って、サンプルプログラムに関するご質問はお受けできません。また、本サンプルを使用して生じたいかなる障害についても、弊社では責任を負いかねますことを予めご了承願います。

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

トラックバック

このページのトラックバックURL:
http://www.typepad.jp/t/trackback/492067/25870098

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