Страница 1 из 1

Как включить или выключить слой

Добавлено: 17 май 2017, 10:32
rhot
Как включить или выключить слой в ArcGIS без фокусировки на таблицу содержания с помощью сочетания клавиш?

Re: Как включить или выключить слой

Добавлено: 17 май 2017, 10:40
lam
Ctrl+Пробел

Re: Как включить или выключить слой

Добавлено: 17 май 2017, 10:44
rhot
без фокусировки на таблицу содержания

Re: Как включить или выключить слой

Добавлено: 17 май 2017, 15:02
amnesiac
Так никак вроде...цитируя справку "Нажатие клавиши F3 или щелчок внутри таблицы содержания перемещает фокус в таблицу содержания, после этого возможна навигация и взаимодействие с ней при помощи клавиатуры".

Re: Как включить или выключить слой

Добавлено: 17 май 2017, 17:19
rhot
и через ArcGIS API нельзя?

Re: Как включить или выключить слой

Добавлено: 17 май 2017, 20:30
Monstria
rhot писал(а):и через ArcGIS API нельзя?
Нет границ невозможного - вот к примеру быстренько накидал на коленке
ShowLaers.rar
(64 КБ) 283 скачивания
Вот видео - как работает https://youtu.be/UIjBoOlPoHA
PS... Хотя я не понимаю зачем это вообще может понадобиться :)

PSS.. Решение написано на коленке - поэтому там все "сыро", хотя для демонстрации вполне достаточно

Re: Как включить или выключить слой

Добавлено: 18 май 2017, 04:21
doujin
Хотя я не понимаю зачем это вообще может понадобиться
Вот тоже было интересно. Возможно для быстрого сравнения растров или полигональных слоев, но тогда можно было бы воспользоваться инструментом шторка.
P.S. Не исключаю, что ткнул пальцем в небо, в уже известную вещь, но вдруг это будет полезно.

Re: Как включить или выключить слой

Добавлено: 18 май 2017, 08:03
Monstria
doujin писал(а): можно было бы воспользоваться инструментом шторка.
Не у всех пока еще PRO имеется :(

Re: Как включить или выключить слой

Добавлено: 18 май 2017, 15:41
rhot
Monstria писал(а):
rhot писал(а):и через ArcGIS API нельзя?
Нет границ невозможного - вот к примеру быстренько накидал на коленке
ShowLaers.rar
Вот видео - как работает 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()

Re: Как включить или выключить слой

Добавлено: 18 май 2017, 16:21
Monstria
rhot писал(а): А на питоне такое можно написать, чтобы работало?
Можно, только если выполнено в виде надстройки. (наверное - я небольшой любитель питона, поэтому использую его изредка только в калькуляторе)

Re: Как включить или выключить слой

Добавлено: 18 май 2017, 16:30
rhot
Скопируйте сюда иходный код, пожалуйста. У меня MS Visual Studio не установлен.

Re: Как включить или выключить слой

Добавлено: 18 май 2017, 19:32
Monstria
rhot писал(а):Скопируйте сюда иходный код, пожалуйста.
ShowLaers.rar
(175.81 КБ) 247 скачиваний

Re: Как включить или выключить слой

Добавлено: 19 май 2017, 03:55
doujin
Monstria писал(а):Не у всех пока еще PRO имеется :(
Шторка есть во всех версиях Arcgis for Desktop 10.х, и, если не ошибаюсь, в 9.х тоже была.

Что бы повесить Python код на сочетание клавиш, его нужно тоже оформить как дополнение в виде кнопки, а не просто скрипт. У них есть ПО и инструкции, которое выполняет практически всю подготовительную часть. Остается только добавить свой код.

Re: Как включить или выключить слой

Добавлено: 19 май 2017, 12:49
rhot
Решено через надстройку Python:

Код: Выделить всё

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()