Apakah ada cara untuk menampilkan jumlah fitur lapisan di TOC?

10

Saya menggunakan ArcGIS 10. Dalam daftar isi ArcMap (TOC), apakah ada cara untuk memiliki "Nama Lapisan" secara otomatis menampilkan jumlah total fitur di setiap lapisan?

Saya berpikir TOC akan terlihat seperti ini:

  • Jalan (27)
  • Streaming (100)
  • Paket (12)

Saya menemukan opsi ini untuk render Nilai Unik , tetapi:

  1. Saya bukan pria ArcObjects, dan
  2. Saya ingin bekerja hanya dengan penyaji Nilai Tunggal .

Tab "List By Selection" memiliki kemampuan ini, tetapi hanya ketika ada fitur yang dipilih.

RyanKDalton
sumber
Apakah Anda ingin melakukan ini untuk satu layer di peta Anda (yang Anda punya nama), atau menerapkannya ke semua layer di peta Anda secara default?
CHenderson
Semua lapisan dalam TOC, lebih disukai secara default, dan lebih disukai diperbarui ketika jumlah lapisan berubah (misalnya, ketika fitur ditambahkan atau dihapus).
RyanKDalton
2
Anda mungkin bisa melakukan ini dengan menambahkan Python yang mendengarkan untuk memulai / mengakhiri sesi edit.
Paul
1
Saya pikir itu bisa dilakukan di ArcGIS 10.1 dan 10.2 (tetapi tidak 10.0) menggunakan Add-In (Ekstensi) Python yang menjalankan GetCount di setiap lapisan dan memperbarui properti nama setiap lapisan untuk memasukkan nomor kurung pada setiap penyegaran. Jika Anda menemukan / mengirimkan Ide ArcGIS untuk memiliki opsi ini OOTB di ArcGIS Professional saya akan memilihnya.
PolyGeo
2
Saya telah melakukan ini menggunakan skrip di mxd, jadi saya memasukkan kode ke jendela python dan menjalankannya untuk mendapatkan cetakan dari setiap lapisan dengan jumlah fitur. Seperti @PolyGeo mengatakan, itu bisa dimasukkan ke dalam Python Add-In jika Anda ingin itu terjadi secara otomatis (pada 10,1 seperti yang disebutkan).
Cindy Jayakumar

Jawaban:

7

Seperti yang disarankan oleh @Paul & @PolyGeo, saya pikir mencoba membuat Add-in Python ini paling masuk akal, dan saya akan mengejar ide itu nanti.

Sementara itu, saya mengumpulkan kode yang akan Tambah / Perbarui TOC Nama lapisan yang ditentukan pengguna dalam MXD dengan jumlah fitur. Untuk tujuan saya, saya baru saja membuat ini sebagai alat GP yang akan menerima lapisan individu melalui input multinilai yang menerima "Layers" di alat skrip. Itu memungkinkan saya untuk memperbarui beberapa lapisan "sesuai permintaan", hanya memperbarui jumlah fitur dari lapisan yang diminati tersebut.

Saya belum menemukan cara untuk menjalankan ini secara otomatis, namun dalam melakukan beberapa pengujian MXD lama, itu mungkin bahkan tidak diinginkan. Jika Anda memiliki banyak lapisan dengan banyak fitur, ini bisa menjadi proses yang lambat.

Kotak masukan

import arcpy

LayerInput = arcpy.GetParameterAsText(0)

mxd = arcpy.mapping.MapDocument("CURRENT")
for lyr in arcpy.mapping.ListLayers(mxd):

    #Skip over group layers, as they have no values to count
    if lyr.isGroupLayer:
        continue

    #Determine basename of the layer, without the feature count
    name = str(lyr.name)

    #Determine if the layer is in the user-defined list
    if name not in LayerInput:
        continue

    #Determine if the layer name already includes a COUNT
    if "[" in name and "]" in name:
        lpos = name.find("[")
        basename = name[:lpos-1]
    else:
        basename = name
    print "    Updating feature count in TOC name for layer: " + str(basename)
    arcpy.AddMessage("    Updating feature count in TOC name for layer: " + str(basename) )

    # In 10.1, you may be able to use arcpy.da.SearchCursor to increase the speed.
    #http://gis.stackexchange.com/questions/30140/fastest-way-to-count-the-number-of-features-in-a-feature-class
    #fcount = 0
    #cursor = arcpy.SearchCursor(lyr)
    #for row in cursor:
    #    fcount += 1
    #del cursor

    #Get the feature count
    fcount = int(arcpy.GetCount_management(lyr).getOutput(0))

    #Update the lyr.name property
    lyr.name = basename + " [n=" + str(fcount) + "]"
    del fcount

arcpy.RefreshTOC()

#Garbage collection
del mxd
RyanKDalton
sumber
GetCount akan lebih cepat daripada kursor. Apa yang membuat Anda menarik kesimpulan sebaliknya?
blah238
Pengujian awal saya terhadap shapefile kecil menunjukkan lebih cepat. namun, setelah menguji pada lapisan RDBMS yang lebih besar, Anda benar, GetCount lebih cepat. Saya telah memperbarui kode di atas.
RyanKDalton
Alat kecil yang bagus, Anda harus membagikannya di galeri kode ESRI?
Hornbydd