Räumliche SQL Server-Datentypen und ArcGIS

Geodatabases unterstützen das Speichern von Vektordaten mithilfe der Microsoft-Datentypen "geometry" und "geography". Diese Typen sind in SQL Server verfügbar und erfordern keine separate Installation. Sie haben außerdem die Möglichkeit, Datenbanktabellen, die Spalten vom Typ "Geometry" oder "Geography" enthalten, über ArcGIS aufzurufen.

Verwenden Sie den Geometriespeichertyp mit ArcGIS, wenn Folgendes zutrifft:

  • Das Koordinatensystem, das Sie verwenden möchten, ist kein geographisches Koordinatensystem oder ist nicht im SQL Server-Data Dictionary definiert.
  • Sie möchten Z- oder M-Werte mit dem Shape speichern.

Verwenden Sie den Geographiespeichertyp mit ArcGIS, wenn Folgendes zutrifft:

  • Das Koordinatensystem, das Sie verwenden möchten, ist im SQL Server-Data Dictionary definiert.
  • Ihre Daten decken große räumliche Ausdehnungen ab und Sie müssen SQL-Flächen- und -Längenberechnungen verwenden.

    Die SQL-Flächen und -Längenberechnungen, die Linieninterpolation für große Ellipsen verwenden, können sich deutlich von der Planar-Linieninterpolation über große räumliche Ausdehnungen unterscheiden.

  • Sie müssen die Linieninterpolation für große Ellipsen für räumliche SQL-Abfragen verwenden.

Verwenden von Konfigurationsschlüsselwörtern zum Angeben räumlicher Datentypen

Standardmäßig verwenden Geodatabases in SQL Server den Microsoft geometry-Typ. Wenn Sie den geography-Typ für die Speicherung in Geodatabases in SQL Server verwenden möchten, müssen Sie einen der folgenden Schritte ausführen:

  • Ändern Sie den Konfigurationsparameter GEOMETRY_STORAGE des Konfigurationsschlüsselworts DEFAULTS DBTUNE in GEOGRAPHY. Sie sollten nur den Parameter GEOMETRY_STORAGE unter dem Schlüsselwort DEFAULTS ändern, wenn die Mehrzahl der Benutzer zumeist Geography für ihre Daten verwendet.
  • Geben Sie ein Konfigurationsschlüsselwort an, das einen GEOMETRY_STORAGE-Konfigurationsparameter von GEOGRAPHY bezeichnet, wenn Sie Feature-Classes erstellen. Falls nur einige der Daten im Geography-Typ gespeichert werden, legen Sie ein separates Schlüsselwort fest, wenn die Feature-Class erstellt wird. Das Schlüsselwort "GEOGRAPHY" wird bereitgestellt, Sie können jedoch auch ein eigenes benutzerdefiniertes Schlüsselwort erstellen.

Wählen Sie beim Erstellen von Feature-Classes in einer SQL Server-Datenbank (nicht in einer Geodatabase) das Schlüsselwort "geometry" oder "geography" aus.

Registrieren einer vorhandenen räumlichen Tabelle in der Geodatabase

Wenn Sie mit einer Anwendung eines Drittanbieters oder mit SQL Tabellen erstellt haben, die Spalten mit räumlichen Datentypen von SQL Server enthalten, können Sie diese Tabellen in der Geodatabase registrieren, um die Geodatabase-Funktionalität (z. B. Beziehungsklassen, Topologie, geometrische Netze, Parcel-Fabrics, Terrains oder Schemas) nutzen oder Subtypes, Standardwerte, Domänen oder Validierungsregeln verwenden zu können. Hierzu müssen die Tabellen die folgenden Voraussetzungen erfüllen:

  • Der Benutzer, von dem die Tabelle registriert wird, muss deren Besitzer sein.
  • Die Tabelle muss eine einzelne räumliche Spalte vom Typ "geometry" oder "geography" enthalten.
  • Alle Shapes in der Spalte müssen den gleichen räumlichen Datentyp (Punkte, Linien oder Polygone, Multipoints, Multilinestrings oder Multipolygone) aufweisen.

    Das Hinzufügen von Shapes eines anderen Typs zu der Spalte mittels SQL, nachdem Sie die Tabelle in der Geodatabase registriert haben, wird ebenfalls nicht unterstützt und führt zu einem unvorhersehbaren Verhalten der Feature-Class.

  • Alle Shapes in der Spalte müssen dieselbe Raumbezugs-ID (SRID) aufweisen.
  • Die bei der Registrierung angegebene SRID muss in der Systemtabelle "SDE_spatial_references" enthalten sein. Wenn dies nicht der Fall ist, muss die Projektion bei der Registrierung definiert werden.
  • Wenn die Tabelle einen Primärschlüssel enthält, muss sie gruppiert sein.
Hinweis:

