Как включить или выключить слой
Добавлено: 17 май 2017, 10:32
Как включить или выключить слой в ArcGIS без фокусировки на таблицу содержания с помощью сочетания клавиш?
Геоинформационные системы (ГИС) и Дистанционное зондирование Земли
https://gis-lab.info/forum/
Нет границ невозможного - вот к примеру быстренько накидал на коленкеrhot писал(а):и через ArcGIS API нельзя?
Вот тоже было интересно. Возможно для быстрого сравнения растров или полигональных слоев, но тогда можно было бы воспользоваться инструментом шторка.Хотя я не понимаю зачем это вообще может понадобиться
Не у всех пока еще PRO имеетсяdoujin писал(а): можно было бы воспользоваться инструментом шторка.
Подтверждаю, работает! А на питоне такое можно написать, чтобы работало?Monstria писал(а):Нет границ невозможного - вот к примеру быстренько накидал на коленкеrhot писал(а):и через ArcGIS API нельзя?
Вот видео - как работает https://youtu.be/UIjBoOlPoHA
PS... Хотя я не понимаю зачем это вообще может понадобиться
PSS.. Решение написано на коленке - поэтому там все "сыро", хотя для демонстрации вполне достаточно
Код: Выделить всё
'''
Script turns off A & B layers.
'''
import arcpy
#A list of layer names that needs to be turned off.
names = ["A", "B"]
mxd = arcpy.mapping.MapDocument("current")
df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]
layers = arcpy.mapping.ListLayers(mxd, "*", df)
for layer in layers:
if layer.name in names:
layer.visible = False
arcpy.RefreshTOC()
arcpy.RefreshActiveView()
Можно, только если выполнено в виде надстройки. (наверное - я небольшой любитель питона, поэтому использую его изредка только в калькуляторе)rhot писал(а): А на питоне такое можно написать, чтобы работало?
rhot писал(а):Скопируйте сюда иходный код, пожалуйста.
Шторка есть во всех версиях Arcgis for Desktop 10.х, и, если не ошибаюсь, в 9.х тоже была.Monstria писал(а):Не у всех пока еще PRO имеется
Код: Выделить всё
import arcpy
import pythonaddins
class ButtonOff(object):
"""Implementation for btn1 (Button)"""
def __init__(self):
self.enabled = True
self.checked = False
def onClick(self):
names = ["A", "B"]
mxd = arcpy.mapping.MapDocument("current")
df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]
layers = arcpy.mapping.ListLayers(mxd, "*", df)
for layer in layers:
if layer.name in names:
layer.visible = False
arcpy.RefreshTOC()
arcpy.RefreshActiveView()
class ButtonOn(object):
"""Implementation for btn2 (Button)"""
def __init__(self):
self.enabled = True
self.checked = False
def onClick(self):
names = ["A", "B"]
mxd = arcpy.mapping.MapDocument("current")
df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]
layers = arcpy.mapping.ListLayers(mxd, "*", df)
for layer in layers:
if layer.name in names:
if layer.visible:
layer.visible = False
else:
layer.visible = True
arcpy.RefreshTOC()
arcpy.RefreshActiveView()