Доступ к лицензиям и дополнительным модулям в Python

Всякий раз, когда инструмент выполняется в скрипте, требуется лицензия ArcGIS. Инструментам из дополнительных модулей ArcGIS, таких как модуль Дополнительный модуль ArcGIS Spatial Analyst extension, требуются дополнительные лицензии. Если нужные лицензии недоступны, инструмент будет завершен с ошибкой и возвратит сообщения об ошибке. Например, если установлена лицензия на ArcGIS for Desktop Basic extension и производится попытка выполнить инструмент, для которого требуется лицензия Standard extension или Advanced extension, инструмент будет завершен с ошибкой.

При использовании лицензий ArcGIS for Desktop Basic или Standard скрипт должен задать в качестве продукта Basic или Standard. Аналогично, при использовании лицензии Engine или EngineGeoDB скрипт должен задать в качестве продукта Engine или EngineGeoDB. Если лицензия не установлена явно, лицензия будет инициирована на основе самого высокого доступного уровня лицензии, при этом вначале производится обращение к инструменту, функции или классу ArcPy.

Каждый инструмент проверяется на наличие соответствующей лицензии. Если на него нет необходимой лицензии, оно завершается с ошибкой. Для предотвращения ситуации, когда производится часть работы, а затем следует сбой, можно выполнить проверку в начале скрипта и немедленно завершить работу с ошибкой.

ПодсказкаПодсказка:

Настройка продукта и дополнительных модулей необходима только внутри автономных скриптов. При выполнении инструментов из окна Python или при использовании инструментов скриптов продукт уже установлен в приложении, а активные дополнительные модули задаются в диалоговом окне Дополнительные модули (Extensions).

Лицензии Desktop, Engine/Server

Модули продукта импортируются перед импортом arcpy для определения лицензии desktop, используемой скриптом. Функция CheckProduct может использоваться для проверки наличия лицензий desktop, в то время как функция ProductInfo сообщает о текущей лицензии на продукт.

Прежние версииПрежние версии:

Уровень продукта должен устанавливаться при импорте соответствующего модуля продукта (arcinfo, arceditor, arcview, arcserver, arcenginegeodb или arcengine) до импорта arcpy. Функция SetProduct является устаревшей, и не может устанавливать продукт после импорта arcpy.

Лицензии на дополнительные модули

Лицензии на дополнительные модули могут быть получены из менеджера лицензий и должны быть возвращены, если они больше не требуются. CheckExtension используется для проверки, доступна ли проверяемая лицензия для конкретного типа модуля, в то время как CheckOutExtension фактически получает лицензию. После получения лицензии скриптом могут выполняться инструменты модулей. После выполнения скрипта с помощью инструментов определенного дополнительного модуля для возвращения лицензии в менеджер лицензий, чтобы ее могли использовать другие приложения, должна использоваться функция CheckInExtension. Все проверенные лицензии на модули и установленные лицензии на продукты возвращаются в менеджер лицензий по завершении скрипта.

В следующем примере выполняются некоторые инструменты ArcGIS 3D Analyst и лицензия desktop устанавливается на ArcGIS for Desktop Basic, поскольку для выполнения инструментов дополнительного модуля лицензия ArcGIS for Desktop Advanced не требуется. Если лицензия ArcGIS for Desktop Basic явно не задана, и недоступна лицензия ArcGIS for Desktop Advanced, скрипт будет завершен с ошибкой, поскольку для выполнения инструментов дополнительных модулей требуется лицензия desktop.

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 extension
    #
    arcpy.CheckInExtension("3D")

В приведенном выше примере дополнительный модуль Дополнительный модуль ArcGIS 3D Analyst extension проверяется в выражении finally, что обеспечивает постоянное включение дополнительного модуля независимо от того, произошло исключение или нет.

Возвращаемое значение Failed, Unavailable или NotLicensed указывает на то, что не удалось успешно проверить дополнительный модуль.

