HOW TO
Geoverarbeitungswerkzeuge fügen Metadaten zu ihrer Ausführung in einer Geodatabase ein. Diese Metadaten sind Name und Position des Werkzeugs und die verwendeten Parameter, wenn die Protokollierung der Geoverarbeitung aktiviert wurde. GIS-Administratoren und -Manager müssen manchmal den Geoverarbeitungsverlauf in den Metadaten einer Feature-Class oder eines Workspace löschen.
Das folgende Skript beschreibt, wie dies mit einem Python-Skript erreicht werden kann. Außerdem finden Sie einen Workflow zum Entfernen des Geoverarbeitungsverlaufs in einem Enterprise-Geodatabase-Workspace.
Entfernen des Geoverarbeitungsverlaufs in Feature-Classes
In den folgenden Anweisungen wird beschrieben, wie dies mit einem Python-Skript erreicht werden kann. Das folgende Skript automatisiert diesen Prozess für alle Feature-Classes in einer Geodatabase, einschließlich der Feature-Classes, die in einem Feature-Dataset gespeichert sind.
Hinweis: Führen Sie das Verfahren in der 32-Bit-Version von Python durch.
Führen Sie nach dem Aktualisieren der Variablen das beigefügte Python-Skript aus:
import arcpy import os, string ''' Update the following five variables before running the script.''' version = "10.5" myWorkspace = r"C:\XML_out\dbinstance_testgdb.sde" gp_history_xslt = r"C:\Program Files (x86)\ArcGIS\Desktop{}\Metadata\Stylesheets\gpTools\remove geoprocessing history.xslt".format(version) output_dir = r"C:\XML_out" db_type = "SQL" #Set this to either "SQL" or "Oracle" if your db has spatial views. If not you may set it to "". def RemoveHistory(myWorkspace, gp_history_xslt, output_dir): ##Removes GP History for feature dataset stored feature classes, and feature classes in the File Geodatabase. arcpy.env.workspace = myWorkspace for fds in arcpy.ListDatasets('','feature') + ['']: for fc in arcpy.ListFeatureClasses('','',fds): data_path = os.path.join(myWorkspace, fds, fc) if isNotSpatialView(myWorkspace, fc): removeAll(data_path, fc, gp_history_xslt, output_dir) def isNotSpatialView(myWorkspace, fc): ##Determines if the item is a spatial view and if so returns True to listFcsInGDB() if db_type <> "": desc = arcpy.Describe(fc) fcName = desc.name #Connect to the GDB egdb_conn = arcpy.ArcSDESQLExecute(myWorkspace) #Execute SQL against the view table for the specified RDBMS if db_type == "SQL": db, schema, tableName = fcName.split(".") sql = r"IF EXISTS(select * FROM sys.views where name = '{0}') SELECT 1 ELSE SELECT 0".format(tableName) elif db_type == "Oracle": schema, tableName = fcName.split(".") sql = r"SELECT count(*) from dual where exists (select * from user_views where view_name = '{0}')".format(tableName) egdb_return = egdb_conn.execute(sql) if egdb_return == 0: return True else: return False else: return True else: return True def removeAll(data_path, feature, gp_history_xslt, output_dir): ##Remove all GP History metadata from a feature class. arcpy.ClearWorkspaceCache_management() name_xml = os.path.join(output_dir, str(feature)) + ".xml" arcpy.XSLTransform_conversion(data_path, gp_history_xslt, name_xml) print "Completed xml coversion on {0}".format(feature) arcpy.MetadataImporter_conversion(name_xml, data_path) print "Imported XML on {0}".format(feature) def makeDirectory(output_dir): ##Creates directory to store the xml tables of converted metadata. If the ##directory already exists, the files will be created there. if not arcpy.Exists(output_dir): os.mkdir(output_dir) if __name__ == "__main__": makeDirectory(output_dir) RemoveHistory(myWorkspace, gp_history_xslt, output_dir) print "Done Done"
Entfernen des Geoverarbeitungsverlaufs in einem Enterprise-Geodatabase-Workspace
C:\Programme (x86)\ArcGIS\Desktop10.5\Metadata\Stylesheets\gpTools\remove geoprocessing history.xslt
Unterstützung durch ArcGIS-Experten anfordern
Esri Support App herunterladen