ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • 帮助
  • Sign Out
ArcGIS Desktop

ArcGIS Online

专为贵组织打造的制图平台

ArcGIS Desktop

全面的专业性 GIS

ArcGIS Enterprise

面向企业的 GIS

ArcGIS Developers

用于构建位置感知应用程序的工具

ArcGIS Solutions

适用于行业的免费模板地图和应用程序

ArcGIS Marketplace

获取适用于组织的应用程序和数据

  • 文档
  • 支持
Esri
  • 登录
user
  • 我的个人资料
  • 登出

ArcMap

  • 主页
  • 入门
  • 地图
  • 分析
  • 管理数据
  • 工具
  • 扩展模块

在 Python 中访问许可和扩展模块

  • Desktop、Engine/Server 许可
  • 扩展模块许可
  • 许可函数

每当在脚本中执行工具时,都会需要 ArcGIS 许可。此外,运行 ArcGIS 扩展模块中的工具,如 ArcGIS Spatial Analyst extension,也需要针对该模块的许可。如果无法获得必要的许可,工具将运行失败并返回错误消息。例如,如果您安装有 ArcGIS Desktop Basic 的许可,并试图运行需要 Desktop Standard 或 Desktop Advanced 的许可,则工具将运行失败。

使用 Desktop Basic 或 Desktop Standard 许可时,脚本应将产品设置为 ArcGIS Desktop Basic 或 Desktop Standard。同样,使用 Engine 或 EngineGeoDB 许可时,脚本应将产品设置为 Engine 或 EngineGeoDB。如果未明确设置许可,将根据首次访问 ArcPy 工具、函数或类时的最高可用许可等级初始化许可。

每种工具都将执行检查以确保具有相应的许可。如果不具有所需的许可,工具将运行失败。为避免脚本在执行到一半时失败,可以在脚本开头执行检查,以尽早发现失败。

提示:

只有在独立脚本中才必须设置产品和扩展模块。如果从 Python 窗口运行工具或者使用脚本工具,产品已在应用程序内进行设置,激活的扩展模块取决于“扩展模块”对话框。

Desktop、Engine/Server 许可

产品模块会在导入 arcpy 前导入,以定义脚本使用的 Desktop 许可。CheckProduct 函数可用于检查 Desktop 许可的可用性,而 ProductInfo 函数能报告当前的产品许可。

旧版本:

在导入 arcpy 前,首先应通过引入合适的产品模块(arcinfo、arceditor、arcview、arcserver、arcenginegeodb 或 arcengine)设置产品级别。SetProduct 函数是传统函数,一旦导入 arcpy 后将无法设置产品属性。

扩展模块许可

可以从许可管理器中获取扩展模块许可,并在不再需要时将其归还。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
    #
    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

深海探测

ArcGIS Maritime

Nautical

ArcGIS Geostatistical Analyst extension

GeoStats

ArcGIS Network Analyst extension

网络

ArcGIS Spatial Analyst extension

空间

ArcGIS Schematics extension

Schematics

ArcGIS Tracking Analyst extension

追踪

ArcGIS Workflow Manager (Classic) Desktop

JTX

ArcScan

ArcScan

ArcGIS Business Analyst

Business

ArcGIS Defense Mapping

国防

ArcGIS Production Mapping

Foundation

ArcGIS Roads and Highways

高速公路

StreetMap

StreetMap

产品编码名称

产品编码

ArcView(等效于 ArcGIS Desktop Basic 许可)

ArcEditor(等效于 ArcGIS Desktop Standard 许可)

ArcInfo(等效于 ArcGIS Desktop Advanced 许可)

引擎

EngineGeoDB

ArcServer

许可函数

函数说明

CheckExtension(extension)

核查是否存在可为特定类型的扩展模块检出的许可。

返回值含义

可用

申请的许可存在,可以设置。

不可用

申请的许可不存在,无法设置。

NotLicensed

申请的许可无效。

失败

申请期间系统错误。

CheckInExtension(extension)

归还许可以便其他应用程序使用。

返回值含义

NotInitialized

尚未设置任何 Desktop 许可。

失败

申请期间系统错误。

CheckedIn

已成功返回许可。

CheckOutExtension(extension)

获取许可。

返回值含义

NotInitialized

尚未设置任何 Desktop 许可。

不可用

申请的许可不存在,无法设置。

CheckedOut

成功设置许可。

CheckProduct(code)

检查申请的许可是否可用。

返回值含义

AlreadyInitialized

已在脚本中设置许可。

可用

申请的许可存在,可以设置。

不可用

申请的许可不存在,无法设置。

NotLicensed

申请的许可无效。

失败

申请期间系统错误。

ProductInfo()

返回当前产品许可。

返回值含义

NotInitialized

尚未设置任何许可。

ArcInfo

已设置 ArcGIS Desktop Advanced 许可。

ArcEditor

已设置 ArcGIS Desktop Standard 许可。

ArcView

已设置 ArcGIS Desktop Basic 许可。

ArcServer

已设置 ArcGIS Server 许可。

EngineGeoDB

已设置 EngineGeoDB 许可。

引擎

已设置 Engine 许可。

SetProduct(code)

定义 Desktop 许可。

返回值含义

CheckedOut

成功设置许可。

AlreadyInitialized

已在脚本中设置许可。

NotLicensed

申请的许可无效。

失败

申请期间系统错误。

ArcGIS Desktop

  • 主页
  • 文档
  • 支持

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

关于 Esri

  • 关于我们
  • 招贤纳士
  • Esri 博客
  • 用户大会
  • 开发者峰会
Esri
分享您的想法。
Copyright © 2021 Esri. | 隐私政策 | 法律声明