ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • Hilfe
  • Sign Out
ArcGIS Desktop

ArcGIS Online

Die Mapping-Plattform für Ihre Organisation

ArcGIS Desktop

Ein vollständiges professionelles GIS

ArcGIS Enterprise

GIS in Ihrem Unternehmen

ArcGIS Developers

Werkzeuge zum Erstellen standortbezogener Apps

ArcGIS Solutions

Kostenlose Karten- und App-Vorlagen für Ihre Branche

ArcGIS Marketplace

Rufen Sie Apps und Daten für Ihre Organisation ab.

  • Dokumentation
  • Support
Esri
  • Anmelden
user
  • Eigenes Profil
  • Abmelden

ArcMap

  • Startseite
  • Erste Schritte
  • Karte
  • Analysieren
  • Verwalten von Daten
  • Werkzeuge
  • Erweiterungen

Was ist eine Python-Toolbox?

  • Erstellen einer Python-Toolbox
  • Beispiel für eine Python-Toolbox

Python-Toolboxes Python-Toolbox sind Geoverarbeitungs-Toolboxes, die vollständig in Python erstellt werden. Eine Python-Toolbox und die darin enthaltenen Werkzeuge sehen genauso wie die auf andere Weise erstellten Toolboxes und Werkzeuge aus und funktionieren auch genauso. Bei einer Python-Toolbox (.pyt) handelt es sich einfach um eine ASCII-basierte Datei, die eine Toolbox und ein oder mehrere Werkzeuge definiert.

Nach der Erstellung bieten die Werkzeuge in einer Python-Toolbox zahlreiche Vorteile:

  • Wenn Sie eine Python-Toolbox erstellen, können Sie Ihre Python-Kenntnisse nutzen und rasch Prototypen und voll funktionsfähige Geoverarbeitungswerkzeuge erstellen.
  • Das erstellte Werkzeug ist wie ein Systemwerkzeug integraler Bestandteil der Geoverarbeitung. Sie können es über das Fenster Suchen oder Katalog öffnen, in ModelBuilder und im Python-Fenster verwenden und aus Skripten heraus aufrufen.
  • Sie können Meldungen in das Fenster Ergebnisse und in das Statusdialogfeldfeld schreiben.
  • Mit integrierten Dokumentationswerkzeugen können Sie Dokumentation bereitstellen.
  • Wenn das Skript als Skriptwerkzeug ausgeführt wird, kennt arcpy die Anwendung, in der es aufgerufen wurde (z. B. ArcMap). In der Anwendung vorgenommene Einstellungen, z. B. arcpy.env.overwriteOutput und arcpy.env.scratchWorkspace, sind von ArcPy im Skriptwerkzeug verfügbar.

Erstellen einer Python-Toolbox

Eine Python-Toolbox erstellen Sie, indem Sie mit der rechten Maustaste auf den Ordner klicken, in dem Sie die neue Toolbox erstellen möchten, und dann auf Neu > Python-Toolbox klicken.

Zunächst enthält die Python-Toolbox eine Python-Klasse mit dem Namen Toolbox, die die Merkmale der Toolbox definiert, und eine zweite Python-Klasse mit dem Namen Tool, die ein Stub-Geoverarbeitungswerkzeug enthält.

Erste Schritte

Erste Schritte

Erstellen einer neuen Python-Toolbox

Bearbeiten einer Python-Toolbox

Werkzeug definieren

Definieren eines Werkzeugs

Werkzeugparameter definieren

Definieren von Parametern in einer Python-Toolbox

Definieren von Parameterdatentypen in einer Python-Toolbox

Werkzeugverhalten anpassen

Anpassen von Werkzeugverhalten in einer Python-Toolbox

Aktualisieren des Schemas in einer Python-Toolbox

Steuern des Lizenzverhaltens in einer Python-Toolbox

Quellcode des Werkzeugs schreiben

Zugreifen auf Parameter in einer Python-Toolbox

Schreiben von Meldungen in einer Python-Toolbox

Werkzeug dokumentieren

Dokumentieren eines Werkzeugs in einer Python-Toolbox

Beispiel für eine Python-Toolbox

Nachstehend finden Sie ein funktionsfähiges Beispiel für eine Python-Toolbox mit einem einzelnen Werkzeug. Anhand des Werkzeugs mit dem Namen CalculateSinuosity wird ein Feld hinzugefügt und die Biegung des Features berechnet. Dabei ist die Biegung ein Maß dafür, wie sich eine Linie biegt.

Hinweis:

Um dieses Werkzeug zu verwenden, kopieren Sie den Beispielcode, fügen ihn in einem Editor, z. B. Notepad, ein und speichern Sie die Datei mit der Erweiterung .pyt.

import arcpy

class Toolbox(object):
    def __init__(self):
        self.label =  "Sinuosity toolbox"
        self.alias  = "sinuosity"

        # List of tool classes associated with this toolbox
        self.tools = [CalculateSinuosity] 

class CalculateSinuosity(object):
    def __init__(self):
        self.label       = "Calculate Sinuosity"
        self.description = "Sinuosity measures the amount that a river " + \
                           "meanders within its valley, calculated by " + \
                           "dividing total stream length by valley length."

    def getParameterInfo(self):
        #Define parameter definitions

        # Input Features parameter
        in_features = arcpy.Parameter(
            displayName="Input Features",
            name="in_features",
            datatype="GPFeatureLayer",
            parameterType="Required",
            direction="Input")
        
        in_features.filter.list = ["Polyline"]

        # Sinuosity Field parameter
        sinuosity_field = arcpy.Parameter(
            displayName="Sinuosity Field",
            name="sinuosity_field",
            datatype="Field",
            parameterType="Optional",
            direction="Input")
        
        sinuosity_field.value = "sinuosity"
        
        # Derived Output Features parameter
        out_features = arcpy.Parameter(
            displayName="Output Features",
            name="out_features",
            datatype="GPFeatureLayer",
            parameterType="Derived",
            direction="Output")
        
        out_features.parameterDependencies = [in_features.name]
        out_features.schema.clone = True

        parameters = [in_features, sinuosity_field, out_features]
        
        return parameters

    def isLicensed(self): #optional
        return True

    def updateParameters(self, parameters): #optional
        if parameters[0].altered:
            parameters[1].value = arcpy.ValidateFieldName(parameters[1].value,
                                                          parameters[0].value)
        return

    def updateMessages(self, parameters): #optional
        return

    def execute(self, parameters, messages):
        inFeatures  = parameters[0].valueAsText
        fieldName   = parameters[1].valueAsText
        
        if fieldName in ["#", "", None]:
            fieldName = "sinuosity"

        arcpy.AddField_management(inFeatures, fieldName, 'DOUBLE')

        expression = '''
import math
def getSinuosity(shape):
    length = shape.length
    d = math.sqrt((shape.firstPoint.X - shape.lastPoint.X) ** 2 +
                  (shape.firstPoint.Y - shape.lastPoint.Y) ** 2)
    return d/length
'''

        arcpy.CalculateField_management(inFeatures,
                                        fieldName,
                                        'getSinuosity(!shape!)',
                                        'PYTHON_9.3',
                                        expression)

Verwandte Themen

  • Kurzer Überblick über das Erstellen von Werkzeugen mit Python
  • Vergleichen von benutzerdefinierten und Python-Toolboxes

ArcGIS Desktop

  • Startseite
  • Dokumentation
  • Support

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

Über Esri

  • Über uns
  • Karriere
  • Esri Blog
  • User Conference
  • Developer Summit
Esri
Wir sind an Ihrer Meinung interessiert.
Copyright © 2021 Esri. | Datenschutz | Rechtliches