geography (Transact-SQL)

El tipo de datos de geografía espacial, geography, se implementa como un tipo de datos de CLR (Common Language Runtime) de .NET en SQL Server. Este tipo representa los datos en un sistema de coordenadas de tierra redonda. El tipo de datos geography de SQL Server almacena datos elípticos (tierra redonda), como las coordenadas de latitud y longitud del sistema GPS.

SQL Server 2008 admite un conjunto de métodos para el tipo de datos espacial geography. Este métodos incluyen a su vez métodos de geography 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 geography, vea Referencia de los métodos del tipo de datos geography.

Registro del tipo de datos Geography

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

Ejemplos

En los ejemplos siguientes se muestra cómo agregar y consultar datos de geografía. En el primer ejemplo se crea una tabla con una columna de identidad y una columna de tipo geography, GeogCol1. Una tercera columna representa la columna de tipo geography 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 geography y otra 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),
    GeogCol1 geography, 
    GeogCol2 AS GeogCol1.STAsText() );
GO

INSERT INTO SpatialTable (GeogCol1)
VALUES (geography::STGeomFromText('LINESTRING(47.656 -122.360, 47.656 -122.343)', 4326));

INSERT INTO SpatialTable (GeogCol1)
VALUES (geography::STGeomFromText('POLYGON((47.653 -122.358, 47.649 -122.348, 47.658 -122.348, 47.658 -122.358, 47.653 -122.358))', 4326));
GO

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

DECLARE @geog1 geography;
DECLARE @geog2 geography;
DECLARE @result geography;

SELECT @geog1 = GeogCol1 FROM SpatialTable WHERE id = 1;
SELECT @geog2 = GeogCol1 FROM SpatialTable WHERE id = 2;
SELECT @result = @geog1.STIntersection(@geog2);
SELECT @result.STAsText();