Automating capture of Extent from multiple mxds with multiple dataframes
-
26-10-2019 - |
Question
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
Solution
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.