Wenn ich versuche, eine Feature-Class zu löschen, habe ich nach oder während der Verwendung einer Arcgis Engine-App, die dieselbe Feature-Class verwendet, einen Fehler bezüglich der Sperre erhalten, sodass ich diese Sperre erst nach einem Neustart des Computers nutzen kann.
Ich würde gerne wissen, wie man Sperren mit arcpy oder arcobjects 10.1 entfernen kann. Es wäre perfekt, wenn ich die Sperre in der Arcengine-App nutzen könnte, die auch die Geodatabase sperrt. Ich habe in SE verschiedene Posts über Sperren gesehen, aber niemand von ihnen bietet die Lösung für freie Sperren mit ArcObjects.
arcobjects
arcpy
arcgis-10.1
arcgis-engine
.net
Geogeek
quelle
quelle
Antworten:
Wenn Sie Arcpy-Skripte verwenden, sind Probleme mit der Datensperre mit 10.1 noch problematischer geworden.
Nun, so sollte es funktionieren, aber das tut es selten. Normalerweise funktioniert ein Code gelegentlich, stürzt jedoch häufig unerklärlich an verschiedenen Stellen ab.
Das Problem scheint zu sein, dass Sperren nur "für eine Weile" dort sitzen bleiben, aber der Code läuft viel schneller als die Geschwindigkeit, mit der die Sperren entfernt werden. Einige der integrierten Arc-Tools scheinen jedoch das Löschen von Sperren bei Bedarf zu erzwingen (da Sperren für alle GDBs gleichzeitig gelten, verhindert eine Sperre, dass Sie mit einer der enthaltenen Feature-Classes arbeiten können). Diese Tools sind arcpy.Compact_management () und arcpy.Exists ().
Hier ist eine kleine Funktion, die ich in meinem Code verwende und die Zuverlässigkeit erheblich erhöht hat (für ein Skript, das mehrere GDBs und Feature-Classes in ihnen erstellt und bearbeitet):
Es wird verwendet, indem einfach der Pfad des Arbeitsbereichs (GDB) an die Funktion übergeben wird, und sollte nach jeder Operation entweder im Arbeitsbereich (dh GDB-Erstellung) oder in Feature-Classes im Arbeitsbereich (dh Cursor, Hinzufügen von Feldern, Berechnungen usw.) ausgeführt werden. . Zum Beispiel (hier als eigenständiges Skript mit der Funktion oben angezeigt; um die Funktion zu verwenden, kopieren Sie sie und fügen Sie sie zwischen den Importen und dem eigentlichen Programm ein, wie hier gezeigt):
quelle
Eine Datei-Geodatabase verfügt über drei Arten von Sperren.
Die von @StacyR vorgeschlagene Lösung funktioniert in allen Situationen mit Ausnahme der exklusiven Bearbeitungssperren (ED) gemäß der Arcgis-Hilfedokumentation.
http://help.arcgis.com/de/arcgisdesktop/10.0/help/index.html#//003n0000007t000000
quelle
Wenn die Sperren von Ihrem Code erstellt werden, bereinigen Sie nicht nach sich selbst. Geben Sie alle Verweise auf Feature-Classes, Arbeitsbereiche, Cursor usw. frei. Die Sperren werden entfernt, wenn Sie keine Verweise mehr auf die gesperrten Objekte haben.
quelle