Добавить новый групповой слой с ArcPy?


21

Кто-нибудь сейчас как добавить групповой слой с Python в ArcGIS Desktop 10?

Я могу использовать arcpy.mapping.AddLayer, но, конечно, это только для фактического слоя, а не для группового слоя.

пока у меня есть это

import arcpy
mxd = arcpy.mapping.MapDocument("CURRENT")
df = arcpy.mapping.listdataframes(mxd, "layers")[0]
arcpy.mapping.AddLayer

Ответы:


18

Я не думаю, что ArcPy предоставляет что-либо для непосредственного создания группового слоя, но есть простой обходной путь. Вы можете создать файл .lyr, который содержит один пустой групповой слой и добавить его на карту:

groupLayer = arcpy.mapping.Layer(r"EmptyGroupLayer.lyr")
arcpy.mapping.AddLayer(dataFrame, groupLayer, "BOTTOM")

Затем вы можете использовать функцию AddLayerToGroup, чтобы добавить другие слои под слоем вашей группы.


У меня есть несколько групп слоев, но внутри них есть другие группы. Давайте назовем их родителями и детьми. все родители уникальны, но дети в каждом из родителей одинаковы. EG Incidentals> Птицы и трансекты> Птица. Есть ли способ избежать конфликта двух слоев птиц, имеющих одинаковые названия?
Оливер Бурдекин

Это дало мне ошибку, когда я позвонил AddLayerToGroup. Я нашел решение здесь: geonet.esri.com/thread/105771#comment-393442 groupLayer = arcpy.mapping.ListLayers(mxd, "AAAA", dataFrame)[0]
Габриэль Литтман

4

Сохраните пустой групповой слой как .lyrфайл. Затем вы можете использовать его, AddLayerчтобы добавить его на карту, а затем добавить новые слои оттуда.


0

Для ArcGIS 10.2 и 10.3 вы не можете добавить слой в эту группу. Вы должны обратиться к слою, добавленному в оглавлении, а не к слою на диске. Закончите с шагами, описанными в следующем сообщении: AddLayertoGroup

newlyrGr = arcpy.mapping.ListLayers(df)[0]

Тогда все работает!

arcpy.mapping.AddLayerToGroup(df, newlyrGr, feat_layer)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.