0

我想从多个 mxd 创建单个形状文件,这些 mxd 具有多个框架集,其中具有不同的范围。我已经找到/启动了一个 python 脚本来执行此操作(下面的代码),但无法弄清楚如何将捕获的 X&Y Max/Min 写入为此创建的形状文件。请参阅下面的输出 - 生成属性错误。

我还希望它将框架的比例和标题以及 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 个地图文档... Traceback(最近一次调用最后一次):文件“P:\2011\Job_031_TownPlanning_SeriesProduction\Working\extent.py”,第 31 行,在 point_object = mxd2.shp AttributeError: 'str' object has no attribute 'shp '

--- 结束输出

4

1 回答 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,则可以使用一系列整数来为两个列表提供一个公共索引。

于 2011-06-07T16:40:47.113 回答