Durch die Aktivierung einer Geodatabase in einer vorhandenen Datenbank werden vorhandene Tabellen nicht automatisch in der Geodatabase registriert. Alle Tabellen oder Feature-Classes, die Bestandteil der Geodatabase sein sollen, müssen getrennt in der Geodatabase registriert werden.

Erstellen eines räumlichen Index

SQL Server erfordert einen Primärschlüssel für die Tabelle, damit ein räumlicher Index erstellt werden kann.

In ArcGIS

Wenn Sie mit ArcGIS eine Feature-Class mit einer Geometry- oder einer Geography-Spalte erstellen, erstellt ArcGIS standardmäßig einen gruppierten Primärschlüssel für die ObjectID-Spalte der Business-Tabelle. Als Nächstes erstellt ArcGIS einen räumlichen Index anhand von SQL Server-Standardwerten. Wenn die Feature-Class als versioniert registriert ist, werden ein gruppierter Primärschlüssel für die ObjectID- und State-ID-Spalte der Adds-Tabelle sowie ein räumlicher Index erstellt.

ArcGIS berechnet den Rahmen der Feature-Class mit einer räumlichen Geometry- oder Geography-Spalte als Ausdehnung der zu indizierenden Daten. Alle Features außerhalb dieses Bereichs werden nicht indiziert. Sie werden jedoch in räumlichen Abfragen zurückgegeben. Wenn die Feature-Class-Ausdehnung nicht festgelegt wird, wird der maximale Koordinatenbereich für das Raumbezugssystem der Feature-Class als umgebendes Rechteck verwendet. Sie können eine Feature-Class-Ausdehnung über das Dialogfeld Eigenschaften: Feature-Class festlegen oder neu berechnen. Wenn die Feature-Class sich in einer Geodatabase befindet, wird das umgebende Rechteck basierend auf der aktuellen Ausdehnung angepasst, sobald der räumliche Index gelöscht und neu erstellt wird.

Außerhalb von ArcGIS

Für räumliche Tabellen, die außerhalb von ArcGIS erstellt wurden, z. B. mit SQL, müssen Sie in der Tabelle einen Primärschlüssel und mit SQL einen räumlichen Index erstellen. Nachfolgend ist die SQL-Syntax zum Erstellen eines räumlichen Indexes für eine Tabelle dargestellt, die eine Geometry-Spalte enthält:

CREATE SPATIAL INDEX <index_name>
 ON <table> (<spatial column>)
 USING GEOMETRY_GRID
 WITH (
  BOUNDING_BOX = minx,miny,maxx,maxy),
  GRIDS = (low|medium|high, low|medium|high, low|medium|high, low|medium|high), 
  CELLS_PER_OBJECT = n,
  <other regular btree index options like filegroups, fill factors, etc>
 )

Anhand der folgenden Syntax wird ein räumlicher Index für eine Geography-Spalte erstellt:

CREATE SPATIAL INDEX <index_name>
 ON <table> (<spatial column>)
 USING GEOGRAPHY_GRID
 WITH (
  GRIDS = (low|medium|high, low|medium|high, low|medium|high, low|medium|high),
  CELLS_PER_OBJECT = n,
  <other regular btree index options like filegroups, fill factors, etc>
 )

Für die Speicherung zusätzlicher geometrischer Elemente fügt ArcGIS eine Spalte hinzu.

Die Typen "Geometry" und "Geography" können nicht alle Typen von geometrischen Elementen speichern, die von Geodatabases unterstützt werden müssen. Wenn Sie also eine Feature-Class erstellen oder registrieren, die in einer Geodatabase in SQL Server den Speichertyp "Geometry" oder Geography" verwendet, wird die Business-Tabelle in ArcGIS um eine Spalte erweitert, um diese zusätzlichen geometrischen Elemente aufnehmen zu können. Der Name der Spalte lautet gdb_geomattr_data. Zu den zusätzlichen geometrischen Elementen gehören folgende:

  • parametrische Objekte, z. B. mit erweiterten Bearbeitungswerkzeugen erstellte Kreisbögen und Bézierkurven
  • PointIDs
  • Multipatch-Features
  • Oberflächenmuster aus der Erweiterung "ArcGIS Spatial Analyst"

Wenn ArcGIS erkennt, dass die Datenquelle diese zusätzlichen geometrischen Elemente enthält, wird eine einfache geometrische Repräsentation in der Spalte shape und die unveränderten Daten (darunter die zusätzlichen Elemente) werden in der Spalte gdb_geomattr_data gespeichert.

Bekannte Einschränkungen bei der Verwendung von SQL Server Geography mit ArcGIS

Die Messwerte für Geographiedaten liegen größtenteils in Metern vor. Die Maßeinheit wird in "sys.spatial_ref_system" angegeben. Überprüfen Sie dort, welche Einheit für den EPSG-Wert verwendet wird, der mit den Daten verknüpft ist.