Чи є спосіб показати кількість функцій шарів у TOC?


10

Я використовую ArcGIS 10. Чи є в змісті ArcMap (TOC) спосіб, щоб "Ім'я шару" автоматично відображало підрахунок загальної кількості функцій у кожному шарі?

Я думав, що TOC буде виглядати приблизно так:

  • Дороги (27)
  • Потоки (100)
  • Посилки (12)

Я знайшов цю опцію для надання унікальної вартості , але:

  1. Я не хлопець ArcObjects, і
  2. Я хочу працювати лише з рендерінгом Single Value .

У вкладці "Список за вибором" є ця можливість, але лише тоді, коли є вибрані функції.


Ви хочете зробити це для одного шару на своїй карті (у вас є назва) або застосували його до всіх шарів на карті за замовчуванням?
Чендерсон

Усі шари в TOC, бажано за замовчуванням, і бажано оновлюються, коли змінюється кількість шару (наприклад, коли функція додається або видаляється).
RyanKDalton

2
Можливо, ви могли б зробити це за допомогою додатка Python, який слухає запуск / кінець сеансу редагування.
Пол,

1
Я думаю, що це можливо зробити в ArcGIS 10.1 та 10.2 (але не 10.0) за допомогою надбудови Python (розширення), яка запускає GetCount на кожному шарі та оновлює властивість імені кожного шару, щоб включити це скорене число при кожному оновленні. Якщо ви знайдете / подаєте ідею ArcGIS, щоб мати цю опцію OOTB у ArcGIS Professional, я би проголосував за неї.
PolyGeo

2
Я зробив це за допомогою скрипту в mxd, тому я переношу код у вікно python і запускаю його, щоб отримати друк кожного шару з кількістю функцій. Як говорить @PolyGeo, це може бути включено до надбудови Python, якщо ви хочете, щоб це відбувалося автоматично (у 10.1, як згадувалося).
Сінді Джаякумар

Відповіді:


7

Як запропонували @Paul & @PolyGeo, я думаю, що намагатися зробити це надбудовою Python має найбільш сенс, і я буду продовжувати цю ідею пізніше.

Тим часом я склав код, який додасть / оновить Ім'я TOC визначених користувачем шарів у MXD із кількістю функцій. Для своїх цілей я просто створив це як інструмент GP, який би приймав окремі шари через багатозначне введення, яке приймає "Шари" в інструменті сценарію. Це дозволяє мені оновлювати декілька шарів "на вимогу", лише оновлюючи кількість функцій цих шарів, що цікавлять.

Я не придумав способу автоматично запустити цей запуск, проте, роблячи тестування старих MXD, це може бути навіть не бажано. Якщо у вас багато шарів з великою кількістю функцій, це може бути повільним процесом.

Вхідна скринька

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

GetCount буде швидше курсора. Що змусило вас зробити протилежний висновок?
blah238

Моє первісне тестування невеликих форм-файлів показало, що це було швидше. однак після тестування на більших шарах RDBMS ви маєте рацію, GetCount був швидшим. Я оновив код вище.
RyanKDalton

Гарний маленький інструмент, ви повинні поділитися цим у галереї кодів ESRI?
Hornbydd
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.