自动捕获多个mxd文件中多个数据框的范围

0 投票
1 回答
1116 浏览
提问于 2025-04-16 16:37

我想把多个包含不同范围的框架集的mxd文件合成一个形状文件。我找到了一段Python脚本来实现这个功能(代码如下),但是我不知道怎么把捕获到的X和Y的最大值和最小值写入到生成的形状文件中。下面是输出结果 - 出现了一个属性错误。

我还希望能把框架的比例和标题,以及mxd文件的文件名写入到这个范围的形状文件中。

如果你能帮我完成这个脚本,我会非常感激。

谢谢,

乔治

--- 代码开始

import arcpy, os, glob

path = 'P:\\2011\\Job_031_TownPlanning_SeriesProduction\\Working\\mxd\\1'
os.chdir(path)

mxds_List = glob.glob('*.mxd')
mxd2 = glob.glob('*.shp')
count_Mapdocs = len(mxds_List)
print 'Processing ' + str(count_Mapdocs) + 'map documents...'

#Create Polygon Shapefile
arcpy.CreateFeatureclass_management(path, 'extents.shp', "POLYGON")
arcpy.CreateFeatureclass_management(path, 'mxds.shp', "POLYGON")

#Start Loop
for mxd2 in mxds_List:
    mapDoc = arcpy.mapping.MapDocument(mxd)
    dataframe = arcpy.mapping.ListDataFrames(mapDoc,'*')[0]
    frameExtent = dataframe.extent

    #Frame Scale
    frameScale = dataframe.scale

    #Frame Extent
    ExtentXMax = frameExtent.XMax
    ExtentXMin  = frameExtent.XMin
    ExtentYXax  = frameExtent.YMax 
    ExtentYMin  = frameExtent.YMin

    point_object = mxd2.shp
    #Write in table scale

    #Write in table 

--- 代码结束

--- 输出开始

正在处理14个地图文档... 回溯(最近的调用在最后): 文件 "P:\2011\Job_031_TownPlanning_SeriesProduction\Working\extent.py",第31行,在 point_object = mxd2.shp 属性错误:'str'对象没有'shp'属性

--- 输出结束

1 个回答

0

首先,你把 mxd2 定义成一个 .shp 文件的列表,然后你用它来作为 mxds_List 循环的值,这样就把 mxd2 变成了一系列字符串。在 point_object 被赋值的时候,mxd2 已经变成了一个字符串对象,而这个字符串对象并没有 "shp" 这个属性。你可能希望 "for mxd in mxds_List" 能和后面的 mapDoc 赋值行兼容。我不知道 point_object 的正确赋值是什么,但如果它应该是来自 mxd2 列表的一个文件,你需要一种方法来在遍历 mxds_List 的同时也遍历 mxd2。如果每个 .mxd 文件都有一个对应的 .shp 文件,你可以使用一系列整数来为两个列表提供一个共同的索引。

撰写回答