项目场景:
arcgispro下使用arcpy读取对象(如:layer图层)的源文件地址。
问题描述
使用Layer对象的dataSource属性,属性内容不一致,有的文件源文件带后缀(.shp),有的不带。
#E:\0-任务\20231012-删除字段\commondata\10-1治理工程
#E:\0-任务\20231012-删除字段\commondata\10-1治理工程.shp
解决方案:
使用 Describe
对象,并利用Describe
对象的catalogPath
属性读取数据的绝对地址。注意:部分Describe对象(如图层组)可能没有catalogPath属性,因此需要使用hasattr()函数来确认是否包含属性
layer_des=arcpy.Describe(layer)
if hasattr(layer_des,catalogPath):
print(layer_des.catalogPath)
#E:\0-任务\20231012-删除字段\commondata\10-1治理工程.shp
参考
Describe 对象属性:https://pro.arcgis.com/zh-cn/pro-app/latest/arcpy/functions/describe-object-properties.htm