3

I have a script that does a series of calculations, producing temporary data along the way. However, at each step of the script, data is added to the TOC and then removed when I call the arcpy.Delete_management function on the data. Before my script reaches the delete function, the temporary data that I've calculated is shown in the TOC. Is there a way to explicitly specify these datasets as temporary, or freeze the TOC during script processing. Example below:

class StationTypology:

    def __init__(self, areaName, bufferDistance):
        self.areaName = areaName
        self.bufferDistance = bufferDistance

    def BusinessDensity(self):
        try:
            # Make a temporary table in memory based on query of feature class
            query = ("""\"AreaName\" = '""" + self.areaName + """' AND
                     \"BufferDistance\" = """ + str(self.bufferDistance) + """ AND
                     \"UseType\" = 'Business'""")

            arcpy.MakeTableView_management("LANDUSE",
                                           "business",
                                           query)

            # Calculate the sum of floor space, from above table
            arcpy.Statistics_analysis("business",
                                      "in_memory\\businessStatistics",
                                      [["FloorArea", "SUM"]])

            # Use SearchCursor to access table records and store rows in a variable
            rows = arcpy.SearchCursor("in_memory\\businessStatistics",
                                      "",
                                      "",
                                      "SUM_FloorArea",
                                      "")

            # Table has one row; access with iteration, grab value of SUM_FloorArea
            for row in rows:
                businessDensity = row.SUM_FloorArea

            del rows  # Housekeeping
            arcpy.Delete_management("business")  # Housekeeping
            arcpy.Delete_management("in_memory\\businessStatistics")  # Housekeeping

            return businessDensity

        except:
            try:
                del rows  # Housekeeping
                arcpy.Delete_management("business")  # Housekeeping
                arcpy.Delete_management("in_memory\\businessStatistics")  # Housekeeping
            except:
                pass

I am not sure if it matters, but the script is being called from a wxPython GUI launched inside of ArcGIS as a Python Add-In. The GUI contains a button with an event that triggers the above script.

  • 2
    If you run the script from outside of ArcMap(IDLE shell), or as a script tool, temporary layers aren't added to the map. – Roy Jun 27 '12 at 17:20
  • 1
    I understand, but I want the scripts to be executed inside my Python Add-In GUI through user events (buttons). – Michael Markieta Jun 27 '12 at 18:11
1

See the answer on the Esri forums. Set arcpy.env.addOutputsToMap to False at the beginning, then back to True when you're done.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.