geometry (Transact-SQL)

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

SQL Server 2008 admite un conjunto de métodos para el tipo de datos espacial geometry. Este métodos incluyen a su vez métodos en geometry definidos por el estándar Open Geospatial Consortium (OGC) y un conjunto de extensiones de Microsoft para dicho estándar.

Para obtener más información sobre los métodos de tipos de datos espaciales de geometry, vea Referencia de los métodos del tipo de datos geometry.

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