ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • Aide
  • Sign Out
ArcGIS Desktop

ArcGIS Online

La plateforme cartographique de votre organisation

ArcGIS Desktop

Un SIG professionnel complet

ArcGIS Enterprise

SIG dans votre entreprise

ArcGIS Developers

Outils de création d'applications de localisation

ArcGIS Solutions

Modèles d'applications et de cartes gratuits pour votre secteur d'activité

ArcGIS Marketplace

Téléchargez des applications et des données pour votre organisation.

  • Documentation
  • Support
Esri
  • Se connecter
user
  • Mon profil
  • Déconnexion

ArcMap

  • Accueil
  • Commencer
  • Carte
  • Analyser
  • Gérer les données
  • Outils
  • Extensions

Qu'est-ce qu'une boîte à outils Python ?

  • Création d'une boîte à outils Python
  • Exemple de boîte à outils Python

Boîtes à outils Python Boîte à outils Python sont des boîtes à outils de géotraitement créées intégralement dans Python. Une boîte à outils Python, et les outils qu’elle contient, ont le même aspect, agissent et fonctionnent comme les boîtes à outils et les outils créés d’une autre façon. Une boîte à outils Python (.pyt) est simplement un fichier ASCII qui définit une boîte à outils et un ou plusieurs outils.

Une fois créé, les outils contenus dans une boîte à outils Python présentent de nombreux avantages :

  • La création d'une boîte à outils Python permet de tirer parti de vos connaissances concernant Python et de créer rapidement un prototype et des outils de géotraitement totalement fonctionnels.
  • L'outil que vous créez fait partie intégrante du géotraitement, exactement comme un outil système : vous pouvez l'ouvrir à partir de la fenêtre Rechercher ou Catalogue, l'utiliser dans ModelBuilder et la fenêtre Python et l'appeler à partir de scripts.
  • Vous pouvez écrire des messages dans la boîte de dialogue de progression et la fenêtre Résultats.
  • Vous pouvez utiliser les outils de documentation intégrés pour fournir une documentation.
  • Lorsque le script est exécuté en tant qu'outil de script, arcpy est pleinement conscient de l'application à partir de laquelle il est appelé (ArcMap, par exemple). Les paramètres définis dans l'application, tells que arcpy.env.overwriteOutput et arcpy.env.scratchWorkspace, sont disponibles d'ArcPy dans votre outil de script.

Création d'une boîte à outils Python

Pour créer une boîte à outils Python, cliquez avec le bouton droit sur le dossier dans lequel vous souhaitez la créer, puis cliquez sur Nouveau > Boîte à outils Python.

Au départ, la boîte à outils Python comprend une classe Python nommée Boîte à outils qui définit les caractéristiques de la boîte à outils et une deuxième classe Python nommée Outil qui offre un outil de géotraitement sans stub.

Prise en main

Prise en main

Création d'une boîte à outils Python

Modification d'une boîte à outils Python

Définir un outil

Définition d'un outil

Définir les paramètres de l'outil

Définition de paramètres dans une boîte à outils Python

Définition de types de données de paramètre dans une boîte à outils Python

Personnaliser le comportement de l'outil

Personnalisation du comportement de l'outil dans une boîte à outils Python

Mise à jour du schéma dans une boîte à outils Python

Contrôle du comportement de la licence dans une boîte à outils Python

Ecriture du code source de l'outil

Accès aux paramètres dans une boîte à outils Python

Ecriture de messages dans une boîte à outils Python

Documenter les outils

Documentation d'un outil dans une boîte à outils Python

Exemple de boîte à outils Python

Vous trouverez ci-dessous un exemple de fonctionnement d'une boîte à outils Python qui contient un seul outil. L'outil, nommé CalculateSinuosity, ajoute un champ et calcule la sinuosité de l'entité ; la sinuosité étant une mesure de la courbure d'une ligne.

Remarque :

Pour utiliser cet outil, copiez et collez l'exemple de code dans un éditeur, par exemple le Bloc-noteset enregistrez-le avec une extension .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)

Rubriques connexes

  • Présentation rapide de la création d'outils avec Python
  • Comparaison des boîtes à outils personnalisées et des boîtes à outils Python

ArcGIS Desktop

  • Accueil
  • Documentation
  • Support

ArcGIS

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

A propos d'Esri

  • A propos de la société
  • Carrières
  • Blog d’Esri
  • Conférence des utilisateurs
  • Sommet des développeurs
Esri
Donnez-nous votre avis.
Copyright © 2021 Esri. | Confidentialité | Légal