Here is code that will sift though a directory (and all sub directories) and create a convex hull for all GIS data. The convex hulls are written to a new feature class. You can then add the feature class to an ArcMap project and see all the data that covers your area of interest. The output feature class contains an attribute listing the path to the data.
try:
print "Create Convex Hulls for All Vector Data..."
print "Created by Gerry Gabrisch (geraldg@lummi-nsn.gov)"
print "Copy?Right! Lummi Indian Business Council 10-1-2013"
import arcpy, math, os, sys, traceback, winsound
winsound.Beep(1000,500)
winsound.Beep(2500,500)
inDir = "Z:\\Data"
appendeddata = "C:\gtemp\DataExtentsZData.shp"
arcpy.env.overwriteOutput = True
datapaths = []
def GetBoundingGeometry(inFC,datapaths):
outFeatureClass = "C:\\gtemp\\convexhulltemp2.shp"
appendeddata = "C:\gtemp\DataExtentsZData.shp"
try:
arcpy.MinimumBoundingGeometry_management(inFC, outFeatureClass,"CONVEX_HULL", "ALL")
arcpy.Append_management(outFeatureClass, appendeddata, "NO_TEST","","")
desc = arcpy.Describe(inFC)
datapaths.append(desc.catalogPath)
except:
pass
for root, dirs, files in os.walk(inDir):
print "working in ", root
#Get all geodatabase feature classes and feature dataset feature classes...
if root.endswith(".gdb"):
arcpy.env.workspace = root
FeatureClasses = arcpy.ListFeatureClasses("*", "All")
for features in FeatureClasses:
desc = arcpy.Describe(features)
GetBoundingGeometry(features, datapaths)
datasets = arcpy.ListDatasets("*", "FEATURE")
for dataset in datasets:
arcpy.env.workspace = root + "\\" + dataset
FeatureClasses = arcpy.ListFeatureClasses("*", "All")
for features in FeatureClasses:
GetBoundingGeometry(features, datapaths)
else:
arcpy.env.workspace = root
FeatureClasses = arcpy.ListFeatureClasses("*", "All")
for features in FeatureClasses:
desc = arcpy.Describe(features)
if desc.dataType == "CoverageFeatureClass":
pass
else:
GetBoundingGeometry(features, datapaths)
rows = arcpy.UpdateCursor(appendeddata)
counter = 0
for row in rows:
row.filepath = datapaths[counter]
counter += 1
rows.updateRow(row)
print "done"
winsound.Beep(2500,1000)
except arcpy.ExecuteError:
msgs = arcpy.GetMessages(2)
arcpy.AddError(msgs)
print msgs
except:
tb = sys.exc_info()[2]
tbinfo = traceback.format_tb(tb)[0]
pymsg = "PYTHON ERRORS:\nTraceback info:\n" + tbinfo + "\nError Info:\n" + str(sys.exc_info()[1])
msgs = "ArcPy ERRORS:\n" + arcpy.GetMessages(2) + "\n"
arcpy.AddError(pymsg)
arcpy.AddError(msgs)
print pymsg + "\n"
print msgs