Erstellen eines Python Add-In-Kombinationsfeldes

Erstellen eines Add-In-Kombinationsfeldes

Ein Kombinationsfeld besteht aus einem editierbaren Feld und einer Dropdown-Liste. Der Benutzer kann einen Wert in der Dropdown-Liste auswählen, die auf Anforderung des Benutzers angezeigt wird. Wenn Sie das Kombinationsfeld als editierbar definieren, umfasst es ein editierbares Feld, in das der Benutzer einen Wert eingeben kann. Das Kombinationsfeld "Maßstab" in ArcMap ist ein gutes Beispiel für ein Kombinationsfeld. Wenn Daten mit einem bekannten Koordinatensystem in ArcMap hinzugefügt werden, wird das Kombinationsfeld "Maßstab" aktiviert, sodass Sie aus einem Satz vordefinierter Maßstäbe auswählen können. Außerdem können Sie einen gewünschten Maßstab eingeben, der nicht in der Liste der Optionen enthalten ist; die Karte wird dann basierend auf dem hinzugefügten Wert angezeigt.

In diesem Thema erfahren Sie, wie Sie mithilfe des Python Add-In-Assistenten ein Kombinationsfeld in einer neuen Werkzeugleiste erstellen. Bevor Sie mit dem Workflow beginnen, stellen Sie sicher, dass Sie ein ArcMap Add-In-Projekt erstellt und die Projekteinstellungen angegeben haben. Weitere Informationen finden Sie unter Erstellen eines Add-In-Projekts. Dieser Workflow bezieht sich auf das Erstellen eines Kombinationsfeldes für ArcMap, Sie können den Prozess jedoch auch verwenden, um ein Kombinationsfeld zu einer beliebigen ArcGIS for Desktop-Anwendung hinzuzufügen. In diesem Thema wird beschrieben, wie Sie ein Kombinationsfeld mit der im Inhaltsverzeichnis verfügbaren Layer-Liste erstellen. Durch Auswahl eines Layers wird ein Netz erstellt, das die gesamte Ausdehnung des Layers abdeckt. Die vom Add-In-Assistenten erstellte Python-Klasse wird dann näher untersucht, um die Eigenschaften und Methoden zu erläutern, die Funktionen für das Kombinationsfeld bereitstellen.

Zum Erstellen eines Add-In-Kombinationsfeldes sind folgende Schritte erforderlich:

