Ich habe eine Esri-File-Geodatabase mit definierten Attributdomänen . Ich muss einige der Attributdomänen löschen, kann dies jedoch nicht, da "Die Domäne wird von einer Attributregel verwendet". . Wie kann ich feststellen, welche Feature-Class (s) die Domains verwenden?
Executing: DeleteDomain R:\v5\YT_Canvec.gdb Permanency
Start Time: Thu May 19 11:01:02 2011
ERROR 999999: Error executing function.
The domain is used by an attribute rule.
Failed to execute (DeleteDomain).
Failed at Thu May 19 11:01:02 2011 (Elapsed Time: 0.00 seconds)
In der Geodatabase gibt es über hundert Feature-Classes, bei denen die Eigenschaften der FC-Felder interaktiv betrachtet werden und bei denen es sich jeweils um Nicht-Starter handelt. Die GDB ist zu groß, um sie in eine persönliche GDB umzuwandeln und mit MS-Access in die Hintertür zu gelangen (eine zweifelhafte Methode).
(26.05.2011): Eine andere Möglichkeit, dies zu formulieren, ist "Welche Feature-Class verwendet Domain X?".
arcpy
file-geodatabase
error-999999
domains
Matt Wilkie
quelle
quelle
Antworten:
Um die Frage der Behandlung von Feature-Classes mit Subtypen zu beantworten, ist es mit arcpy (10.1+) möglich.
Der Subtypcode stcode ist Null, wenn keine Subtypen vorhanden sind. Der Code gibt daher "Keine" aus.
Das Untertypen-Wörterbuch hat mehr zu bieten, prüfen Sie es also im Code.
quelle
Python bietet Methoden zum Auflisten von Feature-Classes in einer Geodatabase, zum Durchlaufen der einzelnen Feature-Classes in der Liste, zum Auflisten der Felder in den einzelnen Feature-Classes und zum Anzeigen der Domänen der einzelnen Felder.
Der obige Code sollte in ArcGIS 10 funktionieren und eine Liste direkt im Python-Interpreter-Fenster ausgeben. Sie können die Liste dann kopieren und in einen Texteditor oder Excel einfügen, um die Ergebnisse einfacher zu überprüfen.
quelle
Da ich nicht glaube, dass Python Subtypen handhabt, poste ich diesen C # -Code, der es sollte. Ich habe es mit Esris Probenwasser / Abwasser-Geodb getestet und die folgenden nicht verwendeten Domänen gefunden:
DBAs ärgern sich häufig darüber, dass auf Domänen - die im Wesentlichen Nachschlagetabellen sind - nicht über SQL zugegriffen werden kann.
Dieser Code wurde von arcmap getestet ( gemäß Matts Kommentar aktualisiert ):
quelle
Dieser Code sollte zurückgeben, was gefragt wird. Alle Objektklassen und Tabellen in einer Arbeitsbereich-GDB / FS werden genau durchlaufen, und alle mit einer Domäne verknüpften Felder, der Feldname und die Objektklasse / Tabelle, zu der sie gehört, werden zurückgegeben.
quelle
Leider löst Brians Antwort, die eine direkte und brauchbare Antwort auf die gestellte Frage ist, mein eigentliches Problem nicht. Ich nehme an, dass es einen Fehler in der vorliegenden GDB gibt (auch wenn keine der Feature-Classes über angehängte Domains verfügt, darf ich dennoch keine löschen). Auf jeden Fall habe ich eine andere Methode gefunden, um zu bestimmen, welche FCs zugeordnete Domänen haben. Es ist interaktiv, aber viel schneller als das Durchlaufen jeder Feldeigenschaft auf jedem einzelnen fc:
quelle
HD_148009_2
mit der CV-Domäne verknüpftPermanency
ist. Dies gilt auch für den Feldinspektor "Feature-Class-Eigenschaften" in ArcCatalog. Jetzt habe ich es endlich soweit eingegrenzt, dass ein Fehlerbericht mit dem technischen Support von Esri erstellt werden kann.Ich stelle mir vor, dass Matt Wilkie nachschlagen und schreiben musste, um Brians Code zu erweitern. Ich musste alle Domänen für Tabellen, Feature-Classes im Stammverzeichnis einer Datenbank und Features in allen Feature-Datasets abrufen. Ich habe die Informationen als CSV exportiert, damit einige andere Worker unsere Geodatabase-Umgebungen von alten Domains bereinigen können.
quelle
Esri: FAQ: Wie kann ich alle Stellen in meiner Geodatabase finden, an denen auf Domains verwiesen wird? . "Python-Funktionen, mit denen die Eigenschaften dieser Strukturen in einer Geodatabase aufgelistet werden können. Unter den Eigenschaften befinden sich die referenzierten Domänen. Es werden ein Beispielskript und eine File-Geodatabase bereitgestellt, die veranschaulichen, wie Python-Funktionen zum Auflisten der Domänen und anderer Eigenschaften von Feature-Classes und verwendet werden können Tabellen. Domänen können mit Feldern in einer Feature-Class oder Tabelle verknüpft werden. Außerdem können sie für Felder festgelegt werden, die nach einem Subtyp kategorisiert sind. "
Die Ergebnisse sind bei dieser Frage verrauscht und gehen über die verwendeten Domänen hinaus, bieten jedoch eine breitere Plattform für den Einstieg.
Code-Auszug, der Kürze halber bearbeitet:
quelle