Acceder a licencias y extensiones en Python

Cada vez que se ejecute una herramienta en una secuencia de comandos, se necesita una licencia de ArcGIS. Las herramientas de las extensiones de ArcGIS, como Extensión ArcGIS Spatial Analyst, requieren una licencia adicional para esa extensión. Si las licencias necesarias no están disponibles, la herramienta falla y arroja mensajes de error. Por ejemplo, si instala con una licencia de ArcGIS for Desktop Basic e intenta ejecutar una herramienta que requiere una licencia de Standard o Advanced, la herramienta fallará.

Cuando se usa una licencia de ArcGIS for Desktop Basic o Standard, una secuencia de comandos debe establecer el producto en Basic o Standard. De la misma manera, una secuencia de comandos deberá establecer el producto en Engine o EngineGeoDB al utilizar una licencia de Engine o de EngineGeoDB. Si no se establece una licencia de manera explícita, la primera vez que se acceda a una herramienta, función o clase ArcPy se inicializará la licencia según el nivel de licencia más alto disponible.

Cada herramienta realiza verificaciones para asegurarse de que tiene la licencia apropiada. Si no tiene las licencias requeridas, falla. Para evitar la situación de ejecutar una parte y que falle, puede realizar una verificación en la parte superior de la secuencia de comandos y que falle inmediatamente.

SugerenciaSugerencia:

Solamente es necesario establecer el producto y las extensiones dentro de las secuencias de comandos independientes. Si está ejecutando las herramientas desde la ventana de Python o utilizando herramientas de secuencia de comandos, el producto ya está establecido dentro de la aplicación y las extensiones activas están basadas en el cuadro de diálogo Extensiones.

Licencias Desktop, Engine/Server

Los módulos del producto se importan antes de importar arcpy para definir la licencia de escritorio utilizada por una secuencia de comandos. La función CheckProduct se puede utilizar para verificar la disponibilidad de las licencias de escritorio, mientras que la función ProductInfo informa cuál es la licencia actual del producto.

HerenciaHerencia:

El nivel del producto debe establecerse al importar el módulo de producto apropiado (arcinfo, arceditor, arcview, arcserver, arcenginegeodb, arcengine) antes de importar arcpy. La función SetProduct es una función heredada y no puede establecer el producto una vez que se haya importando arcpy.

Licencias de extensión

Las licencias para las extensiones se pueden recuperar desde un administrador de licencias y devolver una vez que ya no se necesitan. CheckExtension se utiliza para ver si una licencia está disponible para que se realice el check-out para un tipo de extensión específico, mientras que CheckOutExtension realmente recupera la licencia. Una vez que la secuencia de comandos recuperó la licencia de extensión, se pueden ejecutar las herramientas de extensión. Una vez que se realiza una secuencia de comandos con las herramientas de una extensión en particular, debe utilizarse la función CheckInExtension para devolver la licencia al administrador de licencias de modo que otras aplicaciones puedan utilizarla. Todas las licencias de extensión a las que se realizó el check-out y las licencias de productos establecidas se devuelven al administrador de licencias cuando se completa una secuencia de comandos.

En el siguiente ejemplo se ejecutan algunas herramientas de ArcGIS 3D Analyst y se establece la licencia de producto de escritorio de ArcGIS for Desktop Basic, ya que no se requiere una licencia de ArcGIS for Desktop Advanced para ejecutar las herramientas desde una extensión. La secuencia de comandos fallará si la licencia de ArcGIS for Desktop Basic no se establece de manera explícita y no hay una licencia de ArcGIS for Desktop Advanced disponible, ya que se requiere una licencia de escritorio para ejecutar las herramientas de extensión.

class LicenseError(Exception):
    pass

# Set desktop license used to ArcGIS for Desktop Basic
#
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 ArcGIS 3D Analyst extension
    #
    arcpy.CheckInExtension("3D")

En el ejemplo anterior, se realiza el check-in de ArcGIS 3D Analyst extension en una cláusula finally, lo que asegura que siempre se vuelva a realizar el check-in de la extensión, independientemente de que se haya producido o no una excepción.

