Creación, construcción y consulta de instancias de Geography

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

El tipo de datos espaciales geography, geography, representa los datos en un sistema de coordenadas de tierra redonda. Implementan este tipo como un tipo de datos .NET en de Common Language Runtime (CLR) en SQL Server. El tipo de datos SQL Server geography almacena datos elipsoidales (globo), como coordenadas de latitud y longitud de GPS.

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.

Crear o construir una instancia de geography

Crear una instancia de geography a partir de una instancia existente

El tipo de datos geography proporciona numerosos métodos integrados que puede usar para crear nuevas instancias de geography basadas en instancias existentes.

Crear un búfer alrededor de un objeto geography
STBuffer (tipo de datos geography)

Para crear un búfer alrededor de un objeto geography, permitiendo una tolerancia
BufferWithTolerance (tipo de datos geography)

Crear una geografía a partir de la intersección de dos instancias de geografía
STIntersection (tipo de datos geography)

Crear una geografía a partir de la unión de dos instancias de geografía
STUnion (tipo de datos geography)

Para crear un objeto geography a partir de los puntos en los que un objeto geography no se superpone a otro
STDifference (tipo de datos geography)

Construir una instancia de geography a partir de datos Well-Known Text

El tipo de datos geography proporciona varios métodos integrados que generan un objeto geography a partir de la representación WKT de Open Geospatial Consortium (OGC). La norma WKT consiste en una cadena de texto que permite intercambiar datos de geography de forma textual.

Para construir cualquier tipo de instancia de geography a partir de datos WKT
STGeomFromText (tipo de datos geography)

Parse (tipo de datos geography)

Para construir una instancia de geography de tipo Point a partir de datos WKT
STPointFromText (tipo de datos geography)

Para construir una instancia de geography de tipo MultiPoint a partir de datos WKT
STMPointFromText (tipo de datos geography)

Para construir una instancia de geography de tipo LineString a partir de datos WKT
STLineFromText (tipo de datos geography)

Para construir una instancia de geography de tipo MultiLineString a partir de datos WKT
STMLineFromText (tipo de datos geography)

Para construir una instancia de geography de tipo Polygon a partir de datos WKT
STPolyFromText (tipo de datos geography)

Para construir una instancia de geography de tipo MultiPolygon a partir de datos WKT
STMPolyFromText (tipo de datos geography)

Para construir una instancia de geography de tipo GeometryCollection a partir de datos WKT
STGeomCollFromText (tipo de datos geography)

Construir una instancia de geography a partir de datos Well-Known Binary

WKB es un formato binario especificado por OGC que permite intercambiar datos de tipo Geography entre una aplicación cliente y una base de datos SQL. Las funciones siguientes aceptan datos WKB para construir las instancias de geography:

Para construir cualquier tipo de instancia de geography a partir de datos WKB
STGeomFromWKB (tipo de datos geography)

Para construir una instancia de geography de tipo Point a partir de datos WKB
STPointFromWKB (tipo de datos geography)

Para construir una instancia de geography de tipo MultiPoint a partir de datos WKB
STMPointFromWKB (tipo de datos geography)

Para construir una instancia de geography de tipo LineString a partir de datos WKB
STLineFromWKB (tipo de datos geography)

Para construir una instancia de geography de tipo MultiLineString a partir de datos WKB
STMLineFromWKB (tipo de datos geography)

Para construir una instancia de geography de tipo Polygon a partir de datos WKB
STPolyFromWKB (tipo de datos geography)

Para construir una instancia de geography de tipo MultiPolygon a partir de datos WKB
STMPolyFromWKB (tipo de datos geography)

Para construir una instancia de geography de tipo GeometryCollection a partir de datos WKB
STGeomCollFromWKB (tipo de datos geography)STGeomCollFromWKB (tipo de datos geography)

Para construir una instancia de geography a partir de datos de texto GML

El tipo de datos geography proporciona un método que genera una instancia de geography a partir de GML, una representación XML de una instancia de geography . SQL Server admite un subconjunto de GML.

Para obtener más información sobre el lenguaje de marcado de geografía, vea las especificaciones de OGC: OGC Specifications, Geography Markup Language.

Para construir cualquier tipo de instancia de geography a partir de datos de GML
GeomFromGML (tipo de datos geography)

Devolver Well-Known Text y Well-Known Binary a partir una instancia de geography

Puede usar los métodos siguientes para devolver el formato WKT o WKB de una instancia de geography :

Para devolver la representación WKT de una instancia de geography
STAsText (tipo de datos geography)

ToString (tipo de datos geography)

Para devolver la representación WKT de una instancia de geography, incluidos cualesquiera valores Z y M.
AsTextZM (tipo de datos geography)

Para devolver la representación WKB de una instancia de geography
STAsBinary (tipo de datos geography)

Para devolver la representación GML de una instancia de geography
AsGml (tipo de datos geography)

Consultar propiedades y comportamientos de instancias de geography

Todas las instancias de geography tienen varias propiedades que se pueden recuperar a través de los métodos que SQL Server proporciona. Los temas siguientes definen las propiedades y los comportamientos de los tipos geography y los métodos para consultar cada uno.

Validez, tipo de instancia e información de GeometryCollection

