#scriptPath = sys.path[0] scriptPath = r'P:\2011\Job_031_TownPlanning_SeriesProduction\Working\mxd\1'
Nicholas,
Thanks for sending the code. When I try it, I get the following even though there are ver 10 MXD's in the directory. Please see the attachment (2.rar) to my last post. Following change was made to the code...#scriptPath = sys.path[0] scriptPath = r'P:\2011\Job_031_TownPlanning_SeriesProduction\Working\mxd\1'
>>>
Executing: mapindex
Start Time: Tue May 10 11:59:56 2011
Running script mapindex...
Script path is P:\2011\Job_031_TownPlanning_SeriesProduction\Working\mxd\1
No ArcMap Documents were found in this folder. Please try another folder.
Completed script mapindex...
Failed to execute (mapindex).
Failed at Tue May 10 11:59:56 2011 (Elapsed Time: 0.00 seconds)
>>>
best,
env.workspace = path + 'extents.gdb'
env.workspace = path + '\extents.gdb'
for mxd in mxdList: mxd = mapping.MapDocument(mxd) print mxd # Printing status for error checking dataframe = mapping.ListDataFrames(mxd2, "*")[0]
for mxd in mxdList: mxd2 = mapping.MapDocument(mxd) print mxd # Printing status for error checking dataframe = mapping.ListDataFrames(mxd2, "*")[0]
import arcpy, glob, os from arcpy import env from arcpy import mapping env.overwriteOutput = True path = os.getcwd() # Script in same directory as files being processed mxdList = glob.glob(path + "\*.mxd") env.workspace = path + '\extents.gdb' # Directory as files being processed print env.workspace x = 0 y = 1 z = 1 while y < 7: for mxd in mxdList: mxd2 = mapping.MapDocument(mxd) try: dataframe = mapping.ListDataFrames(mxd2, "*")frameExtent = dataframe.extent XMAX = frameExtent.XMax XMIN = frameExtent.XMin YMAX = frameExtent.YMax YMIN = frameExtent.YMin pnt1 = arcpy.Point(XMIN, YMIN) pnt2 = arcpy.Point(XMIN, YMAX) pnt3 = arcpy.Point(XMAX, YMAX) pnt4 = arcpy.Point(XMAX, YMIN) array = arcpy.Array() array.add(pnt1) array.add(pnt2) array.add(pnt3) array.add(pnt4) array.add(pnt1) polygon = arcpy.Polygon(array) arcpy.CopyFeatures_management(polygon, "Polygon_Extent" + "_" + str(z)) z = z + 1 except IndexError: pass x = x + 1 y = y + 1 list = [] lstFCs = arcpy.ListFeatureClasses("Polygon_Extent*") for fc in lstFCs: list.append(fc) arcpy.Merge_management(list, "Extent") for item in list: arcpy.Delete_management(item)
polygon = arcpy.Polygon(array) #Create Polygon Shapefile arcpy.CreateFeatureclass_management(path, "Polygon_Extent" + "_" + str(z), "POLYGON") # arcpy.CopyFeatures_management(polygon, "Polygon_Extent" + "_" + str(z)) z = z + 1
for el in arcpy.mapping.ListLayoutElements(mxd2, "DATAFRAME_ELEMENT"): ExtentIDStore = str(el.name) print ExtentIDStore #used to see which item to add to the shape file print ExtentIDStore# should show the full entry at storage x but instead shows the character at x
Jake,
1. while y < 7: === this loop creates a shp file with the extents of each dataframe? I guess I can use the same loop to also add in the scale and name of the dataframe into the shp file?
2. for fc in lstFCs: ==== take all the "polygon_extent_*.shp" files and merge them into extents.shp?
3. for item in list: ==== delete the "polygon_extent_*.shp"?
>>>
Reading mxd files from P:\2011\Job_031_TownPlanning_SeriesProduction\Working\mxd\1
Working in P:\2011\Job_031_TownPlanning_SeriesProduction\Working\mxd\1\temp_extents
Processing P:\2011\Job_031_TownPlanning_SeriesProduction\Working\mxd\1\TownPlanning_Bushfire_Overlay_Ver2-Herberton.mxd
Created...Polygon_Extent_1
Irvinebank
I
Watsonville
W
Overview
O
Herberton
H
Traceback (most recent call last):
File "P:\2011\Job_031_TownPlanning_SeriesProduction\Working\mxd\1\extent_creation4.py", line 78, in <module>
rows = arcpy.InsertCursor(FileRef)
File "C:\Program Files\ArcGIS\Desktop10.0\arcpy\arcpy\__init__.py", line 837, in InsertCursor
return gp.insertCursor(*args)
File "C:\Program Files\ArcGIS\Desktop10.0\arcpy\arcpy\geoprocessing\_base.py", line 367, in insertCursor
self._gp.InsertCursor(*gp_fixargs(args)))
RuntimeError: ERROR 999999: Error executing function.
>>>
I have added to the code to capture the extent ID (it can fill in filename as 'mxd' and not sure how to capture scale) but it is giving errors in identifying the x'th entry in to the list -it prints just the x'th character. Also it's not clear where to put a print statment to give feedback that the program is working on the 2,3,4th etc mxd file.
for el in arcpy.mapping.ListLayoutElements(mxd2, "DATAFRAME_ELEMENT"): ExtentIDStore = str(el.name) list2.append(ExtentIDStore)
print list2[0]
I also notice that it loops first through the mxd's creating extent 1, then loops through creating extent 2 etc. I was initially thinking that it opened the first mxd, cycled through and created all the extent polygons and then opened the next mxd and created the extents.
Also it's not clear where to put a print statement to give feedback that the program is working on the 2,3,4th etc mxd file.
for mxd in mxdList: mxd2 = mapping.MapDocument(mxd) print mxd
Then you can use print statement for the list:print list2[0]
Traceback (most recent call last):
File "P:\2011\Job_031_TownPlanning_SeriesProduction\Working\mxd\1\Extent_Generation.py", line 58, in <module>
list2.append = ExtentIDStore
AttributeError: 'str' object has no attribute 'append'
File "P:\2011\Job_031_TownPlanning_SeriesProduction\Working\mxd\1\Extent_Generation.py", line 81, in <module>
rows = arcpy.InsertCursor(FileRef)
NameError: name 'FileRef' is not defined
import sys, arcpy dataDir = "C:/Temp" arcpy.overwriteOutput = True arcpy.env.workspace = dataDir #Get extent fc = "input.shp" desc = arcpy.Describe(fc) extent = desc.Extent #Create polygon pts = [ [extent.XMin, extent.YMin], [extent.XMin, extent.YMax], [extent.XMax, extent.YMax], [extent.XMax, extent.YMin] ] point = arcpy.Point() array = arcpy.Array() for pt in pts: point.x = pt[0] point.y = pt[1] array.add(point) array.add(array.getObject(0)) SR = desc.spatialReference poly = arcpy.Polygon(array,SR) #Copy features arcpy.CopyFeatures_management(poly, "Polygon_Extent")