문제

I want to create a single shape file from multiple mxd's that have multiple frame sets with different extents in them. I have found/started a python script to do this (code below) but can't figure out how to write the captured X&Y Max/Min into the shape file that is created for this. See output below - an Attribute Error is generated.

I also want it to write the scale and title of the frame as well as the file name of the mxd in to the extents shape file.

Would appreciate your help in completing this script.

Thanks,

George

--- CODE START

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 

--- END CODE

--- OUTPUT START

Processing 14map documents... Traceback (most recent call last): File "P:\2011\Job_031_TownPlanning_SeriesProduction\Working\extent.py", line 31, in point_object = mxd2.shp AttributeError: 'str' object has no attribute 'shp'

--- END OUTPUT

도움이 되었습니까?

해결책

First you define mxd2 as a list of .shp files, then you clobber it by using it as the value for the mxds_List loop, which turns mxd2 into a series of string values. By the time point_object is assigned, mxd2 is a string object which does not have an "shp" attribute. You probably want "for mxd in mxds_List" to be compatible with the mapDoc assignment line that follows. I don't know what the correct assignment for point_object is, but if it's supposed to be a file form the mxd2 list, you need a way to iterate through mxd2 as you go through mxds_List. If there is one .shp for each .mxd file, you could use a range of integers to have a common index for both lists.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top