版权声明:转载请注明作者(独孤尚良dugushangliang)出处: https://blog.youkuaiyun.com/dugushangliang/article/details/90695027
搜不到相关内容,踏破铁鞋,一度心灰意冷,打算手工一个个处理,在丞相的鼓励下,幸得柳暗花明,此注。
答案的关键先直接告诉你:
arcpy.Describe(item).aliasName
详情请看下文:
如下图所示是一个shp文件的属性,这个窗口是在Catalog里右键点击属性所得:
这里虽然显示有别名,但这里的名称和别名不能修改。我怀疑:shp没有别名,所谓的别名就是这个shp的名称。
若不知道如何打开,请参阅下图:
下面我们开始探索。
把这个shp拖到ArcMAP窗口中,右键打开属性,这个属性是内容列表中这个图层的属性,这个图层引用shp的数据,所以这个图层的属性和shp文件的属性只是相关。
经查询,没发现有别名。
换个对象,找gdb里的要素类试试看。
这个名称还是不能改动,但别名可以修改。刚创建的要素类的别名和名称一样,本例所示的别名原来和名称一样都是aa,我把别名改成了bb,关机后再开机,打开再看还是bb,说明这个要素类的别名被成功修改了。
这里我们发现:在属性里,我们不能修改要素类或shp的名称,如果需要修改,可以如下图所示直接修改,并不能在要素类属性中修改,即名称是只读的。要素类属性中可以修改别名,shp属性的别名其实就是名称,不可修改。
我们再看看gdb的要素数据集中的要素类怎么样。
经查验,只要是在gdb里的要素类,无论是否在要素数据集中,都是一样的——可以修改别名。
既然可以修改别名,肯定也可以通过arcpy读取别名,那么怎么读取呢?
本文先在此做个声明:由于ArcGIS版本不同,可能导致有些语法操作,在这个版本可以正常运行但在那个版本就会报错。
都有哪些属性呢?看官方文档:http://desktop.arcgis.com/zh-cn/arcmap/10.3/analyze/arcpy-functions/describe.htm。其他版本也多参阅相应版本的文档。对于10.1/10.2/10.3等,大部分是相同的,但个别地方有差异,请各位注意即可。
好吧,参阅这个官方文档和代码,没找到。
再看要素类属性http://desktop.arcgis.com/zh-cn/arcmap/10.3/analyze/arcpy-functions/featureclass-properties.htm。
属性 | 说明 | 数据类型 |
featureType (只读) | 要素类的要素类型。
| String |
hasM (只读) | 指示几何是否启用 m 值。 | Boolean |
hasZ (只读) | 指示几何是否启用 z 值。 | Boolean |
hasSpatialIndex (只读) | 指示要素类是否具有空间索引。 | Boolean |
shapeFieldName (只读) | Shape 字段的名称。 | String |
shapeType (只读) | 几何形状类型。
| String |
一个个都试了试,也没。
猜:alternateName、alias、aName等,都是——未果。
再看文档:GDB要素类http://desktop.arcgis.com/zh-cn/arcmap/10.3/analyze/arcpy-functions/gdb-featureclass-properties.htm。
属性 | 说明 | 数据类型 |
areaFieldName (只读) | The name of the geometry area field. | String |
lengthFieldName (只读) | The name of the geometry length field. | String |
representations (只读) | A list of Describe objects for the representations associated with the feature class. | Describe |
一个个试了试,也不行,真要崩溃了。
这就像找茬,找线索,不能放过任何一个细节……
注意这个:
奇怪吧?我也奇怪,为什么是表属性里的。但经过验证,通过这个,我们可以得到别名。
10.1的也是一样的:
我们把gdb里的aa和dd要素类拖到map中,可以看到:
由此可得,图层默认使用要素类的别名。
真是不容易啊……路漫漫其修远兮……吾将上下而求索……
还有一个问题:如果没有设置别名,别名是不是就是名称?经验证,输出一个新建的要素类的别名,是空的,执行下面这句:
print arcpy.Describe(item).aliasName==''
结果是True,所以如果需要小心这个坑——要素类属性中看到有别名,如果别名和名称一样,很可能别名就是空字符串。
独孤尚良dugushangliang——著