Immer wenn ein Werkzeug in einem Skript ausgeführt wird, ist eine ArcGIS-Lizenz erforderlich. Für Werkzeuge aus ArcGIS-Erweiterungen wie der Erweiterung "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 beispielsweise eine Installation mit einer ArcGIS for Desktop Basic-Lizenz ausführen und versuchen, ein Werkzeug auszuführen, das eine Standard- oder Advanced-Lizenz erfordert, scheitert die Ausführung des Werkzeugs.
Bei Verwendung einer ArcGIS for Desktop Basic- oder Standard-Lizenz, muss ein Skript das Produkt auf Basic oder Standard 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.
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.
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 ArcGIS for Desktop Basic festgelegt, da eine ArcGIS for Desktop Advanced-Lizenz für die Ausführung von Erweiterungswerkzeugen nicht erforderlich ist. Das Skript schlägt fehl, wenn die ArcGIS for Desktop Basic-Lizenz nicht ausdrücklich festgelegt und keine ArcGIS for Desktop Advanced-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 Basic (keyword is arcview)
#
import arcview
import arcpy
try:
if arcpy.CheckExtension("3D") == "Available":
arcpy.CheckOutExtension("3D")
else:
# Raise a custom exception
#
raise LicenseError
arcpy.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 arcpy.ExecuteError:
print(arcpy.GetMessages(2))
finally:
# Check in the Erweiterung "ArcGIS 3D Analyst"
#
arcpy.CheckInExtension("3D")
Im Beispiel oben wird die Erweiterung "ArcGIS 3D Analyst" nach einer finally-Klausel aktiviert. Dadurch wird sichergestellt, dass die Erweiterung unabhängig von Fehlern aktiviert ist.
Wenn der Wert Failed, Unavailable oder NotLicensed zurückgegeben wird, gibt dies an, dass die Erweiterung nicht erfolgreich deaktiviert werden konnte.
Im Folgenden sind die Namen der Erweiterungen und die zugehörigen Erweiterungscodes aufgeführt:
Erweiterung | Erweiterungscode |
---|---|
Erweiterung "ArcGIS 3D Analyst" | 3D |
Erweiterung "ArcGIS Data Interoperability for Desktop" | DataInteroperability |
ArcGIS Data Reviewer for Desktop | Datareviewer |
ArcGIS for Aviation: Airports | Flughäfen |
ArcGIS for Aviation: Charting | Aeronautical |
ArcGIS for Maritime: Bathymetry | Bathymetry |
ArcGIS for Maritime: Charting | Nautical |
Erweiterung "ArcGIS Geostatistical Analyst" | GeoStats |
Erweiterung "ArcGIS Network Analyst" | Netzwerk |
Erweiterung "ArcGIS Spatial Analyst" | Räumlich |
Erweiterung "ArcGIS Schematics" | Schematics |
Erweiterung "ArcGIS Tracking Analyst" | Verfolgung |
ArcGIS Workflow Manager for Desktop | JTX |
ArcScan | ArcScan |
Business Analyst | Unternehmen |
Esri Defense Mapping | Militär |
Esri Production Mapping | Foundation |
Esri Roads and Highways | Fernstraßen |
StreetMap | StreetMap |
Produktcodenamen
Produktcodes |
---|
ArcView (entspricht einer ArcGIS for Desktop Basic-Lizenz) |
ArcEditor (entspricht einer ArcGIS for Desktop Standard-Lizenz) |
ArcInfo (entspricht einer ArcGIS for Desktop Advanced-Lizenz) |
Engine |
EngineGeoDB |
ArcServer |
Lizenzierungsfunktionen
Funktion | Erläuterung | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
CheckExtension(Erweiterung) | Überprüft, ob eine Lizenz verfügbar ist, die für einen bestimmten Typ von Erweiterung deaktiviert werden kann.
| ||||||||||||||||
CheckInExtension(Erweiterung) | Gibt die Lizenz zurück, sodass sie andere Anwendungen verwenden können.
| ||||||||||||||||
CheckOutExtension(Erweiterung) | Ruft die Lizenz ab.
| ||||||||||||||||
CheckProduct(Code) | Überprüft, ob die angeforderte Lizenz verfügbar ist.
| ||||||||||||||||
ProductInfo() | Gibt die aktuelle Produktlizenz zurück.
| ||||||||||||||||
SetProduct(Code) | Definiert die Desktop-Lizenz.
|