Feature-Classes in einer Geodatabase in SQL Server
Eine Feature-Class ist eine Sammlung von geographischen Features, die denselben geometrischen Typ aufweisen (Point, Line, Polygon, Multipoint, Annotation, Dimension oder Multipatch). Sie können z. B. Punkte für alle Bahnhöfe entlang einer Eisenbahnstrecke in einer Feature-Class speichern. In einer anderen Feature-Class können Sie Linien speichern, die alle Eisenbahnschienen darstellen.
In diesem Thema wird beschrieben, wie eine Feature-Class im Fenster "Katalog", im Datenbankmanagementsystem (DBMS) und in einem XML-Dokument angezeigt wird.
Feature-Classes in ArcGIS for Desktop
Es gibt sieben Typen von Feature-Classes, die Sie in ArcGIS for Desktop erstellen können: Point, Multipoint, Line, Polygon, Annotation, Dimension und Multipatch.
Die unterschiedlichen Feature-Class-Typen sind im Kataloginhaltsverzeichnis durch verschiedene Symbole gekennzeichnet. Die folgende Tabelle enthält die Symbole für die einzelnen Feature-Class-Typen.
Feature-Class-Symbol |
Feature-Class-Typ |
---|---|
Point oder Multipoint |
|
Line |
|
Polygon |
|
Annotation |
|
Dimension |
|
Multipatch |
In Microsoft SQL Server umfasst der Name einer Feature-Class, wie er im Kataloginhaltsverzeichnis angezeigt wird, den Namen der Datenbank, in der sich die Feature-Class befindet, den Namen des Benutzers, der die Feature-Class besitzt, und den Namen der Feature-Class selbst.
Beispiel: Eine Feature-Class mit dem Namen "parcels" in der Geodatabase "geodata", die dem Benutzer "sasha" gehört, wird im Kataloginhaltsverzeichnis als "geodata.SASHA.PARCELS" aufgeführt.
Eine Beschreibung der unterschiedlichen Feature-Class-Typen finden Sie unter Grundlagen zu Feature-Classes.
In einer Microsoft SQL Server-Datenbank gespeicherte Feature-Classes
Feature-Classes in SQL Server-Datenbanken verwenden einen von drei Geometriespeichertypen: binary, geometry (Microsoft) oder geography (Microsoft).
Alle Feature-Classes verfügen über eine Basistabelle (auch als Business-Tabelle bezeichnet), in der Attributinformationen, eine Objekt-ID und ein Shape-Feld gespeichert werden. Das Objekt-ID-Feld und das Shape-Feld können andere Namen aufweisen, müssen aber in der Basistabelle einer Feature-Class enthalten sein.
Die Basistabellen von Annotation- und Dimension-Feature-Classes müssen noch weitere obligatorische Felder enthalten. Eine Liste dieser Felder finden Sie unter Verwalten von Eigenschaften einer Annotation-Feature-Class und Eigenschaften von Bemaßungs-Features.
Sie stellen nach dem Laden der Daten oder dem Erstellen der Geodatabase fest, dass die Datenbank zahlreiche i-Tabellen und gespeicherte Prozeduren enthält. Diese gespeicherten Prozeduren und i-Tabellen werden zum Generieren von Feature-IDs für Feature-Classes verwendet. Die Namen der i-Tabellen enthalten eine Nummer. Diese Nummer entspricht der Registrierungs-ID (registration_id) der Feature-Class in der Tabelle "SDE_table registry". Eine Bearbeitung dieser Tabellen oder gespeicherten Prozeduren wird nicht unterstützt und sollte unbedingt vermieden werden.
Mit den Datentypen "geometry"oder "geography" von Microsoft in einer SQL Server-Datenbank gespeicherte Feature-Classes
Geodatabases, die in einer SQL Server-Datenbank gespeichert werden, verwenden den Microsoft-Geometry-Speichertyp standardmäßig für die Feature-Speicherung. Sie können auch den Microsoft-Geography-Speichertyp verwenden. Feature-Classes, die einen dieser Speichertypen verwenden, besitzen eine Basistabelle. Die Basistabelle enthält eine Spalte vom Typ GEOMETRY oder GEOGRAPHY, in der die Feature-Class-Geometrie gespeichert wird. Es gibt keine zugeordnete Feature-Tabelle.
Die Basistabelle ist eine DBMS-Tabelle, in der Attribute gespeichert werden und die durch das Hinzufügen einer räumlichen Spalte für die Speicherung räumlicher Daten aktiviert wurde. Der Name der Basistabelle entspricht dem Namen der Feature-Class.
Feature-Class-Tabellen, die Geometry- oder Geography-Speicher verwenden, weisen auch Systemtabellen (GDB_ITEMS, SDE_spatial_references, SDE_table_registry, SDE_column_registry, SDE_geometry_columns und SDE_layers) sowie verknüpfte Sichten auf.
View a diagram of a feature class using SQL Server geometry or geography storage..
Sie benötigen Adobe Acrobat Reader, um die Datei zu öffnen.
Gestrichelte Linien geben implizite Beziehungen zwischen Spalten an, und durchgezogene Linien geben explizite Beziehungen zwischen Spalten an.
Die für Geometry- oder Geography-Feature-Classes verwendeten Sichten, ST_SPATIAL_REFERENCE_SYSTEMS und ST_GEOMETRY_COLUMNS, werden im Diagramm nicht angezeigt, da sie auf den Systemtabellen "SDE_spatial_references" und "SDE_geometry_columns" basieren, die bereits im Diagramm enthalten sind.
Wenn die Feature-Class für die Speicherung von CAD-Entitäten aktiviert wurde, wird eine Nebentabelle erstellt, in der die Feature-Class CAD-Daten speichert, z. B. Kurven. Alle über ArcGIS for Desktop erstellten Feature-Classes sind für das Speichern von CAD-Elementen aktiviert. Wenn Sie Daten mit administrativen Befehlen in ArcSDE importieren oder registrieren, geben Sie an, ob CAD-Daten in der resultierenden Feature-Class gespeichert werden können. Das Feature-Class-Diagramm enthält zudem eine CAD-Tabelle, "SDE_geometry42". Die Nummer "42" im Tabellennamen verweist auf die Layer-ID der Feature-Class in der Tabelle "SDE_layers".
Verbindungen mit der CAD-Nebentabelle werden erst aktiviert, wenn der Feature-Class CAD-Daten, z. B. echte Kurven, hinzugefügt wurden. Nach der Aktivierung wird bei Abfragen der Feature-Class stets die CAD-Nebentabelle eingeschlossen, selbst wenn keine CAD-Daten mehr darin enthalten sind.
Im Binärformat gespeicherte Feature-Classes in einer SQL Server-Datenbank
Im Binärformat gespeicherte Feature-Classes – entweder im komprimierten Binärformat von ArcSDE oder im OGCWKB-Format (OGC Well known Binary) – in einer Geodatabase im SQL Server bestehen aus einer Basistabelle sowie der zugehörigen Feature-Tabelle und Tabelle für den räumlichen Index, wie hier beschrieben.
-
Die Basistabelle
Die Basistabelle ist eine DBMS-Tabelle, in der Attribute gespeichert werden und die durch das Hinzufügen einer räumlichen Spalte für die Speicherung räumlicher Daten aktiviert wurde. Der Name der Basistabelle entspricht dem Namen der Feature-Class. In der folgenden Abbildung lautet der Name der Basistabelle PARCELS.
Bei der binären Schemaimplementierung enthält die räumliche Spalte in der Basistabelle (im obigen Beispiel das SHAPE-Feld in der Tabelle PARCELS) eine Feature-ID, die eindeutig auf die räumlichen Daten verweist. Durch die Feature-ID wird die Basistabelle mit der Feature-Tabelle und der Tabelle für den räumlichen Index verbunden.
In der räumlich aktivierten Basistabelle wird ein Datenbank-Trigger definiert, um die Beziehung zwischen den Datensätzen in der Basistabelle und der Feature-Tabelle zu verwalten.
Alle nicht versionierten Basistabellen mit Feature-Classes verfügen über einen Trigger für Lösch- und Aktualisierungsvorgänge sowie über einen Trigger für Einfügevorgänge. Der Trigger für Einfügevorgänge stellt sicher, dass die räumliche Spalte keine doppelten Werte in der Basistabelle enthält, während der Trigger für Lösch- und Aktualisierungsvorgänge Aktivität in der räumlichen Spalte der Basistabelle, der Feature-Tabelle und der Tabelle für den räumlichen Index verwaltet.
Diese Trigger werden automatisch beendet, wenn eine eigenständige Feature-Class oder eine Feature-Class in einem Feature-Dataset versioniert ist. Wenn die Registrierung einer Feature-Class als versioniert aufgehoben wird, werden sie neu erstellt. Wenn Sie einen dieser Trigger bearbeiten und die Feature-Class anschließend als mehrfach versioniert registrieren, wird der Trigger entfernt.
-
Die Feature-Tabelle (F<layer_id>)
In der Feature-Tabelle ist die Geometrie für jedes Feature gespeichert. Diese Tabelle wird durch die Zahl in der Spalte Layer_ID der Tabelle SDE_layers identifiziert. Die Beziehung zwischen der Basistabelle und der Feature-Tabelle wird durch die Feature-ID (oder FID) verwaltet. Dieser Schlüssel, der von ArcGIS verwaltet wird, ist für die räumliche Spalte eindeutig.
Definition der Feature-TabelleFeldname
Feldtyp
Beschreibung
Null?
fid
int
Primärschlüssel; eindeutige ID, über die die Feature-Tabelle mit der Basistabelle verbunden ist
NOT NULL
numofpts
int
Die Anzahl von Punkten, durch die das Feature definiert wird
NOT NULL
entity
smallint
Der in der räumlichen Spalte gespeicherte Geometrietyp (z. B. Punkt, Linie oder Zeichenfolge)
NOT NULL
eminx
float
Der minimale X-Wert in einem Feature; definiert zusammen mit "eminy", "emaxx" und "emaxy" den Envelope eines Features
NOT NULL
eminy
float
Der minimale Y-Wert in einem Feature; definiert zusammen mit "eminx", "emaxx" und "emaxy" den Envelope eines Features
NOT NULL
emaxx
float
Der maximale X-Wert in einem Feature; definiert zusammen mit "eminx", "eminy" und "emaxy" den Envelope eines Features
NOT NULL
emaxy
float
Der maximale Y-Wert in einem Feature; definiert zusammen mit "eminx", "eminy" und "emaxx" den Envelope eines Features
NOT NULL
eminz
float
Der minimale Z-Wert in einem dreidimensionalen Feature
emaxz
float
Der maximale Z-Wert in einem dreidimensionalen Feature
min_measure
float
Der minimale Messwert in einem Feature
max_measure
float
Der maximale Messwert in einem Feature
Fläche
float
Die Fläche der Geometrie
NOT NULL
len
float
Die Länge oder der Umfang der Geometrie
NOT NULL
Punkte
varbinarymax
Enthält den Datenstrom der Punktkoordinaten, die die Geometrie definieren
Wenn Features eingefügt oder aktualisiert werden, werden Werte für Spalten wie "extents" und "numofpts" automatisch neu berechnet.
-
Die räumliche Indextabelle (S<layer_id>)
Die räumliche Indextabelle ist der räumliche Index der binären Implementierung. In dieser Tabelle werden Verweise auf Shapes auf Grundlage eines einfachen Gitters gespeichert. Diese Tabelle wird durch die Zahl in der Spalte Layer_ID der Tabelle SDE_layers identifiziert.
Der räumliche Index enthält einen Eintrag für jede Shape- und Gitterzellenkombination, um räumliche Abfragen zu unterstützen. Ein Feature, das drei Gitterzellen schneidet, weist drei Einträge in der Tabelle auf. Wenn eine räumliche Abfrage ausgeführt wird, werden die Gitterzellen innerhalb des Suchbereichs identifiziert und verwendet, um eine Liste von Kandidaten-Geometrien zurückzugeben.
Definition der räumlichen IndextabelleFeldname
Feldtyp
Beschreibung
Null?
sp_fid
int
Primärschlüssel; eindeutige ID, über die die räumliche Indextabelle mit der Basistabelle verbunden ist
NOT NULL
gx
bigint
Der X-Wert des räumlichen Indexgitters
NOT NULL
gy
bigint
Der Y-Wert des räumlichen Indexgitters
NOT NULL
eminx
bigint
Der minimale X-Wert in einem Feature; definiert zusammen mit "eminy", "emaxx" und "emaxy" den Envelope eines Features
NOT NULL
eminy
bigint
Der minimale Y-Wert in einem Feature; definiert zusammen mit "eminx", "emaxx" und "emaxy" den Envelope eines Features
NOT NULL
emaxx
bigint
Der maximale X-Wert in einem Feature; definiert zusammen mit "eminx", "eminy" und "emaxy" den Envelope eines Features
NOT NULL
emaxy
bigint
Der maximale Y-Wert in einem Feature; definiert zusammen mit "eminx", "eminy" und "emaxx" den Envelope eines Features
NOT NULL
Alle Basistabellen mit Feature-Classes verfügen über einen Trigger für Lösch- und Aktualisierungsvorgänge (DELETE-UPDATE) sowie über einen Trigger für Einfügevorgänge (INSERT). Der INSERT-Trigger stellt sicher, dass die räumliche Spalte keine doppelten Werte in der Basistabelle enthält, während der DELETE-UPDATE-Trigger Aktivität in der räumlichen Spalte der Basistabelle, der Feature-Tabelle und der Tabelle für den räumlichen Index verwaltet. Diese Trigger werden automatisch beendet, wenn eine eigenständige Feature-Class oder eine Feature-Class in einem Feature-Dataset versioniert ist. Wenn die Registrierung einer Feature-Class als versioniert aufgehoben wird, werden sie neu erstellt. Wenn Sie einen dieser Trigger bearbeiten und die Feature-Class anschließend als versioniert registrieren, wird der Trigger entfernt. Es ist wichtig, dass Sie die referenzielle Integrität zwischen der Basistabelle und der Feature-Tabelle aufrecht erhalten. Sie sollten die Datensätze der Feature-Tabelle oder der räumlichen Indextabelle daher nicht bearbeiten. Der Basistabelle, der Feature-Tabelle und der Tabelle für den räumlichen Index wurden mehrere Indizes und Einschränkungen hinzugefügt, um die referenzielle Integrität sicherzustellen. Diese Indizes und die Einschränkungen werden jedoch entfernt, wenn Sie die Feature-Class in den Nur-Lade-E/A-Modus konvertieren, in dem das schnelle Einfügen von Daten in die Feature-Class möglich ist.
Wenn die Feature-Class wieder in den normalen E/A-Modus zurückgesetzt wird, d. h. in den Status, in dem Benutzer die Feature-Class über ArcGIS abfragen können, werden die Indizes erstellt und die Einschränkungen aktiviert. Die Konvertierung in den normalen E/A-Modus schlägt jedoch fehl, wenn keine eindeutigen Indizes für die räumliche Spalte der Basistabelle oder die FID-Spalte der Feature-Tabelle erstellt werden können. Sie schlägt außerdem auch dann fehl, wenn die räumliche Spalte der Basistabelle einen Wert enthält, der in der FID-Spalte der Feature-Tabelle nicht vorhanden ist. In diesem Fall wird ein Verweis auf den fehlerhaften Datensatz in der Basistabelle in die Tabelle SDE_EXCEPTIONS geladen.
-
Mit Feature-Classes verknüpfte Systemtabellen
Die Systemtabelle GDB_ITEMS in der Datenbank ist die primäre Tabelle zur Verfolgung von Datasets (z. B. Feature-Classes und Raster-Kataloge) in der Geodatabase.
View a diagram of a feature class using binary storage in SQL Server..
Hinweis:Sie benötigen Adobe Acrobat Reader, um die Datei zu öffnen.
Gestrichelte Linien geben implizite Beziehungen zwischen Spalten an, und durchgezogene Linien geben explizite Beziehungen zwischen Spalten an.
Die Datenbanknamensfelder in den Tabellen "GDB_ITEMS", "SDE_table_registry", "SDE_column_registry" und "SDE_layers" enthalten alle den gleichen Wert. Damit das Diagramm nicht zu unübersichtlich wird, wird die implizite Beziehung zwischen diesen Feldern jedoch nicht angezeigt. Ebenso enthalten die Besitzerfelder in diesen Tabellen alle den gleichen Wert, auch wenn die Beziehung in dem Diagramm nicht dargestellt wird.
Feature-Classes in einem XML-Dokument:
Feature-Classes werden innerhalb der DataElement-Elemente definiert. Die DataElement-Tags für eine Feature-Class werden auf den Typ esri:DEFeatureClass festgelegt. Innerhalb der DataElement-Tags einer Feature-Class befinden sich weitere Elemente zur Definition der Feature-Class, z. B. "Field", "Domain", "ConfigurationKeyword" und "SpatialReference".
Im Folgenden ist ein Teil des XML-Dokuments für die Parcels-Feature-Class zu sehen.
<DataElement xsi:type="esri:DEFeatureClass">
<CatalogPath>/V=dbo.DEFAULT/FC=geodata.SASHA.Parcels</CatalogPath>
<Name>geodata.SASHA.Parcels</Name>
<DatasetType>esriDTFeatureClass</DatasetType>
<DSID>22</DSID>
<Versioned>false</Versioned>
<CanVersion>true</CanVersion>
<ConfigurationKeyword/>
<HasOID>true</HasOID>
<OIDFieldName>objectid</OIDFieldName>
<Fields xsi:type="esri:Fields">
<FieldArray xsi:type="esri:ArrayOfField">
<Field xsi:type="esri:Field">
<Name>objectid</Name>
<Type>esriFieldTypeOID</Type>
<IsNullable>false</IsNullable>
<Length>4</Length>
<Precision>10</Precision>
<Scale>0</Scale>
<Required>true</Required>
<Editable>false</Editable>
<AliasName>OBJECTID</AliasName>
<ModelName>OBJECTID</ModelName>
</Field>
Alle anderen Elemente zur Definition der Feature-Class
</DataElement>