Kurzer Überblick über Geodatabase-Systemtabellen
Die interne Struktur der Geodatabase wird als Reihe von einfachen Tabellen dargestellt, die als Geodatabase-Systemtabellen (die Tabellen mit dem Präfix "GDB_") bezeichnet werden und den Inhalt jeder Geodatabase verfolgen. Sie beschreiben im Wesentlichen das Geodatabase-Schema, das alle Definitionen, Regeln und Beziehungen zu Datasets vorgibt. Diese Systemtabellen enthalten und verwalten alle Metadaten, die erforderlich sind, um Geodatabase-Eigenschaften, Datenvalidierungsregeln und Verhalten zu implementieren.
Die interne Struktur dieser Tabellen wurde ab ArcGIS Version 10 umstrukturiert. Die mit dem Schema in der Geodatabase verknüpften Informationen, die vor ArcGIS Version 10 in über 35 Geodatabase-Systemtabellen gespeichert wurden, wurden in vier Haupttabellen konsolidiert:
- GDB_Items – Enthält eine Auflistung aller Elemente, die in einer Geodatabase enthalten sind, z. B. Feature-Classes, Topologien und Domänen.
- GDB_ItemTypes – Enthält eine vordefinierte Liste erkannter Feldtypen, z. B. Tabelle.
- GDB_ItemRelationships – Enthält Schemaverknüpfungen zwischen Elementen, z. B. welche Feature-Classes in einem Feature-Dataset enthalten sind.
- GDB_ItemRelationshipTypes – Enthält eine vordefinierte Liste erkannter Beziehungstypen z. B. DatasetInFeatureDataset.
Die Tabellen "GDB_Items" und "GDB_ItemRelationships" stellen das benutzerdefinierte Schema in einer bestimmten Geodatabase dar. Der Inhalt der Tabellen wird geändert, wenn das Schema der Geodatabase geändert wird. Die Tabellen "GDB_ItemTypes" und "GDB_ItemRelationshipTypes" sind statisch. Die Beziehungen zwischen diesen vier Tabellen werden in der folgenden Abbildung verdeutlicht:
Die Tabelle "GDB_Items"
Eine Geodatabase ist ein Container für geographische und nicht geographische Elemente. Zu diesen Elementen gehören tabellarische Datasets, z. B. Feature-Classes und Tabellen, Dataset-Container, z. B. Feature-Datasets, Topologien und geometrische Netzwerke, Datasets, die erweiterte Geodatabase-Verhaltensweisen steuern, sowie andere Elemente z. B. Domänen, Toolboxes und Workspace-Erweiterungen. Ab ArcGIS 10 werden all diese Elemente in der Geodatabase in der Tabelle "GDB_Items" gespeichert, in der jedes Element als einzelne Zeile gespeichert wird.
Ein Element hat die folgenden Attribute:
- UUID – Eindeutige Kennung für das Element.
- Name – Name des Elements.
Beachten Sie, dass der Name eines Elements nicht garantiert eindeutig ist; eine Beziehungsklasse und eine Feature-Class können beispielsweise denselben Namen haben. Es wird jedoch nicht empfohlen, dass Sie Elementen den gleichen Namen geben, da Feldnamen so aussagekräftig sein sollten, dass unterschieden werden kann, was das Element enthält.
- Type – Eine UUID, die den Typ des Elements im Datensatz darstellt; diese stimmt mit dem eindeutigen Bezeichner überein.
- Definition – Ein XML-Dokument, das die Eigenschaften eines Elements definiert; diese Eigenschaften und das XML-Schema ändern sich auf Grundlage des Feldtyps. Die Definition einer Objektklasse enthält beispielsweise Informationen, z. B. Subtypes, wohingegen die Definition einer Domäne mit codierten Werten Code-/Wertpaare enthält, und die Definition einer Beziehungsklasse enthält u. a. Beziehungsregeln.
- Documentation – Ein XML-Dokument, das die Metadaten des Elements speichert.
- Properties – Ein Ganzzahlwert, der mit Bitmasken verwendet werden kann, um mehrere boolesche Eigenschaften des Elements abzurufen. Dies wird derzeit nur verwendet, um anzugeben, ob ein Element in ArcGIS Desktop sichtbar ist.
- Shape – Die Ausdehnung des Datasets als Polygon, falls anwendbar (der Datentyp ist vom zugrunde liegenden DBMS abhängig).
Auf diese sieben Attribute werden Sie mit großer Wahrscheinlichkeit mit SQL zugreifen.
Die nächsten Attribute speichern Informationen aus der Definition eines Elements (z. B. der Geometrietyp einer Feature-Class), die außerhalb der XML-Definition dupliziert werden, um ein effizienteres Durchsuchen der Geodatabase zu ermöglichen. Beispiele für diese Attribute sind die Eigenschaften "Dataset-Subtype"und "Dataset-Informationen", deren Codes von dem Elementtyp abhängig sind.
- Physical Name – Der vollqualifizierte Name des Elements.
- DatasetSubtype1 – Für Feature-Classes und Raster-Kataloge speichert DatasetSubtype1 den Feature-Typ der Tabelle. Für Beziehungsklassen speichert es die Beziehungsart der Beziehungsklasse. Bei Topologien wird die Topologie-ID gespeichert.
- DatasetSubtype2 – Für Feature-Classes und Raster-Kataloge speichert DatasetSubtype2 den Geometrietyp. Für Beziehungsklassen wird ein Wert gespeichert, der angibt, ob die Beziehung attributiert oder nicht attributiert ist.
- DatasetInfo1 – Speichert den Namen des Shape-Felds für Feature-Class-Elemente.
- DatasetInfo2: Speichert Informationen für Feature-Classes, die Teil von Topologien sind.
- Path – Der eindeutige relative Pfad des Elements.
- URL – Die zugeordnete URL für das Element; verwendet bei Katalog-Services.
- Defaults – Elementmetadaten; nicht direkt von den Geodatabases, sondern von anderen Clients verwendet, z. B. ArcIMS-Metadaten-Services.
- ItemInfo – Speicherinformationen für das Element, z. B. Symbologie, die vom zugrunde liegenden Dataset unabhängig ist.
Die Tabelle "GDB_ItemTypes"
Die Tabelle "GDB_ItemTypes" enthält den vordefinierten Satz erkannter Feldtypen in der Geodatabase. Feldtypen werden zur Normalisierung der Tabelle "GDB_Items" verwendet (der Typ eines Elements in der Tabelle "GDB_Items" wird als UUID dargestellt), um in der Zukunft eine bessere Unterstützung von Geodatabase-Funktionalitätserweiterungen zu ermöglichen und eine Typhierarchie zu definieren. Alle übergeordneten Typen sind abstrakt, daher sind übergeordnete Elemente auch nicht in der Tabelle "GDB_Items" zu finden.
Der Inhalt der Tabelle "GDB_ItemTypes" ist statisch; er wird nicht geändert, wenn Elemente erstellt oder gelöscht werden.
Ein Elementtyp hat die folgenden Attribute:
- UUID: Eine eindeutige Kennung eines Elementtyps und des Fremdschlüssels für die Typspalte der Tabelle "GDB_Item".
- ParentTypeID – Der übergeordnete Typ des Elementtyps. Im Fall des abstrakten Feldtyps (der hat kein übergeordnetes Element aufweist), ist dies eine NULL-UUID.
- Name – Der Name eines Elementtyps, z. B. Feature-Class oder Bereichsdomäne.
- ObjectID – Die eindeutige Kennung für die Tabelle"GDB_ItemTypes".
Die Tabelle "GDB_ItemRelationships"
Nahezu alle Geodatabase-Elemente haben Beziehungen zu mindestens einem anderem Geodatabase-Element. Eine Standalone-Tabelle ist beispielsweise mit dem Stammordner einer Geodatabase verbunden, eine Domäne ist mit den Feature-Classes oder Tabellen verbunden, die diese für die Validierung benötigen, und Feature-Classes sind mit der Topologie verbunden, an der sie teilnehmen. Die Tabelle "GDB_ItemRelationships" wird verwendet, um diese Beziehungen zu verfolgen.
Elementbeziehungen haben die folgenden Attribute:
- UUID – Ein eindeutiger Bezeichner einer Elementbeziehung.
- Type – Eine UUID, die den Typ der Beziehung darstellt. Diese stimmt mit dem eindeutigen Bezeichner des Typ der Elementbeziehung überein.
- OriginID – Der eindeutige Bezeichner des Ursprungselements der Beziehung.
- DestinationID– Der eindeutige Bezeichner des Zielelements der Beziehung.
- Attributes – Ein XML-Dokument, das ausführliche Informationen zur Elementbeziehung enthält.
Viele Beziehungstypen schließen keine Attribute ein; sie werden nur in einigen Beziehungen zwischen Controller-Datasets und ihren gesteuerten Datasets verwendet.
- ObjectID – Eindeutige Kennung.
- Properties – Ein Ganzzahlwert, der mit Bitmasken verwendet werden kann, um mehrere boolesche Eigenschaften des Elements abzurufen. Dies wird derzeit nur verwendet, um anzugeben, ob die Elemente, die an der Beziehung teilnehmen, in ArcGIS Desktop sichtbar sind.
Sie würden wahrscheinlich nur auf die ersten fünf Attribute mit SQL zugreifen.
Es ist wichtig zu verstehen, dass eine Elementbeziehung nicht analog zu einer Beziehungsklasse ist. Jede Beziehungsklasse verfügt tatsächlich über Elementbeziehungen mit zwei Objektklassen (ihre Quell- und Zielklassen) sowie eine zusätzlichen Elementbeziehung mit ihrem Container (entweder der Stammordner der Geodatabase oder ein Feature-Dataset).
Die Tabelle "GDB_ItemRelationshipTypes"
Auf die gleiche Weise wie eine statische Sammlung von Elementtypen zum Klassifizieren von Elementen verwendet wird, wird eine statische Sammlung von Elementbeziehungstypen zur Klassifizierung von Elementbeziehungen verwendet. DatasetInFeatureDataset (durch das angegeben wird, dass eine Feature-Class, eine Beziehungsklasse oder ein Controller-Dataset innerhalb eines Feature-Datasets vorhanden ist) und DomainInDataset (durch das angegeben wird, dass ein Dataset eine Domäne zur Validierung auf Klassen- oder Subtype-Ebene verwendet) sind z. B. zwei Typen von Elementbeziehungen. Im Gegensatz zu Elementtypen haben Elementbeziehungstypen kein Hierarchiekonzept mit übergeordneten und untergeordneten Typen.
Elementbeziehungstypen haben die folgenden Attribute:
- UUID – Eine eindeutige Kennung eines Elementbeziehungstyps und des primären Schlüssels für die Typspalte der Elementbeziehungstabelle.
- Name – Der Name des Elementbeziehungstyps, z. B. DatasetInFolder.
- Forward Label – Eine Beschreibung der Beziehung aus dem Kontext des Ursprungselements.
- Backward Label – Eine Beschreibung der Beziehung aus dem Kontext des Zielelements.
- Origin Item Type ID – Die UUID des Elementtyps, der in Elementbeziehungen dieses Typs als Ursprungselement fungieren kann.
- Destination Item Type ID – Die UUID des Elementtyps, der in Elementbeziehungen dieses Typs als Ursprungselement fungieren kann.
- Is Containment – Gibt an, ob das Zielelement vorhanden sein kann, auch wenn das Ursprungselement gelöscht wird.
Die Ursprungs- und Zielelementtyp-IDs sind häufig Kennungen abstrakter Elementtypen. Die Ursprungstyp-ID des DomainInDataset-Beziehungstyps ist z. B. Domäne, ein abstrakter Elementtyp mit zwei Subtypes: Bereichsdomäne und Domäne mit codierten Werten.
XML in Geodatabase-Systemtabellen
Wie in den Attributdefinitionen für die Geodatabase-Systemtabellen erwähnt, verwenden einige der Felder einen XML-Datentyp. In ArcSDE-Geodatabases in IBM DB2, Microsoft SQL Server und PostgreSQL verwenden diese Spalten das native XML des Datenbankmanagementsystems und können daher mit XPath-Ausdrücken über SQL abgefragt werden.
In Geodatabases in Oracle und Informix verwenden die XML-Spalten ArcSDE-XML, das Informationen als BLOBs in einer Reihe von separaten Tabellen speichert. Auf diese kann direkt mit SQL zugegriffen werden.
Damit Sie die Inhalte der XML-Spalten in den Systemtabellen in Geodatabases in Oracle anzeigen können, gibt es zwei Systemsichten, in denen die Inhalte aus den XML-Spalten der Geodatabase-Systemtabelle in einem CLOB-Datentyp gespeichert werden. "GDB_Items_vw" zeigt den Inhalt der Spalten "Definition", "Dokumentation" und "ItemInfo" in der Tabelle "GDB_Items" in CLOB-Spalten an. In "GDB_ItemRelationships_vw" wird der Inhalt der Spalte "Attribute" der Tabelle "GDB_ItemRelationships" in einer CLOB-Spalte angezeigt. Der Inhalt der CLOB-Spalten kann als Text gelesen werden.
Beim Abfragen dieser Sichten extrahieren Sie die Zeichenfolge aus der CLOB-Spalte, konvertieren Sie in den XML-Typ und führen eine XPath-Abfrage aus. Beachten Sie Folgendes: Wenn Sie versuchen, einen XML-Typ für eine Spalte zu erstellen, die eine leere Zeichenfolge enthält, schlägt der Vorgang fehl, und die Meldung "Fehler beim Parsen von XML-Datei" wird ausgegeben, da dies von Oracle nicht unterstützt wird.
Um die Inhalte der CLOB-Spalten abfragen zu können, müssen Sie den Oracle-Server so konfigurieren, dass SQL-Verbindungen unterstützt werden. Weitere Informationen finden Sie unter Konfigurieren des Oracle-Listeners für die Verwendung von SQL.