ArcSDE und räumliche Datentypen von Microsoft

ArcSDE-Geodatabases unterstützen das Speichern von Vektordaten mithilfe der Microsoft-Datentypen "geometry" und "geography". Diese Typen sind in SQL Server 2008 verfügbar und erfordern keine separate Installation. Verwenden Sie diese Datentypen, wenn Sie mit SQL auf Ihre räumlichen Daten zugreifen möchten.

Der Microsoft-Datentyp "geometry" ähnelt vorhandenen räumlichen GIS-Datentypen: Er verwendet Koordinaten in einer beliebigen Ebene, z. B. definierte Projektionen.

Der Microsoft-Datentyp "geography" wird für Daten auf einem Sphäroid verwendet, die mit Breitengrad- und Längengradkoordinaten gespeichert werden.

Die beiden Typen unterscheiden sich hinsichtlich der verwendeten Methode für räumliche Berechnungen. Weitere Informationen zu den räumlichen Datentypen von Microsoft finden Sie in der SQL Server 2008-Dokumentation.

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

Standardmäßig verwenden ArcSDE-Geodatabases in SQL Server den Datentyp "ArcSDE Compressed Binary". Wenn Sie stattdessen die Microsoft-Datentypen "geometry" oder "geography" für die Speicherung verwenden möchten, müssen Sie entweder (1) den Parameter GEOMETRY_STORAGE unterhalb des Konfigurationsschlüsselworts DEFAULTS in der Tabelle "SDE_dbtune" in GEOMETRY bzw. GEOGRAPHY ändern oder (2) beim Erstellen von Feature-Classes ein Konfigurationsschlüsselwort angeben, das für den Parameter GEOMETRY_STORAGE den Wert GEOMETRY bzw. GEOGRAPHY festlegt. Sie sollten den Parameter GEOMETRY_STORAGE unterhalb des Schlüsselworts DEFAULTS nur ändern, wenn die Mehrheit der Benutzer hauptsächlich den Datentyp "geometry" oder "geography" verwendet. Wenn nur einige wenige Daten im Datentyp "geometry" oder "geography" gespeichert werden, sollten Sie beim Erstellen der Feature-Class ein separates Schlüsselwort festlegen. Es werden zwei Schlüsselwörter, GEOMETRY und GEOGRAPHY, bereitgestellt, Sie können jedoch auch eigene benutzerdefinierte Schlüsselwörter erstellen.

Voraussetzungen zum Verwenden der Microsoft-Datentypen "geometry" oder "geography" in einer Geodatabase

Wenn Sie mithilfe einer Drittanbieteranwendung oder SQL Tabellen erstellt haben, die Spalten von Typ "Geometry" oder "Geography" von Microsoft enthalten, können Sie diese Tabellen in ArcSDE und in der Geodatabase registrieren, um die Geodatabase-Funktionalität zu nutzen. Hierzu müssen die Tabellen bestimmte Voraussetzungen erfüllen:

Registrieren einer vorhandenen Geography- oder Geometry-Tabelle in ArcSDE und in der Geodatabase

Verwenden Sie zum Registrieren einer Tabelle in ArcSDE den Befehl "sdelayer" zusammen mit der Operation "register".

Im nachfolgenden Beispiel wird die Tabelle "spdata " mit Polygongeometrien (–e a) in einer Geometry-Spalte namens "features" registriert. Die Tabelle verfügt über die Ganzzahlspalte "fid". Diese wird als Spalte für die eindeutige Feature-Kennung verwendet, deren Werte von ArcSDE (–C fid,SDE) verwaltet werden. Die Raumbezugs-ID (SRID), die zum Registrieren des Layers verwendet wurde, ist 5 (‑R 5). Dies ist die SRID in der Tabelle "SDE_spatial_references".

sdelayer –o register –l spdata,features –e a –C fid,SDE –t GEOMETRY
–R 5 –i sde:sqlserver:tornado –D agency1 –u vijay –p open.septagenarian

Wenn der benötigte Raumbezug in der Tabelle "SDE_spatial_references" nicht vorhanden ist, können Sie eine Template-Feature-Class in ArcCatalog erstellen, die den gewünschten Raumbezug verwendet. Fragen Sie dann die Tabelle "SDE_spatial_references" ab, um zu sehen, welche SRID ihr zugewiesen wurde.

Für eine sde-Schema-Geodatabase

SELECT * FROM sde.SDE_spatial_references

Für eine dbo-Schema-Geodatabase

SELECT * FROM dbo.SDE_spatial_references

Suchen Sie den mit der Template-Feature-Class hinzugefügten Raumbezug, und identifizieren Sie die SRID-Nummer. Beim Registrieren von anderen Tabellen, die Geometry-Spalten enthalten und sich im gleichen Koordinatenbezugssystem befinden, können Sie dann diese Nummer zusammen mit der Option "–R" verwenden.

Sie können anstelle der Option ‑R auch eine Projektion-ID mit der Option –G angeben. Wenn Sie Tabellen mit einer Geography-Spalte registrieren, muss die verwendete Project-ID mit einer der SRIDs übereinstimmen, die in der SQL Server-Tabelle "sys.spatial_references_systems" gespeichert sind.

sdelayer –o register –l spgeogdata,features –e a –C fid,SDE –t GEOGRAPHY
–G 4326  –i sde:sqlserver:tornado –D agency1 –u vijay –p open.septagenarian

Unabhängig vom Speichertyp für räumliche Daten erfordert die Registrierung von Tabellen, die eine große Anzahl von Datensätzen enthalten, möglicherweise weniger Zeit, wenn Sie die Zeilen-ID-Spalte als vom Benutzer verwaltet registrieren. Esri rät jedoch von der Verwendung benutzerverwalteter Zeilen-IDs ab.

sdelayer –o register –l polsamples,shape –e p –C fid,USER –t GEOMETRY
–R 300 –i 6543 –D agency1 –u guadalupe –p overnout

Wenn Sie die Feature-ID-Spalte als vom Benutzer verwaltet registrieren und dann die Feature-Class in der Geodatabase registrieren, fügt ArcGIS eine zusätzliche Feature-ID-Spalte mit dem Namen "object_ID" hinzu. Die Werte in dieser Spalte werden von ArcGIS verwaltet. Wenn die Tabelle eine große Anzahl von Datensätzen enthält, kann das Hinzufügen dieser zusätzlichen "object_ID"-Spalte einige Zeit in Anspruch nehmen.

Durch Ausführung des Befehls "sdelayer –o register" wird die Tabelle in ArcSDE registriert. Hierdurch wird den Systemtabellen "SDE_layers", "SDE_geometry_columns", "SDE_column_registry" und "SDE_table_registry" in der Geodatabase ein Datensatz hinzugefügt. Es wird kein räumlicher Index erstellt. Mithilfe von SQL können Sie räumliche Indizes für Tabellen erzeugen, die außerhalb von ArcGIS erstellt wurden, und die Tabellen dann in ArcSDE registrieren. Alternativ können Sie den räumlichen Index auch nach dem Registrieren der Tabelle in ArcSDE erstellen. Verwenden Sie hierzu den Befehl "sdelayer" mit der entsprechenden Operation "alter", um die Layer-Ausdehnung zu definieren. Verwenden Sie dann die Operation "load_only_io", um den Nur-Lade-E/A-Modus, um die Tabelle zu aktivieren, und die Operation "normal_io", um die Tabelle wieder in den normalen E/A-Modus zurückzusetzen, wodurch automatisch ein räumlicher Index erstellt wird. Wenn Sie anschließend den Layer in der Geodatabase registrieren, können Sie mit ArcCatalog einen räumlichen Index erstellen. Wenn Sie den räumlichen Index mithilfe von "sdelayer" oder ArcCatalog erstellen, werden die in der Tabelle "SDE_dbtune" angegebenen Parameter für den räumlichen Index und die aktuelle Ausdehnung der Daten im Layer verwendet.

