操作方法
GIS 管理员和管理人员有时需要以自动方式确定 .mxd 文件中图层的服务器和数据库属性。 提供的说明将介绍如何使用 Python 脚本来执行此操作。
以下 Python 脚本演示了如何为 .mxd 文件中的图层和表提取数据库和服务器属性。
mxd_source = r"C:\DATA\test_name.mxd"
import arcpy, os, string
def FindConnPropTbl(mxd_source):
mxd = arcpy.mapping.MapDocument(mxd_source)
for df in arcpy.mapping.ListDataFrames(mxd):
tableList = arcpy.mapping.ListTableViews(mxd, "", df)
for table in tableList:
dsource = str(table.dataSource)
fnd = dsource.find('.sde')
sub_str = dsource[:fnd +4]
desc = arcpy.Describe(sub_str)
cp = desc.connectionProperties
try:
print "Table:{0},Server: {1}".format(table.name,cp.server)
except:
print "No server listed for table: {0}".format(table.name)
try:
print "Table:{0},Database: {1}".format(table.name,cp.database)
except:
print "No database listed for table: {0}".format(table.name)
del table,dsource,fnd,cp,sub_str,desc
del mxd,df,tableList
def FindConnPropFc(mxd_source):
mxd = arcpy.mapping.MapDocument(mxd_source)
for df in arcpy.mapping.ListDataFrames(mxd):
layerList = arcpy.mapping.ListLayers(mxd, "", df)
for layer in layerList:
dsource = str(layer.dataSource)
fnd = dsource.find('.sde')
sub_str = dsource[:fnd +4]
desc = arcpy.Describe(sub_str)
cp = desc.connectionProperties
try:
print "Layer:{0},Server: {1}".format(layer.name,cp.server)
except:
print "No server listed for layer: {0}".format(layer.name)
try:
print "Layer:{0},Database: {1}".format(layer.name,cp.database)
except:
print "No database listed for layer {0}".format(layer.name)
del layer,dsource,fnd,cp,sub_str,desc
del mxd,df,layerList
if __name__=="__main__":
mxd_source = r"C:\DATA\test_name.mxd"
FindConnPropTbl(mxd_source)
FindConnPropFc(mxd_source)
文章 ID: 000011781
获取来自 ArcGIS 专家的帮助
立即开始聊天