Доступ к лицензиям и дополнительным модулям в 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(модуль) |
Проверяет, доступна ли для открепления лицензия для конкретного типа модуля.
|
||||||||||||||||
CheckInExtension(модуль) |
Возвращает лицензию, чтобы другие приложения могли ее использовать.
|
||||||||||||||||
CheckOutExtension(модуль) |
Возвращает лицензию.
|
||||||||||||||||
CheckProduct(код) |
Проверяет, доступна ли требуемая лицензия.
|
||||||||||||||||
ProductInfo() |
Возвращает текущую лицензию на продукт.
|
||||||||||||||||
SetProduct(код) |
Определяет лицензию desktop.
|