Подскажите пожалуйста, что нужно написать, чтобы программа загрузила слои из указанной папки ?
Идея такая. Есть скрипт *N.py*(запускается через toolbox), в котором указано что нужно делать с загруженными в программу слоями. Проблема в том, что если просто скопировать текст кода в Python window и руками загрузить все слои в программу, то всё работает как надо. А нужно, чтобы скрипт запускался через toolbox, с окошком, где пользователь указывает workspace, а дальше бы программа сама загуружала нужные слои и обрабатывала их.
Начинается вот так:
arcpy.env.workspace = "C:\Temp"
# руками, а лучше по-другому загрузить слои из рабочей папки
# Начало преобразований
arcpy.SelectLayerByAttribute_management ("Adminbndy3","NEW_SELECTION","(NM_LANGCD) <> 'FRE'" )
arcpy.SelectLayerByAttribute_management ("Adminbndy4","NEW_SELECTION","(NM_LANGCD) <> 'FRE'" )
arcpy.DeleteRows_management ("Adminbndy3")
arcpy.DeleteRows_management ("Adminbndy4")
.......
Как на Python загрузить слои
-
- Интересующийся
- Сообщения: 35
- Зарегистрирован: 05 май 2012, 18:11
- Репутация: 0
-
- Активный участник
- Сообщения: 163
- Зарегистрирован: 28 июн 2012, 01:02
- Репутация: 84
- Откуда: Vladivostok
Re: Как на Python загрузить слои
Не пойму, зачем вы загружаете слои в ArcMap и обрабатываете их там. Наверное, для наглядности и интерактивности...
В общем, что бы добавить слои к карте, я бы написал такую функцию:
Ей передаем список из слоев (шейпы, классы в базе, .lyr файлы), она добавит их в активний фрейм данных текущей карты (то есть скрипт сработает только в ArcMap).
Воспользоваться этой функцией можно, например, так:
Допустим, первым параметром в toolbox'e скрипт получает папку. Находим в этой папке все шейпы и передаем их список на добавление в карту.
В общем, что бы добавить слои к карте, я бы написал такую функцию:
Код: Выделить всё
def add_layers(layers_list):
'''Add layers from layers_list to current map document'''
mxd = arcpy.mapping.MapDocument('CURRENT')
df = mxd.activeDataFrame
for layer in layers_list:
add_layer = arcpy.mapping.Layer(layer)
arcpy.mapping.AddLayer(df, add_layer, 'TOP')
Ей передаем список из слоев (шейпы, классы в базе, .lyr файлы), она добавит их в активний фрейм данных текущей карты (то есть скрипт сработает только в ArcMap).
Воспользоваться этой функцией можно, например, так:
Код: Выделить всё
ws = arcpy.GetParameterAsText(0)
arcpy.env.workspace = ws
layers_list = arcpy.ListFiles("*.shp")
add_layers(layers_list)
Допустим, первым параметром в toolbox'e скрипт получает папку. Находим в этой папке все шейпы и передаем их список на добавление в карту.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя