Exportieren (0) Drucken
Alle erweitern

geometry (Transact-SQL)

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 2008 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.

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.

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 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

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();

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2015 Microsoft