Una vez construida una instancia de geography , puede usar los métodos siguientes para devolver el tipo de instancia o, si es una instancia de GeometryCollection , devolver una instancia de geography específica.

Para devolver el tipo de instancia de una geografía
STGeometryType (tipo de datos geography)

Para determinar si una geografía es un tipo de instancia determinado
InstanceOf (tipo de datos geography)

Para determinar si el formato de una instancia de geografía es correcto de acuerdo con su tipo de instancia
STNumGeometries (tipo de datos geography)

Para devolver un objeto geography específico de una instancia de GeometryCollection
STGeometryN (tipo de datos geography) STGeometryN (tipo de datos geography)

Número de puntos

Todas las instancias de geography no vacías están compuestas de puntos. Estos puntos representan las coordenadas de latitud y longitud de la tierra en la que se dibujan las instancias de geography . El tipo de datos geography proporciona numerosos métodos integrados para consultar los puntos de una instancia.

Devolver el número de puntos que comprende una instancia
STNumPoints (tipo de datos geography)

Devolver un punto concreto en una instancia
STPointN (tipo de datos geometry)

Devolver el punto inicial de una instancia
STStartPoint (tipo de datos geography)

Devolver el punto final de una instancia
STEndpoint (tipo de datos geography)

Dimensión

Una instancia de geography no vacía puede ser no dimensional, unidimensional o bidimensional. Las instancias de geography no dimensionales, como Point y MultiPoint, no tienen longitud ni área. Los objetos unidimensionales, como LineString, CircularString, CompoundCurvey MultiLineString, tienen longitud. Las instancias bidimensionales, como Polygon, CurvePolygony MultiPolygon, tienen área y longitud. Las instancias vacías informan de una dimensión de -1 y GeometryCollection informa de la dimensión máxima de su contenido.

Devolver la dimensión de una instancia
STDimension (tipo de datos geography)

Devolver la longitud de una instancia
STLength (tipo de datos geography)

Devolver el área de una instancia
STArea (tipo de datos geography)

Vacío

Una instancia emptygeography no tiene puntos. La longitud de las instancias de LineString, CircularString, CompoundCurvey MultiLineString vacías es 0. El área de las instancias de Polygon, CurvePolygon y MultiPolygon vacías es 0.

Para determinar si una instancia está vacía
STIsEmpty (tipo de datos geography)

Cierre

Una instancia de geographycerrada es una figura cuyos puntos de inicio y de finalización son los mismos. Las instanciasPolygon se consideran cerradas. Las instanciasPoint no son cerradas.

Un anillo es una instancia de LineString simple y cerrada.

Para determinar si una instancia está cerrada
STIsClosed (tipo de datos geography)

Para devolver el número de anillos en una instancia de Polygon
NumRings (tipo de datos geography)

Para devolver un anillo especificado de una instancia de Geography
RingN (tipo de datos geography)

Identificador de referencia espacial (SRID)

El identificador de referencia espacial (SRID) es un identificador que especifica en qué sistema de coordenadas elipsoidales está representada la instancia geography . No se pueden comparar dos instancias geography con SRID diferentes.

Para establecer o devolver el SRID de una instancia
STSrid (tipo de datos geography)

Esta propiedad se puede modificar.

Determinar las relaciones entre instancias de geography

El tipo de datos geography proporciona muchos métodos integrados que puede usar para determinar las relaciones entre dos instancias de geography .

Para determinar si dos instancias comprenden el mismo conjunto de puntos
STEquals (tipo de datos geometry)

Para determinar si dos instancias no son contiguas
STDisjoint (tipo de datos geometry)

Para determinar si dos instancias contienen puntos que forman una intersección
STIntersects (tipo de datos geometry)

Determinar los puntos en los que dos instancias tienen la intersección
STIntersection (tipo de datos geography)

Determinar la distancia más corta entre los puntos de dos instancias geográficas
STDistance (tipo de datos geometry)

Determinar la diferencia en puntos entre dos instancias geográficas
STDifference (tipo de datos geography)

Para obtener la diferencia simétrica, o puntos únicos, de una instancia de geography comparada con otra instancia
STSymDifference (tipo de datos geography)

Las instancias de geography deben usar SRID compatibles

SQL Server admite SRID basados en las normas de EPSG. Se debe usar un SID compatible con SQL Server para instancias de geography cuando se realicen cálculos o se usen los métodos con datos espaciales de geografía. El SRID debe coincidir con uno de los SRID mostrados en la vista de catálogo sys.spatial_reference_systems . Como se mencionó anteriormente, al realizar cálculos en sus datos espaciales usando el tipo de datos geography , sus resultados dependerán de qué elipsoide se usó en la creación de sus datos, ya que cada elipsoide está asignado a un identificador de referencia espacial concreto (SRID).

SQL Server usa el SRID predeterminado de 4326, que se asigna al sistema de referencia espacial WGS 84, al usar métodos en instancias de geography. Si usa datos de un sistema de referencia espacial distinto de WGS 84 (o SRID 4326), tendrá que determinar el SRID concreto para sus datos espaciales de geography.

Ejemplos

En los ejemplos siguientes se muestra cómo agregar y consultar datos geography.

Ejemplo A.

En este 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  

Ejemplo B.

En este ejemplo se usa 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();  

Consulte también

Datos espaciales (SQL Server)