Räumliche Typen - geometry (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

Der planare Typ für räumliche Daten, geometry, 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 zur geometry, die im OGC-Standard (Open Geospatial Consortium) und in einer Gruppe von Microsoft-Erweiterungen dieses Standards definiert sind.

Die Fehlertoleranz für die geometry-Methoden kann bis zu 1,0e-7 * Blöcke groß sein. Die Blöcke verweisen auf die ungefähre maximale Entfernung zwischen Punkten des geometry-Objekts.

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 persistierten und nicht persistierten 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 geometryund 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 persistierten 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  
)  

Weitere Informationen

Räumliche Daten (SQL Server)