Un valor devuelto de Failed, Unavailable o NotLicensed indica que no se pudo realizar correctamente el check-out de la extensión.

A continuación se presentan los nombres de las extensiones y los nombres de sus códigos de extensión:

Extensión

Código de la extensión

ArcGIS 3D Analyst extension

3D

ArcGIS Data Interoperability extension for Desktop

DataInteroperability

ArcGIS Data Reviewer for Desktop

Datareviewer

ArcGIS para aviación: aeropuertos

Aeropuertos

ArcGIS for Aviation: Cartografía

Aeronautical

ArcGIS for Maritime: Batimetría

De batimetría

ArcGIS for Maritime: Cartografía

Náuticas

Extensión ArcGIS Geostatistical Analyst

GeoStats

Extensión ArcGIS Network Analyst

Red

Extensión ArcGIS Spatial Analyst

Espacial

Extensión ArcGIS Schematics

Schematics

Extensión ArcGIS Tracking Analyst

Tracking

ArcGIS Workflow Manager for Desktop

JTX

ArcScan

ArcScan

Business Analyst

Negocio

Esri Defense Mapping

Defensa

Esri Production Mapping

Foundation

Esri Roads and Highways

Carreteras

StreetMap

StreetMap

Nombres de código de producto

Códigos del producto

ArcView (equivalente a la licencia de ArcGIS for Desktop Basic)

ArcEditor (equivalente a la licencia de ArcGIS for Desktop Standard)

ArcInfo (equivalente a la licencia de ArcGIS for Desktop Advanced)

Motor

EngineGeoDB

ArcServer

Funciones de licencias

Función

Explicación

CheckExtension(extensión)

Verifica si una licencia está disponible para que se realice el check-out para un tipo de extensión específico.

Valor de retorno

Significado

Available

La licencia solicitada está disponible para ser establecida.

Unavailable

La licencia solicitada no está disponible para ser establecida.

NotLicensed

La licencia solicitada no es válida.

Failed

Ocurrió un error en el sistema durante la solicitud.

CheckInExtension(extensión)

Devuelve la licencia de modo que otras aplicaciones puedan utilizarla.

Valor de retorno

Significado

NotInitialized

No se estableció una licencia de escritorio.

Failed

Ocurrió un error en el sistema durante la solicitud.

CheckedIn

La licencia se devolvió correctamente.

CheckOutExtension(extensión)

Recupera la licencia.

Valor de retorno

Significado

NotInitialized

No se estableció una licencia de escritorio.

Unavailable

La licencia solicitada no está disponible para ser establecida.

CheckedOut

La licencia se estableció correctamente.

CheckProduct(código)

Verifica si la licencia solicitada está disponible.

Valor de retorno

Significado

AlreadyInitialized

La licencia ya se estableció en la secuencia de comandos.

Available

La licencia solicitada está disponible para ser establecida.

Unavailable

La licencia solicitada no está disponible para ser establecida.

NotLicensed

La licencia solicitada no es válida.

Failed

Ocurrió un error en el sistema durante la solicitud.

ProductInfo()

Devuelve la licencia de producto actual.

Valor de retorno

Significado

NotInitialized

No se estableció ninguna licencia.

ArcInfo

Se ha establecido una licencia de ArcGIS for Desktop Advanced.

ArcEditor

Se ha establecido una licencia de ArcGIS for Desktop Standard.

ArcView

Se ha establecido una licencia de ArcGIS for Desktop Basic.

ArcServer

Se ha establecido una licencia de ArcGIS for Server.

EngineGeoDB

Se estableció una licencia de EngineGeoDB.

Motor

Se estableció una licencia de Engine.

SetProduct(código)

Define la licencia de escritorio.

Valor de retorno

Significado

CheckedOut

La licencia se estableció correctamente.

AlreadyInitialized

La licencia ya se estableció en la secuencia de comandos.

NotLicensed

La licencia solicitada no es válida.

Failed

Ocurrió un error en el sistema durante la solicitud.

5/9/2014