Eine Enterprise-Geodatabases besteht aus Systemtabellen, Prozeduren und Funktionen, die in einem Datenbankmanagementsystem gespeichert sind. Die Systemtabellen mit dem Präfix GDB_ beschreiben das Geodatabase-Schema, das Dataset-Definitionen, Regeln und Beziehungen vorgibt. Diese Systemtabellen enthalten und verwalten alle Metadaten, die erforderlich sind, um Geodatabase-Eigenschaften, Datenvalidierungsregeln und Verhalten zu implementieren. Die Tabellen sind folgende:
- GDB_Items: Enthält eine Liste aller Elemente, die in einer Geodatabase enthalten sind, z. B. Feature-Classes, Topologien und Domänen.
- GDB_ItemTypes: Enthält eine vordefinierte Liste erkannter Elementtypen, z. B. Table.
- 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" werden befüllt, wenn Sie die Geodatabase erstellen, und die Werte sind innerhalb einer Softwareversion statisch. Die Beziehungen zwischen diesen vier Tabellen werden in der folgenden Abbildung verdeutlicht:
GDB_Items (Tabelle)
Eine Geodatabase ist ein Container für räumliche und nichträumliche Elemente. Zu diesen Elementen zählen Tabellen-Datasets, z. B. Feature-Classes und Tabellen, Dataset-Container, z. B. Feature-Datasets und Topologien, Datasets zur Steuerung des erweiterten Geodatabase-Verhaltens und weitere Elemente wie Domänen, Toolboxes und Workspace-Erweiterungen. All diese Elemente werden in der Geodatabase in der Tabelle "GDB_Items" gespeichert, in der jedes Element als einzelne Zeile hinzugefügt wird.
Auf diese sieben Attribute eines Elements werden Sie mit großer Wahrscheinlichkeit mithilfe von SQL zugreifen:
- UUID: Eine eindeutige Kennung für das Element
- Name: Der Name des Elements
Beachten Sie, dass der Name eines Elements nicht unbedingt 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 der eindeutigen Kennung überein.
- Definition: Ein XML-Dokument, das die Eigenschaften eines Elements definiert; diese Eigenschaften und das XML-Schema variieren auf Grundlage des Elementtyps. Die Definition einer Objektklasse enthält beispielsweise Informationen, z. B. Subtypes, wohingegen die Definition einer Domäne mit codierten Werten Code- und Wertpaare enthält, und die Definition einer Beziehungsklasse enthält u. a. Beziehungsregeln.
- Documentation: Ein XML-Dokument, in dem die Metadaten des Elements gespeichert werden.
- Properties: Ein ganzzahliger Wert, der mit Bitmasken verwendet werden kann, um mehrere boolesche Eigenschaften des Elements abzurufen. Momentan wird dieser Wert nur verwendet, um anzugeben, ob ein Element in ArcGIS Desktop sichtbar ist.
- Shape: Die Ausdehnung des Datasets als Polygon, falls zutreffend (der Datentyp ist vom zugrunde liegenden Datenbankmanagementsystem abhängig).
In den Attributen der nächsten Liste werden Informationen aus der Definition eines Elements (z. B. der Geometrietyp einer Feature-Class) gespeichert. Sie werden außerhalb der XML-Definition dupliziert, um ein effizienteres Durchsuchen der Geodatabase zu ermöglichen. Beispiele für diese Attribute sind die Eigenschaften "Dataset-Subtype" und "Dataset-Informationen". Die Codes für diese Attribute sind vom Typ des Elements abhängig. Die Attribute lassen sich wie folgt beschreiben:
- Physical Name: Der vollständig qualifizierte Name des Elements
- DatasetSubtype1: Für Feature-Classes und Raster-Kataloge speichert DatasetSubtype1 den Feature-Typ der Tabelle. 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-Feldes 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 verknüpfte URL für das Element; verwendet bei Katalog-Services
- Defaults: Elementmetadaten; werden nicht direkt von den Geodatabases, sondern von anderen Clients verwendet.
- ItemInfo: Speicherinformationen für das Element, z. B. Symbolisierung, die vom zugrunde liegenden Dataset unabhängig sind
GDB_ItemTypes (Tabelle)
Die Tabelle "GDB_ItemTypes" enthält einen 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 werden übergeordnete Elemente auch nicht direkt in der Tabelle "GDB_Items" gespeichert.
Der Inhalt der Tabelle "GDB_ItemTypes" 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 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"
GDB_ItemRelationships (Tabelle)
Nahezu alle Geodatabase-Elemente haben Beziehungen zu mindestens einem anderen Geodatabase-Element. Eine Standalone-Tabelle ist beispielsweise mit dem Stammordner der Geodatabase verbunden und eine Domäne mit den Feature-Classes oder Tabellen, die diese für die Validierung benötigen. Feature-Classes sind wiederum mit der Topologie verbunden, an der sie beteiligt sind. Die Tabelle "GDB_ItemRelationships" wird verwendet, um diese Beziehungen zu verfolgen.
Elementbeziehungen haben die folgenden Attribute:
- UUID: Eine eindeutige Kennung einer Elementbeziehung
- Type: Eine UUID, die den Typ der Beziehung darstellt; diese stimmt mit der eindeutigen Kennung des Beziehungstyps des Elements überein.
- OriginID: Die eindeutige Kennung des Ursprungselements der Beziehung
- DestinationID: Die eindeutige Kennung 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 Beziehungen zwischen Controller-Datasets und den von ihnen gesteuerten Datasets verwendet.
- ObjectID: Eindeutige Kennung
- Properties: Ein ganzzahliger Wert, der mit Bitmasken verwendet werden kann, um mehrere boolesche Eigenschaften des Elements abzurufen. Derzeit wird dieser Wert nur verwendet, um anzugeben, ob die Elemente in der Beziehung in einem ArcGIS-Client sichtbar sind.
Sie würden wahrscheinlich nur auf die ersten fünf Attribute mit SQL zugreifen.
GDB_ItemRelationshipTypes (Tabelle)
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 Zielelement fungieren kann
- Is Containment: Gibt an, ob das Zielelement vorhanden sein kann, auch wenn das Ursprungselement gelöscht wird
XML in Geodatabase-Systemtabellen
Wie in den vorherigen Abschnitten erwähnt, verwenden einige der Felder einen XML-Datentyp. In 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 IBM 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, Documentation und ItemInfo in der Tabelle "GDB_Items" in CLOBs an. In "GDB_ItemRelationships_vw" wird der Inhalt der Spalte Attributes der Tabelle "GDB_ItemRelationships" in einem CLOB angezeigt. CLOBs können als Text gelesen werden.
Beim Abfragen dieser Sichten extrahieren Sie die Zeichenfolge aus dem CLOB, 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 des CLOB abfragen zu können, müssen Sie den Oracle-Server so konfigurieren, dass SQL-Verbindungen unterstützt werden. Weitere Informationen finden Sie unter Konfigurieren von "extproc" für den Zugriff auf "ST_Geometry" in Oracle.
Wie GDB_-Tabellen miteinander in Beziehung stehen
Die beste Möglichkeit, zu erfahren, wie Systemtabellen zusammenarbeiten, die Geodatabase-Funktionen nachverfolgen, besteht darin, sie mit SQL zu untersuchen. Wählen Sie alle Zeilen und Spalten der Tabelle "GDB_Items" aus, um ihren Inhalt zu sehen.
Die Werte in der Spalte Type sind als UUIDs gespeichert. Diese beziehen sich auf die Spalte UUID in der Tabelle "GDB_ItemTypes". Daher können Sie den Elementtyp für jedes Element mit einer SQL-Abfrage wie der folgenden abrufen:
SELECT gdb_items.UUID, gdb_itemtypes.name AS "Type", gdb_items.name
FROM gdb_items INNER JOIN gdb_itemtypes
ON gdb_items.type = gdb_itemtypes.UUID;
Damit werden die Typ-Werte für jedes Element zurückgegeben, wie in folgender Tabelle zu sehen:
UUID | Typ | Name |
---|---|---|
DF7A67CF-D8B2-461C-A4BF-74AF52AF2BD3 | Ordner | |
5E53E5C2-874E-4538-A6AB-1F0BBCABA885 | Workspace | Workspace |
2AC65400-919D-4241-A1A5-83C219A8ACD0 | Domäne mit codierten Werten | Material |
897D8FA2-BE31-4A5D-94A5-B93A32BF2146 | Domäne mit codierten Werten | DitDiam |
B75E3FDF-F864-4FA1-A31A-A56716BBDEA7 | Bereichsdomäne | RotAngle |
Gleichermaßen enthält die Tabelle "GDB_ItemRelationships" UUIDs, die Schlüsselwerte aus anderen Tabellen darstellen. Jede Beziehung enthält zwei der UUID-Werte, die in der Tabelle "GDB_Items" oben angezeigt wurden: einer für das Zielelement der Beziehung und einer für das Ursprungselement. Um diese in Klartextzeichenfolgen aufzulösen, müssen Sie die Tabelle "GDB_ItemRelationships" zweimal mit der Tabelle "GDB_Items" verbinden. Um den Beziehungstyp zu sehen, verwenden Sie eine Join-Verknüpfung mit der Tabelle "GDB_ItemRelationshipTypes", wie in den folgenden SQL-Beispielen gezeigt:
--SQL Server and PostgreSQL query SELECT reltypes.name AS type, origin_items.name AS "Origin Name", dest_items.name AS "Dest Name"
FROM gdb_items AS origin_items, gdb_itemrelationships AS relationships, gdb_items AS dest_items, gdb_itemrelationshiptypes AS reltypes WHERE origin_items.UUID = relationships.originid AND dest_items.UUID = relationships.destid AND relationships.type = reltypes.UUID;
--Oracle query SELECT reltypes.name AS type, origin_items.name AS "Origin Name", dest_items.name AS "Dest Name"
FROM sde.gdb_items origin_items, sde.gdb_itemrelationships relationships, sde.gdb_items dest_items, sde.gdb_itemrelationshiptypes reltypes WHERE origin_items.UUID = relationships.originid AND dest_items.UUID = relationships.destid AND
relationships.type = reltypes.UUID;
Folgende Werte könnte die Abfrage z. B. zurückgeben:
Typ | Origin Name | Dest Name |
---|---|---|
DatasetInFeatureDataset | County.PW.Cadastre | County.PW.PrivRdName |
DatasetInFeatureDataset | County.PW.Cadastre | County.PW.TaxParcelNo |
DomainInDataset | County.PW.PIN | PINB |
FeatureClassInTopology | County.PW.Cadastre_Topology | County.PW.TaxBlocks |
DatasetsRelatedThrough | County.PW.PIN_Condo | County.PW.PIN_Condo2Parcel |
Gängige Abfragen für GDB_-Tabellen
Informationen zu gängigen Typen von SQL-Abfragen an Tabellen des Typs "GDB_" finden Sie in den folgenden Themen: