Describe

概要

Describe 関数は、データ タイプ、フィールド、インデックスなどの複数のプロパティを含む Describe オブジェクトを返します。 このプロパティは動的です。つまり、Describe 対象のデータ タイプに応じて、別々の Describe プロパティが使用可能になります。

Describe プロパティは、一連のプロパティ グループに編成されています。 個々のデータセットは、これらのうち少なくとも 1 つのグループのプロパティを取得します。 たとえば、ジオデータベース フィーチャクラスの Describe を実行する場合は、GDB FeatureClassFeatureClassTable、および Dataset の各プロパティ グループからのプロパティにアクセスできます。 データ タイプに関係なく、すべてのデータは常に汎用の Describe オブジェクト プロパティを取得します。

ディスカッション

多くのデータ タイプは、他のプロパティ グループのプロパティを含んでいます。 たとえば、ジオデータベース フィーチャクラスの Describe を実行する場合は、GDB FeatureClassFeatureClassTable、および Dataset の各プロパティ グループのプロパティにアクセスできます。

arcpy.da.Describe をご参照ください。これは、同じ情報をディクショナリとして返します。

メモ:

Describe が返すオブジェクトに、ドキュメント化されたプロパティのすべてが含まれていない場合があります。 たとえば、マップ内のレイヤーの Describe オブジェクトには、layer プロパティ セットが含まれません。 そのプロパティは、.lyr ファイルを説明する場合のみ存在します。

Describe オブジェクトに存在しないプロパティにアクセスしようとすると、エラーが返されるか、空の値 (None、0 または -1、空の文字列) が返されます。 特定のプロパティがわからない場合は、Python の hasattr() 関数を使用して確認できます。

構文

Describe (value, {datatype})
パラメーター説明データ タイプ
value

The specified data element or geoprocessing object to describe.

String
datatype

The type of data. This is only necessary when naming conflicts exists, 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 you want to describe.

(デフォルト値は次のとおりです 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(";"))))