Краткая информация
Обеспечивает возможность вставлять слой в нужное местоположение фрейма данных или в составной слой документа карты (.mxd).
Обсуждение
InsertLayer – более точный способ позиционирования слоя во фрейме данных или составном слое, поскольку для указания точного положения используется базовый слой. Слой добавляется либо перед базовым слоем, либо после него.
Если базовый слой ссылается на слой корневого уровня фрейма данных, вставляемый слой будет добавлен на корневом уровне фрейма данных. Если базовый слой ссылается на слой внутри составного слоя, вставляемый слой будет добавлен в группу. Поскольку базовый слой является обязательным параметром, с помощью InsertLayer невозможно добавить слой в пустой фрейм данных или пустой составной слой. Добавить слой в пустой фрейм данных или составной слой позволяют соответственно функции AddLayer или AddLayerToGroup.
Вставляемый слой должен ссылаться на уже имеющийся слой (помните о том, что слой может также быть составным). Источник может находиться в файле слоя на диске, внутри общего документа карты или фрейма данных, внутри общего документа карты, но другого фрейма данных, либо даже в отдельном документе карты.
Способ отображения слоя в таблице содержания (TOC) после добавления зависит от способа отображения слоя источника. Например, некоторые слои полностью свернуты и не отражают свои стрелки в TOC. Эта настройка сохраняется в слое. Если слой свернут и сохранен в файле слоя, а потом добавлен в документ карты, слой будет свернут в новом документе карты при добавлении через InsertLayer.
Синтаксис
InsertLayer (data_frame, reference_layer, insert_layer, {insert_position})
Параметр | Объяснение | Тип данных |
data_frame | Ссылка на объект DataFrame, в который будет вставлен новый слой. | DataFrame |
reference_layer | Объект Layer, соответствующий существующему слою, который определяет положение, где будет вставлен новый слой. | Layer |
insert_layer | Ссылка на объект Layer, представляющий слой, который будет вставлен. | Layer |
insert_position | Константа, определяющая размещение добавляемого слоя по отношению к базовому слою.
(Значение по умолчанию — BEFORE) | String |
Пример кода
InsertLayer, пример 1:
Следующий скрипт вставит новый слой из файла слоя (.lyr) на диске и разместит его перед слоем, называемым Lakes (Озера), который представляет собой фрейм данных с именем County Maps (Карты областей).
import arcpy
mxd = arcpy.mapping.MapDocument(r"C:\Project\Project.mxd")
df = arcpy.mapping.ListDataFrames(mxd, "County Maps")[0]
refLayer = arcpy.mapping.ListLayers(mxd, "Lakes", df)[0]
insertLayer = arcpy.mapping.Layer(r"C:\Project\Data\Rivers.lyr")
arcpy.mapping.InsertLayer(df, refLayer, insertLayer, "BEFORE")
mxd.saveACopy(r"C:\Project\Project2.mxd")
del mxd, insertLayer
InsertLayer, пример 2:
Следующий скрипт вставит слой с именем Rivers (Реки) из другого, независимого документа карты над слоем с именем Lakes (Озера) во фрейме данных с именем County Maps (Карты областей).
import arcpy
#Reference layer in secondary map document
mxd2 = arcpy.mapping.MapDocument(r"C:\Project\ProjectTemplate.mxd")
df2 = arcpy.mapping.ListDataFrames(mxd2, "Layers")[0]
insertLayer = arcpy.mapping.ListLayers(mxd2, "Rivers", df2)[0]
#Insert layer into primary map document
mxd = arcpy.mapping.MapDocument(r"C:\Project\Project.mxd")
df = arcpy.mapping.ListDataFrames(mxd, "County Maps")[0]
refLayer = arcpy.mapping.ListLayers(mxd, "Lakes", df)[0]
arcpy.mapping.InsertLayer(df, refLayer, insertLayer, "BEFORE")
#Save to a new map document and clear variable references
mxd.saveACopy(r"C:\Project\Project2.mxd")
del mxd, mxd2, insertLayer