Schritte:
  1. Erstellen Sie eine Werkzeugleiste.

    Nachdem Sie die erforderlichen Projekteinstellungen eingegeben haben, klicken Sie auf die Registerkarte Add-In Contents, und deklarieren Sie die Add-In-Anpassungen. Ein Kombinationsfeld kann sich auf einer Werkzeugleiste befinden, aber nicht in einem Menü. Eine Anleitung zum Erstellen einer Werkzeugleiste finden Sie unter Erstellen einer Add-In-Werkzeugleiste.

  2. Erstellen Sie das Kombinationsfeld.

    Nachdem Sie die Eigenschaften der Werkzeugleiste eingegeben haben, können Sie ein neues Kombinationsfeld erstellen. Klicken Sie mit der rechten Maustaste auf die neue Werkzeugleiste, und wählen Sie New Combo Box aus dem Kontextmenü.

    Festlegen von Kombinationsfeldeigenschaften im Add-In-Assistenten

    Ein Kombinationsfeld verfügt über verschiedene Eigenschaften, die Sie festlegen können. Diese Eigenschaften sind in der Datei config.xml für das Projekt gespeichert. In der folgenden Liste sind alle Eigenschaften mit einer kurzen Beschreibung aufgeführt.

    Eigenschaft

    Beschreibung

    Caption (erforderlich)

    Legt den Titel des Kombinationsfeldes fest. In der folgenden Abbildung sehen Sie, wie der Titel im ArcGIS Add-In-Manager verwendet wird, um die verschiedenen Arten von Anpassungen zu identifizieren (der Add-In-Typ ist in Klammern angegeben):

    Kombinationsfeldeigenschaften im Add-In-Manager

    Class (erforderlich)

    In der Python-Klasse schreiben Sie die Geschäftslogik für das Kombinationsfeld. Diese Klasse ist wichtig, da sie jedes Mal ausgeführt wird, wenn das Kombinationsfeld bearbeitet oder die Auswahl geändert wird. Verwenden Sie die Python Benennungsregeln zum Erstellen der Klasse. Python-Klassen verwenden Groß- und Kleinschreibung in den Namen. In diesem Beispiel wird eine Klasse namens "LayersComboBox" erstellt.

    ID (erforderlich)

    Der eindeutige Name zur Identifizierung des Kombinationsfeldes. Sie können mehrere Kombinationsfelder für ein bestimmtes Projekt erstellen; diese ID wird verwendet, um zwischen den verschiedenen Kombinationsfeldern zu unterscheiden. Idealerweise sollten Sie die Standard-ID durch einen aussagekräftigeren Wert ersetzen. Die ID darf keine Leerzeichen enthalten. Sie können Unterstriche als Trennzeichen zwischen Wörtern verwenden. Verwenden Sie keine Python-Schlüsselwörter. Reservierte Wörter finden Sie in der Python-Dokumentation.

    ToolTip (optional)

    Eine kurze Beschreibung (QuickInfo), die angezeigt wird, wenn der Mauszeiger in einer Desktop-Anwendung auf dem Kombinationsfeld platziert wird.

    Message (optional)

    Eine ausführliche Beschreibung der Funktionsweise des Kombinationsfeldes. Diese Meldung wird unter der QuickInfo angezeigt, wenn der Mauszeiger auf dem Kombinationsfeld platziert wird.

    Hint Text (optional)

    Der Text, der im Kombinationsfeld angezeigt wird, wenn es in der Desktop-Anwendung nicht aktiv ist. Dieser Text kann verwendet werden, um den Benutzer über die zur Wahl stehenden Elementtypen oder die Art von Elementen zu informieren, aus denen sie im Kombinationsfeld wählen müssen.

    Der letzte Abschnitt des Kombinationsfeldes sind Überschrift und Inhalt der Hilfe. Diese Eigenschaften ermöglichen Ihnen, Informationen bereitzustellen, die verwendet werden, wenn ein Benutzer die kontextsensitive Hilfe aufruft. Diese sind Popup-Fenster, die so lange am Bildschirm angezeigt werden, bis ein Benutzer auf eine andere Stelle klickt.

    Der Abschnitt der kontextsensitiven Hilfe besteht aus folgenden Eigenschaften:

    Eigenschaft

    Beschreibung

    Heading (optional)

    Gibt Informationen zum Inhalt der Hilfe an.

    Content (optional)

    Der Inhalt der Hilfe für das Kombinationsfeld.

    Nachdem Sie die Eigenschaften eingegeben haben, können Sie zum Speichern auf die Schaltfläche Save unten im Assistenten klicken. Daraufhin werden alle erforderlichen Dateien und Ordner im Arbeitsordner erstellt.

  3. Bearbeiten Sie das Python-Skript

    In dieser Phase haben Sie die Werte für die Eigenschaften hinzugefügt, die benötigt werden, um das Add-In-Kombinationsfeld zu definieren. Im nächsten Schritt bearbeiten Sie das Python-Skript und aktualisieren die Python-Klasse, um die Funktion zum Erstellen eines Polygon-Netzes einzubauen. Das Kombinationsfeld wird mit der Liste der Layer aus dem aktiven Datenrahmen gefüllt. Bei Auswahl eines Layers im Kombinationsfeld wird ein Netz anhand der Ausdehnung des Layers mit einer Größe von 10 Zeilen mal 10 Spalten erstellt. Zum Hinzufügen der Funktion zum Kombinationsfeld führen Sie die folgenden Schritte aus:

    1. Bearbeiten Sie das Python-Skript im Ordner Install, der sich im Arbeitsordner befindet, den Sie mit dem Assistenten erstellt haben.

      Es sollte eine Klasse mit demselben Namen vorhanden sein, den Sie im Assistenten eingegeben haben. Benennen Sie diese Klasse nicht um, da der Klassenname in der Datei config.xml referenziert wird. Die Klasse besteht aus mehreren Funktionen und Eigenschaften, die im Thema Kombinationsfeld-Klasse beschrieben werden.

    2. Aktualisieren Sie die Funktionen wie unten dargestellt.

      Dieser Code stellt die Funktion zur Erstellung eines Polygon-Netzes mit einer Größe von 10 Zeilen mal 10 Spalten zur Verfügung, wobei die Ausdehnung des im Kombinationsfeld ausgewählten Layers verwendet wird.

      # Business logic to implement the ComboBox
      def __init__(self):
              self.editable = True
              self.enabled = True
      
      def onSelChange(self, selection):
      
      	# When a new layer is selected, create a new fishnet using the extent of layer.
      	layer = arcpy.mapping.ListLayers(self.mxd, selection)[0]
      	desc = arcpy.Describe(layer.dataSource)
      	extent = desc.Extent
      	fishnet = arcpy.CreateFishnet_management(r'in_memory\fishnet',
      	                '%f %f' %(extent.XMin, extent.YMin),
      	                '%f %f' %(extent.XMin, extent.YMax),
      	                0, 0, 10, 10,
      	                '%f %f' %(extent.XMax, extent.YMax),
      	                'NO_LABELS',
      	                '%f %f %f %f' %(extent.XMin, extent.YMin, extent.XMax, extent.YMax), 'POLYGON')
      	arcpy.RefreshActiveView()
      
      def onFocus(self, focused):
      
        # When the combo box has focus, update the combo box with the list of layer names.
      	if focused:
      		self.mxd = arcpy.mapping.MapDocument('current')
      		layers = arcpy.mapping.ListLayers(self.mxd)
      		self.items = []
      		for layer in layers:
      			self.items.append(layer.name)
      
    3. Speichern Sie das Skript.
  4. Testen Sie das Kombinationsfeld.

    Nachdem Sie das Kombinationsfeld erstellt und den Skriptcode hinzugefügt haben, müssen Sie die Add-In-Datei erstellen und testen, bevor Sie sie freigeben. Eine Anleitung dazu finden Sie unter Testen von Add-Ins.

  5. Geben Sie das Add-In frei.

    Nachdem Sie das Kombinationsfeld getestet und überprüft haben, ob es wie erwartet funktioniert, können Sie das Add-In bereitstellen und freigeben. Weitere Informationen finden Sie unter Freigeben von Add-Ins.

Verwandte Themen

9/11/2013