Weitere Informationen zum Befehl "sdelayer" finden Sie in der ArcSDE Administration Command Reference.

Wenn für die Feature-Class Geodatabase-Funktionen wie Beziehungsklassen, Topologie, geometrische Netzwerke, Cadastral Fabrics, Terrains und Schemas oder Subtypes, Standardwerte, Domänen oder Validierungsregeln verwendet werden sollen, müssen Sie diese ebenfalls in der Geodatabase registrieren.

Sie können die Datasets in ArcCatalog wie folgt registrieren:

  1. Starten Sie ArcCatalog.
  2. Stellen Sie eine Verbindung mit der Geodatabase her, die den zu registrierenden Layer enthält. Stellen Sie sicher, dass Sie die Verbindung als Besitzer des Layers herstellen.
  3. Klicken Sie mit der rechten Maustaste auf den Layer, den Sie in der Geodatabase registrieren möchten.
  4. Klicken Sie auf In Geodatabase registrieren.

Räumlichen Index erstellen

Eine Voraussetzung für das Erstellen eines räumlichen Indexes in SQL Server ist, dass die Tabelle einen Primärschlüssel enthält.

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- oder Geography-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>
)

Wenn Sie in ArcGIS einen Layer mit einer räumlichen Geometry- oder Geography-Spalte erstellen, wird das umgebende Rechteck der Feature-Class als Ausdehnung der zu indizierenden Daten berechnet. Alle Features außerhalb dieses Bereichs werden nicht indiziert. Sie werden jedoch weiterhin in räumlichen Abfragen zurückgegeben. Wenn die Layer-Ausdehnung nicht festgelegt wird, wird der maximale Koordinatenbereich für das Raumbezugssystem des Layers als umgebendes Rechteck verwendet. Jedes Mal, wenn der Layer vom Nur-Lade-E/A-Modus in den normalen E/A-Modus wechselt, wird das umgebende Rechteck basierend auf der aktuellen Layer-Ausdehnung angepasst.

Darüber hinaus erzeugt ArcSDE beim Erstellen einer Feature-Class mit einer Geometry- oder Geography-Spalte in ArcGIS standardmäßig einen gruppierten Primärschlüssel für die Zeilen-ID-Spalte der Business-Tabelle. Anschließend wird ein räumlicher Index basierend auf den Werten für den Parameter B_MS_SPINDEX des Konfigurationsschlüsselworts in der Tabelle "SDE_dbtune" erstellt, die beim Erstellen der Feature-Class verwendet wurden. Wenn die Feature-Class als versioniert registriert ist, wird ein gruppierter Primärschlüssel für die Zeilen-ID- und Status-ID-Spalte der Adds-Tabelle erstellt. Der räumliche Index wird dann basierend auf den Werten für den Parameter A_MS_SPINDEX im Konfigurationsschlüsselwort erstellt, die beim Erstellen der Feature-Class verwendet wurden. Der Standardwert für beide Parameter lautet wie folgt:

GRIDS = (MEDIUM, MEDIUM, MEDIUM, MEDIUM), CELLS_PER_OBJECT = 16

Weitere Informationen zum Festlegen von Werten in der Tabelle "SDE_dbtune" finden Sie unter Ändern des Inhalts der Tabelle DBTUNE, nachdem sie erstellt wurde.

Bekannte Einschränkungen bei der Verwendung von SQL Server-Geographie mit einer ArcSDE-Geodatabase

Nachfolgend finden Sie eine Liste von Einschränkungen, die Sie beachten müssen, wenn Sie SQL Server-Geographiedaten in der ArcSDE-Geodatabase speichern:


3/6/2012