I have produced a Python script which creates multiple buffers of specific (listed) feature classes within a geodatabase. This is achieved by running each feature class through a for loop.
I would like to know if/how it would be possible to list feature classes from more than one geodatabase?
Currently I am using env.workspace to specify the single geodatabase. Listing the feature classes and then running them through the 'for loop'. A possible problem might be that many of the feature classes in the various geodatabases have the same name.
import arcpy import os.path import tempfile from arcpy import env # sets the workspace to my gdb arcpy.env.workspace = "C:/GIS Home/Mining Features (MATTHEW).gdb" # Output workspace and temp location is defined output_workspace = "C:/GIS Home/project_1" temp_workspace = tempfile.mkdtemp() # list of features to buffer in gdb fcList = ["Adit_Metalliferous", "Shaft_Metalliferous", "Quarry_Metalliferous", "Dump_Metalliferous", "Engine_House", "Goffan_Working", "Lode_Surface_Outcrop", "Lode_Undefined_Elevation", "Mine_Level", "Mine_Raise", "Portal", "Reported_Subsidence", "Secured_Feature", "Tunnel"] #create empty lists for output l_250 = [] l_500 = [] l_750 = [] for featureClass in fcList: b250 = os.path.join(temp_workspace, featureClass + "_b250.shp") # make temp output file b500 = os.path.join(temp_workspace, featureClass + "_b500.shp") # make temp output file b750 = os.path.join(temp_workspace, featureClass + "_b750.shp") # make temp output file arcpy.Buffer_analysis(featureClass, b250, 250, "", "", "ALL") # carry out buffer arcpy.Buffer_analysis(featureClass, b500, 500, "", "", "ALL") # carry out buffer arcpy.Buffer_analysis(featureClass, b750, 750, "", "", "ALL") # carry out buffer l_250.append(b250) # append the buffer to the l_250 list l_500.append(b500) # append the buffer to the l_500 list l_750.append(b750) # append the buffer to the l_750 list merge_250 = os.path.join(temp_workspace, "250_merge.shp") arcpy.Merge_management(l_250, merge_250) merge_500 = os.path.join(temp_workspace, "500_merge.shp") arcpy.Merge_management(l_500, merge_500) merge_750 = os.path.join(temp_workspace, "750_merge.shp") arcpy.Merge_management(l_750, merge_750) dissolve_250 = os.path.join(output_workspace, "250_dissolve.shp") # create 250_dissolve.shp for final output arcpy.Dissolve_management(merge_250, dissolve_250) dissolve_500 = os.path.join(output_workspace, "500_dissolve.shp") # create 500_dissolve.shp for final output arcpy.Dissolve_management(merge_500, dissolve_500) dissolve_750 = os.path.join(output_workspace, "750_dissolve.shp") # create 750_dissolve.shp for final output arcpy.Dissolve_management(merge_750, dissolve_750)
أكثر...
I would like to know if/how it would be possible to list feature classes from more than one geodatabase?
Currently I am using env.workspace to specify the single geodatabase. Listing the feature classes and then running them through the 'for loop'. A possible problem might be that many of the feature classes in the various geodatabases have the same name.
import arcpy import os.path import tempfile from arcpy import env # sets the workspace to my gdb arcpy.env.workspace = "C:/GIS Home/Mining Features (MATTHEW).gdb" # Output workspace and temp location is defined output_workspace = "C:/GIS Home/project_1" temp_workspace = tempfile.mkdtemp() # list of features to buffer in gdb fcList = ["Adit_Metalliferous", "Shaft_Metalliferous", "Quarry_Metalliferous", "Dump_Metalliferous", "Engine_House", "Goffan_Working", "Lode_Surface_Outcrop", "Lode_Undefined_Elevation", "Mine_Level", "Mine_Raise", "Portal", "Reported_Subsidence", "Secured_Feature", "Tunnel"] #create empty lists for output l_250 = [] l_500 = [] l_750 = [] for featureClass in fcList: b250 = os.path.join(temp_workspace, featureClass + "_b250.shp") # make temp output file b500 = os.path.join(temp_workspace, featureClass + "_b500.shp") # make temp output file b750 = os.path.join(temp_workspace, featureClass + "_b750.shp") # make temp output file arcpy.Buffer_analysis(featureClass, b250, 250, "", "", "ALL") # carry out buffer arcpy.Buffer_analysis(featureClass, b500, 500, "", "", "ALL") # carry out buffer arcpy.Buffer_analysis(featureClass, b750, 750, "", "", "ALL") # carry out buffer l_250.append(b250) # append the buffer to the l_250 list l_500.append(b500) # append the buffer to the l_500 list l_750.append(b750) # append the buffer to the l_750 list merge_250 = os.path.join(temp_workspace, "250_merge.shp") arcpy.Merge_management(l_250, merge_250) merge_500 = os.path.join(temp_workspace, "500_merge.shp") arcpy.Merge_management(l_500, merge_500) merge_750 = os.path.join(temp_workspace, "750_merge.shp") arcpy.Merge_management(l_750, merge_750) dissolve_250 = os.path.join(output_workspace, "250_dissolve.shp") # create 250_dissolve.shp for final output arcpy.Dissolve_management(merge_250, dissolve_250) dissolve_500 = os.path.join(output_workspace, "500_dissolve.shp") # create 500_dissolve.shp for final output arcpy.Dissolve_management(merge_500, dissolve_500) dissolve_750 = os.path.join(output_workspace, "750_dissolve.shp") # create 750_dissolve.shp for final output arcpy.Dissolve_management(merge_750, dissolve_750)
أكثر...