geography (Transact-SQL)

Der Räumlichkeitsdatentyp geography wird als .NET CLR-Datentyp (Common Language Runtime) in SQL Server implementiert. Dieser Typ stellt Daten in einem Erdkugel-Koordinatensystem dar. Der geography-Datentyp in SQL Server speichert ellipsenähnliche (Erdkugel-)Daten, wie z. B. GPS-Breiten- und Längenkoordinaten.

SQL Server 2008 unterstützt einen Satz von Methoden für den räumlichen geography-Datentyp. Dazu gehören Methoden für geography, die im OGC-Standard (Open Geospatial Consortium) sowie in einer Gruppe von Microsoft-Erweiterungen dieses Standards definiert sind.

Weitere Informationen zu Methoden für den räumlichen geography-Datentyp finden Sie in der geography-Datentyp-Methodenverweis.

Registrieren des geography-Datentyps

Der geography-Typ ist vordefiniert und in jeder Datenbank verfügbar. Sie können Tabellenspalten des geography-Typs in der gleichen Weise erstellen und geography-Daten in der gleichen Weise verwenden wie andere vom System bereitgestellte Typen.

Beispiele

Die folgenden Beispiele zeigen, wie Geografiedaten hinzugefügt und abgefragt werden. Im ersten Beispiel wird eine Tabelle mit einer Identitätsspalte und der geography-Spalte GeogCol1 erstellt. Eine dritte Spalte rendert die geography-Spalte als Darstellung im Open Geospatial Consortium (OGC) WKT-Format und verwendet die STAsText()-Methode. Dann werden zwei Zeilen eingefügt: Eine enthält eine LineString-Instanz des Typs geography und die andere eine Polygon-Instanz.

IF OBJECT_ID ( 'dbo.SpatialTable', 'U' ) IS NOT NULL 
    DROP TABLE dbo.SpatialTable;
GO

CREATE TABLE SpatialTable 
    ( id int IDENTITY (1,1),
    GeogCol1 geography, 
    GeogCol2 AS GeogCol1.STAsText() );
GO

INSERT INTO SpatialTable (GeogCol1)
VALUES (geography::STGeomFromText('LINESTRING(47.656 -122.360, 47.656 -122.343)', 4326));

INSERT INTO SpatialTable (GeogCol1)
VALUES (geography::STGeomFromText('POLYGON((47.653 -122.358, 47.649 -122.348, 47.658 -122.348, 47.658 -122.358, 47.653 -122.358))', 4326));
GO

Im zweiten Beispiel werden mithilfe der STIntersection()-Methode die Punkte zurückgegeben, an denen die beiden zuvor eingegebenen geography-Instanzen sich schneiden.

DECLARE @geog1 geography;
DECLARE @geog2 geography;
DECLARE @result geography;

SELECT @geog1 = GeogCol1 FROM SpatialTable WHERE id = 1;
SELECT @geog2 = GeogCol1 FROM SpatialTable WHERE id = 2;
SELECT @result = @geog1.STIntersection(@geog2);
SELECT @result.STAsText();