使用多个数据帧自动从多个mxds捕获范围

时间:2011-04-29 00:03:39

标签: python attributes gis arcgis shapefile

我想从多个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 

---结束代码

---输出开始

  
    
      

处理14map文件......       Traceback(最近一次调用最后一次):         文件“P:\ 2011 \ Job_031_TownPlanning_SeriesProduction \ Working \ extent.py”,第31行,in           point_object = mxd2.shp       AttributeError:'str'对象没有属性'shp'

    
  

--- END OUTPUT

1 个答案:

答案 0 :(得分:0)

首先将mxd2定义为.shp文件的列表,然后使用它作为mxds_List循环的值来破坏它,这将mxd2转换为一系列字符串值。到分配point_object时,mxd2是一个没有“shp”属性的字符串对象。您可能希望“for mxd in mxds_List”与后面的mapDoc赋值行兼容。我不知道point_object的正确赋值是什么,但是如果它应该是mxd2列表中的文件,那么当你通过mxds_List时,需要一种方法来遍历mxd2。如果每个.mxd文件都有一个.shp,则可以使用一系列整数为两个列表创建一个公共索引。