Tipos espaciales: geometry (Transact-SQL)Spatial Types - geometry (Transact-SQL)

SE APLICA A: síSQL Server (a partir de 2008) síAzure SQL Database noAzure SQL Data Warehouse noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

El tipo de datos espaciales planares, geometry, se implementa como un tipo de datos CLR (Common Language Runtime) en SQL ServerSQL Server.The planar spatial data type, geometry, is implemented as a common language runtime (CLR) data type in SQL ServerSQL Server. Este tipo representa datos en un sistema de coordenadas euclídeo (plano).This type represents data in a Euclidean (flat) coordinate system.

SQL ServerSQL Server admite un conjunto de métodos para el tipo de datos espaciales geography.supports a set of methods for the geometry spatial data type. Este métodos incluyen a su vez métodos de geometry definidos por el estándar Open Geospatial Consortium (OGC) y un conjunto de extensiones de MicrosoftMicrosoft para dicho estándar.These methods include methods on geometry that are defined by the Open Geospatial Consortium (OGC) standard and a set of MicrosoftMicrosoft extensions to that standard.

La tolerancia de error para los métodos geometry puede ser de hasta 1,0e-7 * extensiones.The error tolerance for the geometry methods can be as large as 1.0e-7 * extents. Las extensiones hacen referencia a la distancia máxima aproximada entre los puntos del objeto geometry.The extents refer to the approximate maximal distance between points of the geometryobject.

Registrar el tipo de datos GeometryRegistering the geometry Type

El tipo geometry está predefinido y está disponible en cada base de datos.The geometry type is predefined and available in each database. 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.You can create table columns of type geometry and operate on geometry data in the same manner as you would use other CLR types. Se puede utilizar en columnas calculadas persistentes y no persistentes.Can be used in persisted and non-persisted computed columns.

EjemplosExamples

A.A. Mostrar cómo agregar y consultar datos de tipo geometryShowing how to add and query geometry data

En los dos ejemplos siguientes se muestra cómo agregar y consultar datos de geometry.The following two examples show how to add and query geometry data. En el primer ejemplo se crea una tabla con una columna de identidad y una columna de tipo geometry, GeomCol1.The first example creates a table with an identity column and a geometry column, 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 third column renders the geometry column into its Open Geospatial Consortium (OGC) Well-Known Text (WKT) representation, and uses the STAsText() method. A continuación se insertan dos filas: una que contiene una instancia de LineString de geometryy otra que contiene una instancia de Polygon .Two rows are then inserted: one row contains a LineString instance of geometry, and one row contains a Polygon instance.

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  

B.B. Devolver la intersección de dos instancias de geometryReturning the intersection of two geometry instances

En el segundo ejemplo se usa el método STIntersection() para devolver los puntos de intersección de las dos instancias de geometry insertadas previamente.The second example uses the STIntersection() method to return the points where the two previously inserted geometry instances intersect.

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

C.C. Usar geometry en una columna calculadaUsing geometry in a computed column

En el ejemplo siguiente se crea una tabla con una columna calculada persistente mediante un tipo geometry.The following example creates a table with a persisted computed column using a geometry type.

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

Consulte tambiénSee Also

Datos espaciales (SQL Server)Spatial Data (SQL Server)