Mengurutkan kelas fitur untuk menghitung bidang ID berurutan menggunakan ArcGIS Field Calculator?

8

Saya di ArcMap dan saya ingin menyortir catatan berdasarkan bidang dan kemudian melakukan bidang hitung dengan nilai peningkatan otomatis dengan jenis di tempat. Ada ide?

Sepertinya saya bisa mendapatkan kursor pembaruan pada kelas fitur kemudian melakukan peningkatan otomatis, tetapi saya masih ingin melihat apakah ada cara untuk melakukan ini di Field Calculator di ArcMap.

Justin
sumber

Jawaban:

5

Saya menggunakan ModelBuilder dan saya melakukan semacam bidang diikuti dengan menghitung bidang menggunakan kode semacam di bawah ini dan itu bekerja dengan baik.

Sebelumnya, saya telah mencoba dua langkah ini di luar ModelBuilder dan gagal.

Ekspresi:

autoIncrement()

Jenis Ekspresi: PYTHON_9.3

Blok Kode:

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
Steph
sumber
11

Coba gunakan Urutkan (Manajemen Data) diikuti oleh Calculate Field (Manajemen Data) menggunakan contoh penambahan otomatis pada halaman bantuan contoh Calculate Field .

Jika Anda perlu mengurutkan data dan memperbaruinya di tempat (tidak ada dataset menengah), maka saya pikir Anda harus menggunakan UpdateCursor yang juga dapat mengurutkan berdasarkan bidang.

blah238
sumber
Saran yang sangat baik. Dan jika Anda perlu melakukan ini secara berulang, pertimbangkan untuk menghubungkan alat-alat ini bersama di ModelBuilder.
RyanKDalton
1
Sampel ESRI untuk penomoran berurutan didasarkan pada FID (ID baris asli). Saya ingin penomoran didasarkan pada jenis saat ini -dapat ini dilakukan? Dalam kode dari ESRI apa itu rec "global"? Terima kasih.
GeorgeC
Jawaban saya semoga sudah menjawab pertanyaan pertama Anda dengan dua cara: 1) menggunakan Sort (Manajemen Data), atau 2) menggunakan UpdateCursor dengan argumen bidang sortir. Saya tidak berpikir Anda dapat mengakses keadaan sortir tampilan tabel saat ini melalui arcpy, meskipun dimungkinkan melalui ArcObjects. Sedangkan untuk pertanyaan kedua Anda, globalbuat variabel tetap ada di antara perhitungan (satu perhitungan per baris) sehingga dapat menyimpan jumlah running yang digunakan dalam setiap perhitungan.
blah238
Daripada menggunakan contoh kenaikan berbasis variabel global, Anda bisa menggunakan itertools.count generator .
user2856