Feature-Classes in einer Geodatabase in SQL Server

Eine Feature-Class ist eine Sammlung von geographischen Features, die denselben geometrischen Typ aufweisen (Punkt, Linie, Polygon, Multipoint, Annotation, Bemaßung 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 Desktop

Es gibt sieben Typen von Feature-Classes, die Sie in ArcGIS 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

Symbol für Point- oder Multipoint-Feature-Class

Point oder Multipoint

Symbol für Line-Feature-Class

Line

Symbol für Polygon-Feature-Class

Polygon

Symbol für Annotation-Feature-Class

Annotation

Symbol für Dimension-Feature-Class

Dimension

Symbol für Multipatch-Feature-Class

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.

HinweisHinweis:

Nachdem Sie Daten geladen oder den Befehl "sdesetup" ausgeführt haben, enthält die Datenbank zahlreiche i-Tabellen und gespeicherte Prozeduren. 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.

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.

Standardmäßig werden Features mit dem Datentyp "ArcSDE Compressed Binary" gespeichert.

Die Basistabelle und die f- und die i-Tabellen für eine Feature-Class in SQL Server
  • 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 mehrfach 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 ArcSDE verwaltet wird, ist für die räumliche Spalte eindeutig.

    Definition der Feature-Tabelle

    Feldname

    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 Indextabelle

    Feldname

    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 mehrfach 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..

    HinweisHinweis:

    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.

Mit den Datentypen "geometry"oder "geography" von Microsoft in einer SQL Server-Datenbank gespeicherte Feature-Classes

Ab ArcGIS 9.3 können in einer SQL Server 2008-Datenbank gespeicherte Geodatabases die Microsoft-Datentypen "geometry" und "geography" für die Speicherung von Features verwenden. Feature-Classes, die einen dieser Speichertypen verwenden, verfügen zudem über eine Basistabelle, wie im vorherigen Abschnitt beschrieben. Bei diesen Speichertypen enthält die Basistabelle jedoch eine Spalte von Typ GEOMETRY oder GEOGRAPHY, in der die Feature-Class-Geometrie gespeichert wird. Es gibt keine zugeordnete Feature-Tabelle.

Feature-Class-Tabellen, die den Speichertyp "geometry" oder "geography" verwenden, verfügen zudem über zugehörige Systemtabellen und verknüpfte Sichten.

View a diagram of a feature class using SQL Server geometry or geography storage..

HinweisHinweis:

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 in ArcGIS 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.

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>

3/6/2012