Zugreifen auf Lizenzen und Erweiterungen in Python

Für jede Ausführung eines Werkzeugs in einem Skript ist eine ArcGIS Desktop-Lizenz erforderlich. Für Werkzeuge aus ArcGIS-Erweiterungen wie ArcGIS Spatial Analyst ist eine zusätzliche Lizenz für die jeweilige Erweiterung erforderlich. Falls die benötigten Lizenzen nicht verfügbar sind, schlägt die Ausführung eines Werkzeugs fehl, und Fehlermeldungen werden ausgegeben. Wenn Sie die Installation z. B. mit einer ArcView-Lizenz durchführen und versuchen, ein Toolset für eine ArcEditor- oder ArcInfo-Lizenz auszuführen, tritt für das Werkzeug ein Fehler auf.

Wenn eine ArcView- oder ArcEditor-Lizenz verwendet wird, muss ein Skript das Produkt auf ArcView oder ArcEditor festlegen. Bei der Verwendung einer Engine- oder EngineGeoDB-Lizenz muss ein Skript das Produkt entsprechend auf Engine bzw. EngineGeoDB festlegen. Wenn keine Lizenz ausdrücklich festgelegt ist, wird die Lizenz beim ersten Zugriff auf ein ArcPy-Werkzeug, eine –Funktion oder eine –Klasse in Abhängigkeit von der höchsten verfügbaren Lizenzstufe initialisiert.

Jedes Werkzeug führt eine Überprüfung durch, um sicherzustellen, dass die entsprechende Lizenz vorliegt. Ist dies nicht der Fall, schlägt die Ausführung fehl. Um zu verhindern, dass die Ausführung zum Teil erfolgt und dann fehlschlägt, können Sie am Anfang des Skripts eine Überprüfung durchführen, damit das Fehlschlagen gleich erkannt wird.

TippTipp:

Die Einstellung des Produkts und der Erweiterungen ist nur innerhalb eigenständiger Skripte erforderlich. Wenn Sie Werkzeuge im Python-Fenster ausführen oder Skriptwerkzeuge verwenden, wird das Produkt bereits in der Anwendung festgelegt, und die aktiven Erweiterungen basieren auf dem Dialogfeld "Erweiterungen".

Desktop- und Engine/Server-Lizenzen

Produktmodule werden vor dem Import von ArcPy importiert, um die von einem Skript verwendete Desktop-Lizenz zu definieren. Mit der Funktion CheckProduct können Sie die Verfügbarkeit von Desktop-Lizenzen überprüfen, und die Funktion ProductInfo meldet die aktuelle Produktlizenz.

Ältere VersionenÄltere Versionen:

Es ist ratsam, die Produktebene festzulegen, indem Sie das entsprechende Produktmodul (arcinfo, arceditor, arcview, arcserver, arcenginegeodb, arcengine) vor dem Importieren von ArcPy importieren. Die Funktion SetProduct ist eine Legacyfunktion, die das Produkt nicht festlegen kann, nachdem ArcPy importiert wurde.

Erweiterungslizenzen

Lizenzen für Erweiterungen können von einem Lizenzmanager abgerufen und zurückgegeben werden, wenn sie nicht mehr erforderlich sind. CheckExtension wird verwendet, um zu überprüfen, ob eine Lizenz zum Auschecken für einen bestimmten Typ von Erweiterung verfügbar ist. Mit CheckOutExtension wird die Lizenz tatsächlich abgerufen. Nachdem die Erweiterungslizenz vom Skript abgerufen wurde, können die Werkzeuge der betreffenden Erweiterung ausgeführt werden. Nachdem ein Skript die Werkzeuge einer bestimmten Erweiterung ausgeführt hat, sollte die Lizenz mit der Funktion CheckInExtension an den Lizenzmanager zurückgegeben werden, sodass diese von anderen Anwendungen verwendet werden kann. Alle ausgecheckten Erweiterungslizenzen und festgelegten Produktlizenzen werden nach Abschluss eines Skriptes an den Lizenzmanager zurückgegeben.

