And how can I improve my performance? I wrote a simple python script to export a few hundred maps:
Open a MXD, add a layer, apply a definition query, apply a symbology, export to PNG.
The definition query is in the loop. Everything else is always the same. And there are always 153 features selected in the FC. In the first three minutes between 10 and 20 pngs are produced. After that only 2. How can I prevent this and improve the performence? There are hundreds of pngs waiting.
import arcpy,os
field1 = "Field1"
mxd = r"X:\GIS\test.mxd"
mxd2 = arcpy.mapping.MapDocument(mxd)
df = arcpy.mapping.ListDataFrames(mxd2)[0]
shp = r"X:\GIS\TestGDB\test"
dbf = r"X:\GIS\testdata.dbf"
elementlist = ["value1","value2",...] #here are a few hundret elements in the list
seasonlist = ["spring","summer","autumn","winter"]
for element in elementlist:
for index,season in enumerate(seasonlist):#[0:1]:
where_clause = '"%s" = %s' % (str(field1),str("'"+element+"'"))
layer = shp.split(os.sep)[-1]
layername = layer
arcpy.MakeFeatureLayer_management(shp,layername)
layer = arcpy.mapping.Layer(layer)
layer.name = layername + "_" + season
layer2 = arcpy.mapping.TableView(dbf)
layername2 = layer2.name + "_" + season
layer2.definitionQuery = where_clause
arcpy.mapping.AddTableView(df,layer2)
arcpy.AddJoin_management(layer,in_field,layer2,join_field,"KEEP_ALL")
expression = "!" + symbologyfield + "!"
arcpy.CalculateField_management(layer,valuefield,expression,"PYTHON")
arcpy.RemoveJoin_management(layer)
#arcpy.UpdateLayer(df, update_layer, source_layer, {symbology_only})
arcpy.ApplySymbologyFromLayer_management(layer,layerfile)
arcpy.mapping.AddLayer(df,layer,"TOP")
layer.visible = True
for element2 in arcpy.mapping.ListLayoutElements(mxd2,"TEXT_ELEMENT"):
if element2.name == textfield1:
element2.text = str(element)
if element2.name == textfield2:
element2.text = str(season)
arcpy.RefreshActiveView()
arcpy.RefreshTOC()
arcpy.mapping.ExportToPNG(mxd2, output + os.sep + str(element) + "_" + str(season) + r".png",resolution=printresulution)