Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El tipo de datos espaciales planar, geometry
, representa los datos en un sistema de coordenadas euclidiana (plana). Este tipo se implementa como un tipo de datos de Common Language Runtime (CLR) en SQL Server.
El geometry
tipo 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 se usarían otros tipos CLR.
El tipo de datos geometry
(planar) admitido por SQL Server se ajusta a la Especificación de Características Simples para SQL del Open Geospatial Consortium (OGC), versión 1.1.0.
Para obtener más información sobre las especificaciones de OGC, consulte lo siguiente:
Especificaciones de OGC, acceso a características simple, parte 1: arquitectura común
Especificaciones de OGC, acceso a características simple, parte 2: opciones de SQL
SQL Server admite un subconjunto del estándar GML 3.1 existente que se define en el esquema siguiente: https://schemas.microsoft.com/sqlserver/profiles/gml/SpatialGML.xsd.
Creación o construcción de una nueva instancia de geometría
Creación de una nueva instancia de geometría a partir de una instancia existente
El geometry
tipo de datos proporciona numerosos métodos integrados que puede usar para crear nuevas geometry
instancias basadas en instancias existentes.
Para crear un búfer alrededor de una geometría
STBuffer (Tipo de Datos Geometría)
BufferWithTolerance (tipo de datos geometry)
Para crear una versión simplificada de una geometría
Reducir (Tipo de Datos Geometry)
Para crear la envolvente convexa de una geometría
STConvexHull (tipo de datos geometría)
Para crear una geometría a partir de la intersección de dos geometrías
STIntersection (Tipo de datos Geometry)
Para crear una geometría a partir de la unión de dos geometrías
STUnion (tipo de datos Geometry)
Para crear una geometría a partir de los puntos en los que una geometría no se superpone a otra
STDifference (tipo de dato de geometría)
Para crear una geometría a partir de los puntos en los que dos geometrías no se superponen
STSymDifference (tipo de dato geometry)
Para crear una instancia arbitraria de Point que se sitúa sobre una geometría existente
STPointOnSurface (tipo de datos geometría)
Construcción de una instancia de geometría a partir de la entrada de texto Well-Known
El geometry
tipo de datos proporciona varios métodos integrados que generan una geometría a partir de la representación WKT de Open Geospatial Consortium (OGC). El estándar WKT es una cadena de texto que permite intercambiar datos de geometría en formato textual.
Para construir cualquier tipo de instancia de geometría desde la entrada WKT
STGeomFromText (tipo de dato de geometría)
Analizar (tipo de datos geometría)
Para construir una instancia de punto de geometría a partir de la entrada WKT
STPointFromText (tipo de datos geometry)
Para construir una instancia de Geometry MultiPoint a partir de la entrada WKT
STMPointFromText (tipo de datos geometría)
Para construir una instancia de la geometría LineString a partir de los datos de entrada WKT
STLineFromText (Geometry Data Type)
Para construir una instancia de MultiLineString de geometría a partir de una entrada WKT
STMLineFromText (tipo de datos géometría)
Para construir una instancia de Geometry Polygon a partir de la entrada WKT
STPolyFromText (tipo de datos geometry)
Para construir una instancia de Geometry MultiPolygon a partir de la entrada WKT
STMPolyFromText (tipo de datos geometría)
Para crear una instancia de GeometryCollection a partir de una entrada WKT
STGeomCollFromText (tipo de datos geométrico)
Construcción de una instancia de geometry a partir de Well-Known entrada binaria
WKB es un formato binario especificado por open Geospatial Consortium (OGC) que permite geometry
intercambiar datos entre una aplicación cliente y una base de datos SQL. Las funciones siguientes aceptan la entrada WKB para construir geometrías:
Para construir una instancia de cualquier tipo de geometría a partir de entrada WKB
STGeomFromWKB (tipo de datos geométrico)
Para construir una instancia de geometry Point a partir de la entrada WKB
STPointFromWKB (Geometry Data Type)
Para construir una instancia de Geometry MultiPoint a partir de la entrada WKB
STMPointFromWKB (tipo de datos de geometría)
Para construir una instancia de geometría LineString a partir de una entrada WKB
STLineFromWKB (tipo de datos geometría)
Para construir una instancia de geometría MultiLineString a partir de una entrada WKB
STMLineFromWKB (tipo de datos geometry)
Para construir una instancia de Geometry Polygon a partir de la entrada WKB
STPolyFromWKB (tipo de dato geométrico)
Para construir una instancia de Geometry MultiPolygon a partir de la entrada WKB
STMPolyFromWKB (Geometry, tipo de datos)
Para construir una instancia geometry GeometryCollection a partir de la entrada WKB
STGeomCollFromWKB (tipo de datos geometría)
Construcción de una instancia de geometría a partir de la entrada de texto GML
El geometry
tipo de datos proporciona un método que genera una geometry
instancia de GML, una representación XML de objetos geométricos. SQL Server admite un subconjunto de GML.
Para construir cualquier tipo de instancia de geometry a partir de la entrada GML
GeomFromGml (tipo de datos geometría)
Devolver texto Well-Known y Well-Known binario desde una instancia de geometry
Puede usar los métodos siguientes para devolver el formato WKT o WKB de una geometry
instancia:
Para devolver la representación WKT de una instancia de geometry
STAsText (tipo de datos Geometry)
ToString (tipo de datos "geometry")
Para devolver la representación WKT de una instancia de geometría, incluidos los valores Z y M
AsTextZM (tipo de datos geometry)
Para obtener la representación WKB de una instancia de geometría
STAsBinary (geometry tipo de datos)
Para devolver una representación GML de una instancia de geometría
AsGml (Tipo de Datos Geometría)
Consultar las propiedades y los comportamientos de las instancias de geometría
Todas las geometry
instancias tienen una serie de propiedades que se pueden recuperar a través de métodos que proporciona SQL Server. En los temas siguientes se definen las propiedades y los comportamientos de los tipos de geometría y los métodos para consultar cada uno de ellos.
Validez, tipo de instancia e información de GeometryCollection
Una vez construida una geometry
instancia, puede usar los métodos siguientes para determinar si está bien formado, devolver el tipo de instancia o, si es una instancia de colección, devolver una instancia específica geometry
.
Para devolver el tipo de instancia de una geometría
STGeometryType (tipo de datos geometry)
Para determinar si una geometría es un tipo de instancia determinado
InstanceOf (tipo de datos geometry)
Para determinar si una instancia de geometría está bien definida para su tipo de instancia
STIsValid (Tipo de Datos Geometry)
Para convertir una instancia de geometría en una instancia de geometría bien formada con un tipo de instancia
MakeValid (geometry Tipo de Datos)
Para devolver el número de geometrías en una instancia de colección de geometrías
STNumGeometries (tipo de datos geometry)
Para devolver una geometría específica en una instancia de colección de geometrías
STGeometryN (tipo de datos geometría)STGeometryN (tipo de datos geometría)
Número de puntos
Todas las instancias que no están vacías se componen de puntos. Estos puntos representan las coordenadas X e Y del plano en el que se dibujan las geometrías.
geometry
proporciona numerosos métodos integrados para consultar los puntos de una instancia.
Para devolver el número de puntos que componen una instancia
STNumPoints (tipo de datos Geometry)
Para devolver un punto específico en una instancia
STPointN
Para devolver un punto arbitrario que se encuentra en una instancia
STPointOnSurface
Para devolver el punto de inicio de una instancia
STStartPoint
Para devolver el punto final de una instancia
STEndpoint
Para devolver la coordenada X de una instancia de Point
STX (tipo de datos geometry)
Para devolver la coordenada Y de una instancia de Point
ESTILO
Para devolver el punto central geométrico de una instancia de Polygon, CurvePolygon o MultiPolygon
STCentroid
Dimensión
Una instancia no geometry
vacía puede ser de 0, 1 o 2 dimensiones. Dimensión cero geometries
, como Point
y MultiPoint
, no tienen longitud ni área. Los objetos unidimensionales, como LineString, CircularString, CompoundCurve
, y MultiLineString
, tienen longitud. Las instancias bidimensionales, como Polygon
, CurvePolygon
y MultiPolygon
, tienen área y longitud. Las instancias vacías notificarán una dimensión de -1 y un GeometryCollection
informe de un área dependiente de los tipos de su contenido.
Para devolver la dimensión de una instancia
STDimension
Para devolver la longitud de una instancia
STLength
Para devolver el área de una instancia
STArea
Vacío
Una instancia vacíageometry
no tiene puntos. La longitud de las instancias vacías LineString, CircularString
, CompoundCurve
y MultiLineString
es cero. El área de las instancias vacías Polygon
, CurvePolygon
y MultiPolygon
es 0.
Para determinar si una instancia está vacía
STIsEmpty.
Sencillo
Para que una geometry
de las instancias sea sencilla, debe cumplir ambos requisitos:
Cada figura dentro de la instancia no debe cruzarse consigo misma, excepto en sus extremos.
No se pueden intersecar dos figuras de la instancia entre sí en un punto que no está en ambos límites.
Nota:
Las geometrías vacías siempre son sencillas.
Para determinar si una instancia es sencilla
STIsSimple.
Límite, interior y exterior
El interior de una geometry
instancia es el espacio ocupado por la instancia y el exterior es el espacio no ocupado.
El límite se define mediante el OGC de la siguiente manera:
Point
y las instancias deMultiPoint
no tienen un límite.LineString
yMultiLineString
los límites están formados por los puntos de inicio y los puntos finales, quitando los que se producen un número par de veces.
DECLARE @g geometry;
SET @g = geometry::Parse('MULTILINESTRING((0 1, 0 0, 1 0, 0 1), (1 1, 1 0))');
SELECT @g.STBoundary().ToString();
El límite de una Polygon
instancia o MultiPolygon
es el conjunto de sus anillos.
DECLARE @g geometry;
SET @g = geometry::Parse('POLYGON((0 0, 3 0, 3 3, 0 3, 0 0), (1 1, 1 2, 2 2, 2 1, 1 1))');
SELECT @g.STBoundary().ToString();
Para devolver el límite de una instancia
STBoundary
Sobre
El envolvente de una geometry
instancia, también conocido como caja delimitadora, es el rectángulo alineado con los ejes formado por las coordenadas mínimas y máximas (X,Y) de la instancia.
Para devolver el envoltorio de una instancia
STEnvelope
Cierre
Una instanciageometry
cerrada es una figura cuyos puntos iniciales y finales son los mismos.
Polygon
Las instancias se consideran cerradas.
Point
Las instancias no están cerradas.
Un anillo es una instancia simple y cerrada LineString
.
Para determinar si se cierra una instancia
STIsClosed
Para determinar si una instancia es un anillo
StIsRing
Para devolver el anillo exterior de una instancia de Polygon
STExteriorRing
Para devolver el número de anillos interiores en un polígono
STNumInteriorRing
Para devolver un anillo interior especificado de un polígono
STInteriorRingN
Id. de referencia espacial (SRID)
El identificador de referencia espacial (SRID) es un identificador que especifica en qué sistema de coordenadas se representa la geometry
instancia. Dos instancias con SRID diferentes son incomparables.
Para establecer o devolver el SRID de una instancia
STSrid
Esta propiedad se puede modificar.
Determinar las relaciones entre instancias de geometría
El geometry
tipo de datos proporciona muchos métodos integrados que puede usar para determinar las relaciones entre dos geometry
instancias.
Para determinar si dos instancias componen el mismo conjunto de puntos
STEquals
Para determinar si dos instancias están separadas
STDisjoint
Para determinar si dos instancias se intersecan
STIntersects
Para determinar si dos instancias se tocan
STTouches
Para determinar si dos instancias se superponen
STOverlaps
Para determinar si dos instancias se cruzan
STCrosses
Para determinar si una instancia está dentro de otra
STWithin
Para determinar si una instancia contiene otra
STContains
Para determinar si una instancia se superpone a otra
STOverlaps
Para determinar si dos instancias están relacionadas espacialmente
STRelate
Para determinar la distancia más corta entre puntos en dos geometrías
STDistance
Instancias de geometría predeterminadas a SRID cero
El SRID predeterminado para geometry
las instancias de SQL Server es 0. Con geometry
los datos espaciales, el SRID específico de la instancia espacial no es necesario para realizar cálculos; por lo tanto, las instancias pueden residir en un espacio planar indefinido. Para indicar el espacio planar no definido en los cálculos de métodos de tipo de geometry
datos, el motor de base de datos de SQL Server usa SRID 0.
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
geometry
columnaGeomCol1
. Una tercera columna representa la columnageometry
en su representación del Open Geospatial Consortium (OGC) como texto Well-Known (WKT) y usa el métodoSTAsText()
. A continuación, se insertan dos filas: una fila contiene unaLineString
instancia degeometry
y una fila contiene unaPolygon
instancia.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
En el segundo ejemplo se usa el
STIntersection()
método para devolver los puntos en los que se intersecan las dos instancias insertadasgeometry
anteriormente.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();