Далее представлены имена дополнительных модулей и имена их кодов.

Дополнительный модуль

Код дополнительного модуля

Дополнительный модуль Дополнительный модуль ArcGIS 3D Analyst extension

3D

Дополнительный модуль Дополнительный модуль ArcGIS Schematics extension

Schematics

ArcScan

ArcScan

Business Analyst

Business

Дополнительный модуль Дополнительный модуль ArcGIS Data Interoperability for Desktop extension

DataInteroperability

Дополнительный модуль Дополнительный модуль ArcGIS Geostatistical Analyst extension

GeoStats

Дополнительный модуль Дополнительный модуль ArcGIS Workflow Manager for Desktop extension

JTX

Дополнительный модуль Дополнительный модуль ArcGIS Network Analyst extension

Network

Esri Aeronautical Solution

Aeronautical

Esri Defense Mapping

Defense

Esri Production Mapping

Foundation

Дополнительный модуль Дополнительный модуль ArcGIS Data Reviewer for Desktop extension

Datareviewer

Esri Nautical Solution

Nautical

Esri Bathymetry

Nauticalb

Дополнительный модуль Дополнительный модуль ArcGIS Spatial Analyst extension

Spatial

StreetMap

StreetMap

Дополнительный модуль Дополнительный модуль ArcGIS Tracking Analyst extension

Tracking

Кодовые имена продуктов

Код продукта

ArcView (эквивалент лицензии ArcGIS for Desktop Basic )

ArcEditor (эквивалент лицензии ArcGIS for Desktop Standard )

ArcInfo (эквивалент лицензии ArcGIS for Desktop Advanced )

Engine

EngineGeoDB

ArcServer

Функции лицензирования

Функция

Описание

CheckExtension(модуль)

Проверяет, доступна ли для открепления лицензия для конкретного типа модуля.

Возвращаемое значение

Значение

Available

Требуемая лицензия доступна для установки.

Unavailable

Требуемая лицензия недоступна для установки.

NotLicensed

Требуемая лицензия недопустима.

Failed

Во время запроса произошел системный сбой.

CheckInExtension(модуль)

Возвращает лицензию, чтобы другие приложения могли ее использовать.

Возвращаемое значение

Значение

NotInitialized

Лицензия desktop не установлена.

Failed

Во время запроса произошел системный сбой.

CheckedIn

Лицензия возвращена успешно.

CheckOutExtension(модуль)

Возвращает лицензию.

Возвращаемое значение

Значение

NotInitialized

Лицензия desktop не установлена.

Unavailable

Требуемая лицензия недоступна для установки.

CheckedOut

Лицензия установлена успешно.

CheckProduct(код)

Проверяет, доступна ли требуемая лицензия.

Возвращаемое значение

Значение

AlreadyInitialized

Лицензия уже установлена в скрипте.

Available

Требуемая лицензия доступна для установки.

Unavailable

Требуемая лицензия недоступна для установки.

NotLicensed

Требуемая лицензия недопустима.

Failed

Во время запроса произошел системный сбой.

ProductInfo()

Возвращает текущую лицензию на продукт.

Возвращаемое значение

Значение

NotInitialized

Лицензия не установлена.

ArcInfo

Установлена лицензия ArcGIS for Desktop Advanced.

ArcEditor

Установлена лицензия ArcGIS for Desktop Standard.

ArcView

Установлена лицензия ArcGIS for Desktop Basic.

ArcServer

Установлена лицензия ArcGIS for Server.

EngineGeoDB

Лицензия EngineGeoDB установлена.

Engine

Лицензия Engine установлена.

SetProduct(код)

Определяет лицензию desktop.

Возвращаемое значение

Значение

CheckedOut

Лицензия установлена успешно.

AlreadyInitialized

Лицензия уже установлена в скрипте.

NotLicensed

Требуемая лицензия недопустима.

Failed

Во время запроса произошел системный сбой.

9/11/2013