Describe

摘要

可描述数据元素并返回包含多个属性(例如数据类型、字段、索引等)的 Describe 对象。 该对象的属性是动态的,这意味着根据所描述的数据类型,会有不同的描述属性可供使用。

Describe 属性被组织成一系列属性组。 任何特定数据集都将获取其中至少一个组的属性。 例如,如果要描述一个地理数据库要素类,您可访问地理数据库要素类要素类数据集属性组中的属性。 所有数据,不管是哪种数据类型,总会获取通用 Describe 对象属性。

说明

许多数据类型包括其他属性组中的属性。 例如,如果要描述一个地理数据库要素类,您可访问地理数据库要素类要素类数据集属性组中的属性。

请注意,arcpy.da.Describe 将返回相同的信息(但将作为字典)。

注:

在某些情况下,Describe 返回的对象并不包含为其记录的所有属性。 例如,地图中图层的 Describe 对象不会包含 layer 属性集。 只有在描述 .lyr 文件时,该属性才会存在。

如果试图访问 Describe 对象不具有的属性,会返回错误或空值(None、0 或 -1 或空字符串)。 如果您对特定属性不是很确定,可以使用 Python 的 hasattr() 函数进行检查。

语法

Describe (value, {data_type})
参数说明数据类型
value

The specified data element or geoprocessing object to describe.

String
data_type

The type of data. This is only necessary when naming conflicts exist, for example, if a geodatabase contains a feature dataset (FeatureDataset) and a feature class (FeatureClass) with the same name. In this case, the data type is used to clarify which dataset will be described.

(默认值为 None)

String
返回值
数据类型说明
Describe

返回的对象属性中包含被描述对象的详细信息。 某些返回的对象属性会包含文本值或对象。

代码示例

Describe 属性示例(独立脚本)

以下独立脚本显示了图层和脚本参数设置的图层中 describe 对象的属性。 可针对地图中的图层文件或图层设置该参数。

import arcpy

# Get the layer as a parameter and describe it.
#
# The layer could be a layer in ArcMap (like "some_layer")
# Or, it could be a .lyr file (like "C:/data/some.lyr")
#
layerString = arcpy.GetParameterAsText(0)
desc = arcpy.Describe(layerString)

# Print selected layer and describe object properties
# 
print("Name: {}".format(desc.name))
if hasattr(desc, "layer"):
    print("Layer name: {}".format(desc.layer.name))
    print("Layer data source: {}".format(desc.layer.catalogPath))
    print(".lyr file: {}".format(desc.catalogPath))
else:
    print("Layer name: {}".format(desc.name))
    print("Layer data source: {}".format(desc.catalogPath))

if desc.FIDSet != '':
    print("Number of selected features: {}".format(len(desc.FIDSet.split(";"))))