Всякий раз, когда инструмент выполняется из скрипте, требуется лицензия ArcGIS. Инструментам из дополнительных модулей ArcGIS, таких как модуль ArcGIS Spatial Analyst extension, необходимы дополнительные лицензии на эти модули. Если требуемые лицензии недоступны, инструмент не сработает и возвратит сообщения об ошибке. Например, если установлена лицензия на ArcGIS Desktop Basic и производится попытка выполнить инструмент, для которого требуется лицензия Desktop Standard или Desktop Advanced, инструмент будет завершен с ошибкой.
При использовании лицензий ArcGIS Desktop Basic или Desktop Standard скрипт должен задать в качестве продукта Desktop Basic или Desktop Standard. Аналогично при использовании лицензии Engine или EngineGeoDB скрипт должен задать в качестве продукта Engine или EngineGeoDB. Если лицензия не установлена отдельно, лицензия будет инициирована на основе самого высокого доступного уровня лицензии, при этом вначале производится обращение к инструменту, функции или классу ArcPy.
Каждый инструмент проверяется на наличие соответствующей лицензии. Если на него нет необходимой лицензии, он завершается с ошибкой. Для предотвращения ситуации, когда производится часть работы, а затем следует сбой, можно выполнить проверку в начале скрипта и немедленно завершить работу с ошибкой.
Лицензии Desktop, Engine/Server
Модули продукта импортируются перед импортом arcpy для определения лицензии desktop, используемой скриптом. Функция CheckProduct может использоваться для проверки наличия лицензий desktop, в то время как функция ProductInfo сообщает о текущей лицензии на продукт.
Лицензии на дополнительные модули
Лицензии на дополнительные модули могут быть получены из менеджера лицензий и должны быть возвращены, если они больше не требуются. CheckExtension используется для проверки, доступна ли проверяемая лицензия для конкретного типа модуля, в то время как CheckOutExtension фактически получает лицензию. После получения лицензии с помощью скрипта, вы можете выполнять инструменты модулей. После выполнения скрипта с помощью инструментов определенного дополнительного модуля для возвращения лицензии в менеджер лицензий, чтобы ее могли использовать другие приложения, должна использоваться функция CheckInExtension. Все проверенные лицензии на модули и установленные лицензии на продукты возвращаются в менеджер лицензий по завершении скрипта.
В следующем примере выполняются некоторые инструменты ArcGIS 3D Analyst и лицензия desktop устанавливается на ArcGIS Desktop Basic, поскольку для выполнения инструментов дополнительного модуля лицензия ArcGIS Desktop Advanced не требуется. Если лицензия ArcGIS Desktop Basic явно не задана, и недоступна лицензия ArcGIS Desktop Advanced, скрипт будет завершен с ошибкой, поскольку для выполнения инструментов дополнительных модулей требуется лицензия desktop.
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 ArcGIS 3D Analyst extension extension extension
#
arcpy.CheckInExtension("3D")
В примере выше модуль ArcGIS 3D Analyst extension отмечен под выражением finally, чтобы модуль был всегда отмечен снова, в зависимости от появления исключения.
Возвращаемое значениеFailed, Unavailable или NotLicensed указывает на то, что не удалось успешно проверить дополнительный модуль.
Далее представлены имена дополнительных модулей и имена их кодов.
Дополнительный модуль | Код дополнительного модуля |
---|---|
Дополнительный модуль ArcGIS 3D Analyst extension | 3D |
Дополнительный модуль ArcGIS Data Interoperability extension for Desktop | DataInteroperability |
ArcGIS Data Reviewer Desktop | Datareviewer |
ArcGIS Aviation Airports | Airports |
ArcGIS Aviation Charting | Aeronautical |
ArcGIS Bathymetry | Bathymetry |
ArcGIS Maritime | Nautical |
Дополнительный модуль ArcGIS Geostatistical Analyst extension | GeoStats |
Дополнительный модуль ArcGIS Network Analyst extension | Network |
Дополнительный модуль ArcGIS Spatial Analyst extension | Spatial |
Дополнительный модуль ArcGIS Schematics extension | Schematics |
Дополнительный модуль ArcGIS Tracking Analyst extension | Tracking |
ArcGIS Workflow Manager (Classic) Desktop | JTX |
ArcScan | ArcScan |
ArcGIS Business Analyst | Business |
ArcGIS Defense Mapping | Defense |
ArcGIS Production Mapping | Foundation |
Дополнительный модуль ArcGIS Roads and Highways | Highways |
StreetMap | StreetMap |
Кодовые имена продуктов
Код продукта |
---|
ArcView (эквивалент лицензии ArcGIS Desktop Basic) |
ArcEditor (эквивалент лицензии ArcGIS Desktop Standard) |
ArcInfo (эквивалент лицензии ArcGIS Desktop Advanced) |
Engine |
EngineGeoDB |
ArcServer |
Функции лицензирования
Функция | Объяснение | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
CheckExtension(модуль) | Проверяет, доступна ли для открепления лицензия для конкретного типа модуля.
| ||||||||||||||||
CheckInExtension(модуль) | Возвращает лицензию, чтобы другие приложения могли ее использовать.
| ||||||||||||||||
CheckOutExtension(модуль) | Возвращает лицензию.
| ||||||||||||||||
CheckProduct(код) | Проверяет, доступна ли требуемая лицензия.
| ||||||||||||||||
ProductInfo() | Возвращает текущую лицензию на продукт.
| ||||||||||||||||
SetProduct(код) | Определяет лицензию desktop.
|