Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der planare Typ geometry für räumliche Daten wird als CLR-Datentyp (Common Language Runtime) in SQL Server implementiert. Dieser Typ stellt Daten in einem euklidischen (flachen) Koordinatensystem dar.
SQL Server unterstützt einen Satz von Methoden für den räumlichen geometry-Datentyp. Dazu gehören Methoden für geometry, 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 geometry-Datentyp finden Sie in der geometry-Datentyp-Methodenverweis.
Registrieren des geometry-Datentyps
Der geometry-Typ ist vordefiniert und in jeder Datenbank verfügbar. Sie können Tabellenspalten des geometry-Typs in der gleichen Weise erstellen und geometry-Daten in der gleichen Weise verwenden wie andere CLR-Typen. Kann in permanenten und nicht permanenten berechneten Spalten verwendet werden.
Beispiele
A.Darstellung des Hinzufügens und Abfragens von Geometriedaten
Die folgenden zwei Beispiele zeigen, wie Geometriedaten hinzugefügt und abgefragt werden. Im ersten Beispiel wird eine Tabelle mit einer Identitätsspalte und der geometry-Spalte GeomCol1 erstellt. Eine dritte Spalte rendert die geometry-Spalte als Darstellung im Open Geospatial Consortium (OGC) WKT-Format und verwendet die STAsText()-Methode. Dann werden zwei Zeilen eingefügt: Eine Zeile enthält eine LineString-Instanz des Typs geometry 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),
GeomCol1 geometry,
GeomCol2 AS GeomCol1.STAsText() );
GO
INSERT INTO SpatialTable (GeomCol1)
VALUES (geometry::STGeomFromText('LINESTRING (100 100, 20 180, 180 180)', 0));
INSERT INTO SpatialTable (GeomCol1)
VALUES (geometry::STGeomFromText('POLYGON ((0 0, 150 0, 150 150, 0 150, 0 0))', 0));
GO
B.Zurückgeben der Schnittmenge von zwei geometry-Instanzen
Im zweiten Beispiel werden mithilfe der STIntersection()-Methode die Punkte zurückgegeben, an denen die beiden zuvor eingegebenen geometry-Instanzen sich schneiden.
DECLARE @geom1 geometry;
DECLARE @geom2 geometry;
DECLARE @result geometry;
SELECT @geom1 = GeomCol1 FROM SpatialTable WHERE id = 1;
SELECT @geom2 = GeomCol1 FROM SpatialTable WHERE id = 2;
SELECT @result = @geom1.STIntersection(@geom2);
SELECT @result.STAsText();
C.Verwenden des geometry-Typs in einer berechneten Spalte
Im folgenden Beispiel wird eine Tabelle mit einer permanenten berechneten Spalte mit einem geometry-Typ erstellt.
IF OBJECT_ID ( 'dbo.SpatialTable', 'U' ) IS NOT NULL
DROP TABLE dbo.SpatialTable;
GO
CREATE TABLE SpatialTable
(
locationId int IDENTITY(1,1),
location geometry,
deliveryArea as location.STBuffer(10) persisted
)