Accès aux licences et aux extensions dans Python

Chaque fois qu'un outil est exécuté dans un script, une licence ArcGIS Desktop est requise. Les outils des extensions ArcGIS, tels qu'ArcGIS Spatial Analyst, nécessitent une licence supplémentaire pour cette extension. Si les licences requises ne sont pas disponibles, un outil échoue et renvoie des messages d'erreur. Par exemple, si vous effectuez l'installation avec une licence ArcView et essayez d'exécuter un jeu d'outils correspondant à une licence ArcEditor ou ArcInfo, l'outil échoue.

Lors de l'utilisation d'une licence ArcView ou ArcEditor, un script doit définir le produit sur ArcView ou ArcEditor. De même, lors de l'utilisation d'une licence Engine ou EngineGeoDB, un script doit définir le produit sur Engine ou EngineGeoDB. Si aucune licence n'est spécifiée explicitement, elle est initialisée en fonction du niveau de licence disponible le plus élevé lors du premier accès à un outil, une fonction ou une classe ArcPy.

Chaque outil vérifie la présence de la licence appropriée. S'il ne dispose pas des éléments nécessaires, il échoue. Pour vous protéger contre une exécution partielle suivie d'un échec, effectuez une vérification en début de script pour échouer immédiatement.

AstuceAstuce :

La définition du produit et des extensions est uniquement nécessaire dans les scripts autonomes. Si vous exécutez des outils à partir de la fenêtre Python ou à l'aide d'outils de script, le produit est déjà défini à partir de l'application et les extensions actives sont basées sur la boîte de dialogue Extensions.

Licences Desktop, Engine/Server

Les modules de produit sont importés avant l'importation d'arcpy pour définir la licence bureautique utilisée par un script. La fonction CheckProduct permet de vérifier la disponibilité des licences bureautiques, tandis que la fonction ProductInfo indique la licence de produit actuelle.

HéritageHéritage :

Le niveau de produit doit être défini en important le module de produit approprié (arcinfo, arceditor, arcview, arcserver, arcenginegeodb, arcengine) avant d'importer arcpy. La fonction SetProduct est une fonction héritée et ne permet pas de définir le produit après l'importation d'arcpy.

Licences d'extensions

Les licences des extensions peuvent être récupérées à partir d'un gestionnaire de licence et renvoyées lorsqu'elles ne sont plus utiles. CheckExtension permet de vérifier si une licence est disponible pour être utilisée avec un type d'extension spécifique, tandis que CheckOutExtension effectue l'extraction de la licence. Lorsque la licence de l'extension a été extraite par le script, les outils de l'extension peuvent être exécutés. Lorsqu'un script a terminé l'utilisation des outils d'une extension particulière, la fonction CheckInExtension doit être utilisée pour restituer la licence au gestionnaire de licence afin de permettre à d'autres applications de l'utiliser. Toutes les licences d'extension extraites et les licences de produit définies sont renvoyées au Gestionnaire de licence lorsque l'exécution d'un script est terminée.

L'exemple suivant exécute certains outils ArcGIS 3D Analyst et définit la licence de produit sur ArcView, car aucune licence ArcInfo n'est requise pour exécuter des outils à partir d'une extension. Le script échoue si la licence ArcView n'est pas définie de façon explicite et si aucune licence ArcInfo n'est disponible, car une licence ArcGIS Desktop est nécessaire pour exécuter les outils de l'extension.

class LicenseError(Exception):
    pass

# Set desktop license used to ArcView
#
import arcview
import arcpy
from arcpy import env

try:
    if arcpy.CheckExtension("3D") == "Available":
        arcpy.CheckOutExtension("3D")
    else:
        # Raise a custom exception
        #
        raise LicenseError
    
    env.workspace = "D:/GrosMorne"
    arcpy.HillShade_3d("WesternBrook", "westbrook_hill", 300)
    arcpy.Aspect_3d("WesternBrook", "westbrook_aspect")

except LicenseError:
    print "3D Analyst license is unavailable"  
except:
    print arcpy.GetMessages(2)
finally:
    # Check in the 3D Analyst extension
    #
    arcpy.CheckInExtension("3D")

Dans l'exemple ci-dessus, l'extension 3D Analyst est insérée selon une clause finally, ce qui signifie qu'elle est toujours réinsérée, qu'une exception se produise ou pas.

Les valeurs renvoyées Failed, Unavailable ou NotLicensed indiquent que l'utilisation de l'extension n'a pas réussi.

Vous trouverez ci-dessous les noms des extensions et leurs noms de code d'extension :

Extension

Code d'extension

3D Analyst

3D

ArcGIS Schematics

Schematics

ArcScan

ArcScan

Business Analyst

Business

Data Interoperability

DataInteroperability

GeoStatistical Analyst

GeoStats

ArcGIS Workflow Manager

JTX

Network Analyst

Network

Esri Aeronautical Solution

Aeronautical

Esri Defense Mapping

Defense

Esri Production Mapping

Foundation

ArcGIS Data Reviewer

Datareviewer

Esri Nautical Solution

Nautical

Spatial Analyst

Spatial

StreetMap

StreetMap

Tracking Analyst

Tracking

Noms de code de produit

Codes produit

ArcInfo

ArcEditor

ArcView

Engine

EngineGeoDB

ArcServer

Fonctions de gestion des licences

Fonction

Explication

CheckExtension(extension)

Permet de vérifier si une licence disponible peut être utilisée pour un type d'extension spécifique.

Valeur renvoyée

Signification

Disponible

La licence demandée est disponible et peut être définie.

Unavailable

La licence demandée n'est pas disponible et ne peut pas être définie.

NotLicensed

La licence demandée n'est pas valide.

Echec

Une défaillance système s'est produite pendant la demande.

CheckInExtension(extension)

Renvoie la licence pour que d'autres applications puissent l'utiliser.

Valeur renvoyée

Signification

NotInitialized

Aucune licence bureautique n'a été définie.

Echec

Une défaillance système s'est produite pendant la demande.

CheckedIn

La licence a été renvoyée avec succès.

CheckOutExtension(extension)

Récupère la licence.

Valeur renvoyée

Signification

NotInitialized

Aucune licence bureautique n'a été définie.

Unavailable

La licence demandée n'est pas disponible et ne peut pas être définie.

CheckedOut

Licence définie avec succès.

CheckProduct(code)

Vérifie si la licence demandée est disponible.

Valeur renvoyée

Signification

AlreadyInitialized

La licence a déjà été définie dans le script.

Disponible

La licence demandée est disponible et peut être définie.

Unavailable

La licence demandée n'est pas disponible et ne peut pas être définie.

NotLicensed

La licence demandée n'est pas valide.

Echec

Une défaillance système s'est produite pendant la demande.

ProductInfo()

Indique la licence du produit courant.

Valeur renvoyée

Signification

NotInitialized

Aucune licence n'a été définie.

ArcInfo

Une licence ArcInfo a été définie.

ArcEditor

Une licence ArcEditor a été définie.

ArcView

Une licence ArcView a été définie.

ArcServer

Une licence ArcGIS Server a été définie.

EngineGeoDB

Une licence EngineGeoDB a été définie.

Engine

Une licence Engine a été définie.

SetProduct(code)

Définit la licence bureautique.

Valeur renvoyée

Signification

CheckedOut

Licence définie avec succès.

AlreadyInitialized

La licence a déjà été définie dans le script.

NotLicensed

La licence demandée n'est pas valide.

Echec

Une défaillance système s'est produite pendant la demande.


7/10/2012