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