Introducción al tipo de datos Geometry

El tipo de datos espacial plano, geometry, se implementa como un tipo de datos CLR (Common Language Runtime) en SQL Server. Este tipo representa los datos en un sistema de coordenadas euclidiano (plano).

Registro del tipo de datos Geometry

El tipo geometry está predefinido y está disponible en cada base de datos. Puede crear columnas de tabla de tipo geometry y operar con los datos geometry de la misma manera que con los demás tipos CLR.

Ejemplos

En los dos ejemplos siguientes se muestra cómo agregar y consultar datos de geometría. En el primer ejemplo se crea una tabla con una columna de identidad y una columna de tipo geometry, GeomCol1. Una tercera columna representa la columna de tipo geometry en su representación Well-Known Text (WKT) de Open Geospatial Consortium (OGC) y utiliza el método STAsText(). A continuación, se insertan dos filas: una que contiene una instancia LineString de geometry y una que contiene una instancia de Polygon.

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

El segundo ejemplo utiliza el método STIntersection() para devolver los puntos de intersección de las dos instancias de geometry insertadas previamente.

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