フィーチャクラスを並べ替えて、ArcGIS Field Calculatorを使用してシーケンシャルIDフィールドを計算しますか?


8

私はArcMapで、フィールドに基づいてレコードを並べ替えてから、自動インクリメント値を使用してフィールドを計算し、並べ替えを行います。何か案は?

フィーチャクラスで更新カーソルを取得してから自動インクリメントを行うことができるようですが、ArcMapのフィールド計算機でこれを行う方法があるかどうかを確認したいと思います。

回答:


5

私はModelBuilderを使用し、以下のソートコードを使用してフィールドソートを実行した後、フィールドを計算しました。

以前は、ModelBuilderの外部でこれら2つの手順を試してみましたが、失敗しました。

式:

autoIncrement()

式のタイプ:PYTHON_9.3

コードブロック:

rec=0
def autoIncrement():
    global rec
    pStart = 1 #adjust start value, if req'd 
    pInterval = 1 #adjust interval value, if req'd
    if (rec == 0): 
        rec = pStart 
    else: 
        rec = rec + pInterval 
    return rec

11

使用してみてください(データの管理)ソート続い計算フィールド(データの管理)に自動インクリメントの例を使用して計算フィールドの例のヘルプページ。

データを並べ替えてインプレースで更新する必要がある場合(中間データセットなし)、フィールドで並べ替えることもできるUpdateCursorを使用する必要があると思います。


素晴らしい提案。また、これを繰り返し行う必要がある場合は、ModelBuilderでこれらのツールをリンクすることを検討してください。
RyanKDalton、2011年

1
連番のESRIサンプルは、FID(元の行ID)に基づいています。現在の並べ替えに基づいて番号を付けたいのですが、これは可能ですか?ESRIのコードで、「グローバル」recとは何ですか?ありがとう。
GeorgeC、2012年

私の回答は、うまくいけば、すでに2つの方法で最初の質問に答えています。1)Sort(データ管理)を使用するか、2)sortCursorをsort fields引数とともに使用します。ArcObjectsを介して可能かもしれませんが、arcpyを介して現在のテーブルビューの並べ替え状態にアクセスできるとは思いません。2番目の質問についてglobalは、変数を計算間で保持し(行ごとに1つの計算)、各計算で使用される実行中のカウントを格納できるようにします。
blah238

グローバル変数ベースの増分の例を使用する代わりに、itertools.count ジェネレーターを使用できます。
user2856
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.