Tipos espaciales: geography

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

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

SQL Server admite un conjunto de métodos para el tipo de datos espacial geography. Se incluyen los métodos de geography definidos por el estándar Open Geospatial Consortium (OGC) y un conjunto de extensiones de Microsoft a dicho estándar.

La tolerancia de error para los métodos geography puede ser de hasta 1,0e-7 * extensiones. Las extensiones hacen referencia a la distancia máxima aproximada entre los puntos del objeto 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 el sistema. Se puede utilizar en columnas calculadas persistentes y no persistentes.

Ejemplos

A. Mostrar cómo agregar y consultar datos geography

En los ejemplos siguientes se muestra cómo agregar y consultar datos geography. 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 de LineString de geographyy 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(-122.360 47.656, -122.343 47.656 )', 4326));  
  
INSERT INTO SpatialTable (GeogCol1)  
VALUES (geography::STGeomFromText('POLYGON((-122.358 47.653 , -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))', 4326));  
GO  

B. Devolver la intersección de dos instancias de geography

En el ejemplo siguiente se 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();  

C. Usar geography en una columna calculada

En el ejemplo siguiente se crea una tabla con una columna calculada persistente mediante un tipo geography.

IF OBJECT_ID ( 'dbo.SpatialTable', 'U' ) IS NOT NULL   
    DROP TABLE dbo.SpatialTable;  
GO  
  
CREATE TABLE SpatialTable  
(  
    locationId int IDENTITY(1,1),  
    location geography,  
    deliveryArea as location.STBuffer(10) persisted  
);  

Consulte también

Datos espaciales (SQL Server)