Im folgenden Beispiel werden Werkzeuge von ArcGIS 3D Analyst ausgeführt, und die Desktop-Produktlizenz wird auf ArcView festgelegt, da eine ArcInfo-Lizenz für die Ausführung von Erweiterungswerkzeugen nicht erforderlich ist. Das Skript schlägt fehl, wenn die ArcView-Lizenz nicht ausdrücklich festgelegt und keine ArcInfo-Lizenz verfügbar ist, da für die Ausführung von Erweiterungswerkzeugen eine Desktop-Lizenz erforderlich ist.

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")

Im Beispiel oben wird die Erweiterung "3D Analyst" nach einer finally-Klausel eingecheckt. Dadurch wird sichergestellt, dass die Erweiterung unabhängig davon, ob ein Fehler aufgetreten ist, immer eingecheckt wird.

Wenn der Wert Failed, Unavailable oder NotLicensed zurückgegeben wird, gibt dies an, dass die Erweiterung nicht erfolgreich ausgecheckt werden konnte.

Im Folgenden sind die Namen der Erweiterungen und die zugehörigen Erweiterungscodes aufgeführt:

Erweiterung

Erweiterungscode

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

See-

Spatial Analyst

Geometrietabelle

StreetMap

StreetMap

Tracking Analyst

Tracking

Produktcodenamen

Produktcodes

ArcInfo

ArcEditor

ArcView

Engine

EngineGeoDB

ArcServer

Lizenzierungsfunktionen

Funktion

Erklärung

CheckExtension(Erweiterung)

Überprüft, ob eine Lizenz verfügbar ist, die für einen bestimmten Typ von Erweiterung ausgecheckt werden kann.

Rückgabewert

Bedeutung

Verfügbar

Die angeforderte Lizenz ist verfügbar und kann festgelegt werden.

Unavailable

Die angeforderte Lizenz ist nicht verfügbar und kann nicht festgelegt werden.

NotLicensed

Die angeforderte Lizenz ist nicht gültig.

Fehlgeschlagen

Während der Anforderung ist ein Systemfehler aufgetreten.

CheckInExtension(Erweiterung)

Gibt die Lizenz zurück, sodass andere Anwendungen sie verwenden können.

Rückgabewert

Bedeutung

NotInitialized

Es wurde keine Desktop-Lizenz festgelegt.

Fehlgeschlagen

Während der Anforderung ist ein Systemfehler aufgetreten.

CheckedIn

Die Lizenz wurde erfolgreich zurückgegeben.

CheckOutExtension(Erweiterung)

Ruft die Lizenz ab.

Rückgabewert

Bedeutung

NotInitialized

Es wurde keine Desktop-Lizenz festgelegt.

Unavailable

Die angeforderte Lizenz ist nicht verfügbar und kann nicht festgelegt werden.

CheckedOut

Die Lizenz wurde erfolgreich festgelegt.

CheckProduct(Code)

Überprüft, ob die angeforderte Lizenz verfügbar ist.

Rückgabewert

Bedeutung

AlreadyInitialized

Die Lizenz wurde im Skript bereits festgelegt.

Verfügbar

Die angeforderte Lizenz ist verfügbar und kann festgelegt werden.

Unavailable

Die angeforderte Lizenz ist nicht verfügbar und kann nicht festgelegt werden.

NotLicensed

Die angeforderte Lizenz ist nicht gültig.

Fehlgeschlagen

Während der Anforderung ist ein Systemfehler aufgetreten.

ProductInfo()

Gibt die aktuelle Produktlizenz zurück.

Rückgabewert

Bedeutung

NotInitialized

Es wurde keine Lizenz festgelegt.

ArcInfo

Eine ArcInfo-Lizenz wurde festgelegt.

ArcEditor

Eine ArcEditor-Lizenz wurde festgelegt.

ArcView

Eine ArcView-Lizenz wurde festgelegt.

ArcServer

Eine ArcGIS Server-Lizenz wurde festgelegt.

EngineGeoDB

Eine EngineGeoDB-Lizenz wurde festgelegt.

Engine

Eine Engine-Lizenz wurde festgelegt.

SetProduct(Code)

Definiert die Desktop-Lizenz.

Rückgabewert

Bedeutung

CheckedOut

Die Lizenz wurde erfolgreich festgelegt.

AlreadyInitialized

Die Lizenz wurde im Skript bereits festgelegt.

NotLicensed

Die angeforderte Lizenz ist nicht gültig.

Fehlgeschlagen

Während der Anforderung ist ein Systemfehler aufgetreten.


7/10/2012