PauseDrawing

Краткая информация

Класс PauseDrawing приостанавливает отрисовку вида карты при использовании его в контекстной программе для управления (выражение with).

Обсуждение

Класс PauseDrawing - это контекстная программа для управления, которая приостанавливает отрисовку вида карты. Используйте этот класс, чтобы приостановить отрисовку вида карты во время применения обновлений к слою или во время запуска инструментов геообработки. Выходные данные инструментов геообработки будут добавлены на панель Содержание, но не будут отображаться в виде карты до тех пор, пока не будет закрыта контекстная программа для управления. Даже если функция RefreshLayer будет вызвана в контекстной программе для управления PauseDrawing, вид карты не обновится до выхода из блока with.

Синтаксис

 PauseDrawing ()

Пример кода

PauseDrawing, пример 1

Используйте класс PauseDrawing в качестве контекстной программы для управления при применении обновлений с помощью курсоров обновления.

import arcpy
from random import randint

featureclass_1 = r"c:\data\myGDB.gdb\fc1"
featureclass_2 = r"c:\data\myGDB.gdb\fc2"

with arcpy.PauseDrawing():
    with arcpy.da.UpdateCursor(featureclass_1, "class_field") as cursor:
        for row in cursor:
            classification = randint(1, 5)
            row[0] = classification
            cursor.updateRow(row)

    with arcpy.da.UpdateCursor(featureclass_2, "class_field") as cursor:
        for row in cursor:
            classification = randint(1, 5)
            row[0] = classification
            cursor.updateRow(row)
    arcpy.RefreshLayer((featureclass_1, featureclass_2))

# The map view will refresh now that the PauseDrawing context manager has closed.
PauseDrawing, пример 2

Используйте класс PauseDrawing в качестве контекстной программы для управления при вставке новых объектов и запуске инструмента геообработки.

import arcpy
from random import randint

featureclass_1 = r"c:\data\myGDB.gdb\fc1"
featureclass_2 = r"c:\data\myGDB.gdb\fc2"

calculation_code_block = """
from random import randint
def f():
    return randint(1, 5)
"""

with arcpy.PauseDrawing():
    # Use cursors to copy geometries from one feature layer to another
    with arcpy.da.InsertCursor(featureclass_1, ["SHAPE@"]) as icur:
        with arcpy.da.SearchCursor(featureclass_2, "SHAPE@") as scur:
            for row in scur:
                icur.insertRow((row[0]))

    # Use CalculateField to update the class field
    arcpy.management.CalculateField(
        in_table=featureclass_1,
        field="class",
        expression="f()",
        expression_type="PYTHON3",
        code_block=calculation_code_block
        )

# The map view will refresh now that the PauseDrawing context manager has closed.