He desarrollado una barra de herramientas python addin que añade un archivo de capa deseado (elegido desde un botón anidado en un menú en la barra de herramientas) a la tabla de contenidos en un proyecto. La funcionalidad sólo funciona, sin embargo, cuando el proyecto está en la vista de marco de datos - haciendo clic en una capa en el menú no hace nada si el proyecto está en la vista de diseño. He buscado en Google, pero no he encontrado una solución a este problema. ¿Alguien tiene alguna idea?
Utilizando: ArcGIS 10.2.2, Python 2.7
Código de ejemplo de trabajo para añadir una capa en la vista de marco de datos:
import arcpy
import pythonaddins
class FD_Bau_Fischaufstiege(object):
"""Implementation for Themenmanager_addin.button (Button)"""
def __init__(self):
self.enabled = True
## self.checked = False
self.mxd = arcpy.mapping.MapDocument('current')
def onClick(self):
## layer = r'\\msds.wv.de\dfsroot\HV\GROUP\Gis\DATEN\wvdat\Querbauwerke\Fischaufstieg.lyr'
layer = r'G:\Gis\DATEN\wvdat\Querbauwerke\Fischaufstieg.lyr'
activeDataFrame = self.mxd.activeView
df = arcpy.mapping.ListDataFrames(self.mxd, activeDataFrame)[0]
if arcpy.Exists(layer):
layerToAdd = arcpy.mapping.Layer(layer)
arcpy.mapping.AddLayer(df, layerToAdd, 'TOP')
else:
warningButton = pythonaddins.MessageBox("Die Datei ist nicht verfugbar.\nBitte kontaktieren Sie die GIS Abteilung.", "Datei nicht verfugbar", 0)
pass
He probado lo siguiente, pero sigue sin añadir la capa cuando estoy en la vista de diseño:
import arcpy
import pythonaddins
class ButtonClass1(object):
"""Implementation for TEST_addin.button (Button)"""
def __init__(self):
self.enabled = True
## self.checked = False
self.mxd = arcpy.mapping.MapDocument('current')
def onClick(self):
## layer = r'\\msds.wv.de\dfsroot\HV\GROUP\Gis\DATEN\wvdat\Querbauwerke\Fischaufstieg.lyr'
layer = r'G:\Gis\DATEN\wvdat\Querbauwerke\Fischaufstieg.lyr'
activeDataFrame = self.mxd.activeView
df = arcpy.mapping.ListDataFrames(self.mxd, activeDataFrame)[0]
if activeDataFrame == 'PAGE_LAYOUT':
if arcpy.Exists(layer):
layerToAdd = arcpy.mapping.Layer(layer)
arcpy.mapping.AddLayer(df, layerToAdd, 'TOP')
else:
warningButton = pythonaddins.MessageBox("Die Datei ist nicht verfugbar.\nBitte kontaktieren Sie die GIS Abteilung.", "Datei nicht verfugbar", 0)
else:
if arcpy.Exists(layer):
layerToAdd = arcpy.mapping.Layer(layer)
arcpy.mapping.AddLayer(df, layerToAdd, 'TOP')
else:
warningButton = pythonaddins.MessageBox("Die Datei ist nicht verfugbar.\nBitte kontaktieren Sie die GIS Abteilung.", "Datei nicht verfugbar", 0)
pass