Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O tipo geometryde dados espaciais planar representa dados em um sistema de coordenadas euclidiano (simples). Esse tipo é implementado como um tipo de dados CLR (Common Language Runtime) no SQL Server.
O geometry tipo é predefinido e está disponível em cada banco de dados. Você pode criar colunas de tabela do tipo geometry e operar com geometry dados da mesma maneira como utilizaria outros tipos CLR.
O geometry tipo de dados (planar) compatível com o SQL Server está em conformidade com os Recursos Simples do OGC (Open Geospatial Consortium) para a especificação do SQL versão 1.1.0.
Para obter mais informações sobre especificações do OGC, consulte o seguinte:
Especificações do OGC, Acesso a Recursos Simples Parte 1 – Arquitetura Comum
Especificações do OGC, Acesso a Recursos Simples Parte 2 – Opções do SQL
O SQL Server dá suporte a um subconjunto do padrão GML 3.1 existente definido no seguinte esquema: https://schemas.microsoft.com/sqlserver/profiles/gml/SpatialGML.xsd.
Criando ou construindo uma nova instância de geometria
Criando uma nova instância de geometria de uma instância existente
O geometry tipo de dados fornece vários métodos internos que você pode usar para criar novas geometry instâncias com base em instâncias existentes.
Para criar um buffer em torno de uma geometria
STBuffer (tipo de dados Geometry)
BufferWithTolerance (tipo de dados geometry)
Para criar uma versão simplificada de uma geometria
Reduzir (tipo de dados geometria)
Para criar o casco convexo de uma geometria
STConvexHull (tipo de dados geometria)
Para criar uma geometria a partir da interseção de duas geometrias
STIntersection (geometry como tipo de dado)
Para criar uma geometria a partir da união de duas geometrias
STUnion (tipo de dados geometry)
Para criar uma geometria a partir dos pontos em que uma geometria não se sobrepõe a outra
STDifference (tipo de dados de geometria)
Para criar uma geometria a partir dos pontos em que duas geometrias não se sobrepõem
STSymDifference (tipo de dados geometry)
Para criar uma instância de Ponto arbitrária que esteja em uma geometria existente
STPointOnSurface (tipo de dados geometry)
Construindo uma instância de geometria a partir da entrada de texto Well-Known
O tipo de dados geometry fornece vários métodos embutidos que geram uma geometria a partir da representação WKT do Open Geospatial Consortium (OGC). O padrão WKT é uma cadeia de caracteres de texto que permite que os dados de geometria sejam trocados em formato textual.
Para construir qualquer tipo de instância de geometria a partir da entrada WKT
STGeomFromText (tipo de dados geometry)
Interpretar (tipo de dados Geometria)
Para construir uma instância de Ponto geométrico com base na entrada WKT
STPointFromText (tipo de dados geometria)
Para construir uma instância de geometria MultiPoint a partir de uma entrada WKT
STMPointFromText (tipo de dados geometry)
Para construir uma instância de geometria LineString a partir da entrada WKT
STLineFromText (tipo de dados geométrico)
Para construir uma instância de geometria MultiLineString a partir da entrada WKT
STMLineFromText (tipo de dados geometry)
Para construir uma instância Polygon de geometria a partir da entrada WKT
STPolyFromText (tipo de dados geométrico)
Para construir uma instância de MultiPolygon geometry a partir da entrada WKT
STMPolyFromText (tipo de dados geometria)
Para construir uma instância GeometryCollection a partir da entrada WKT
STGeomCollFromText (tipo de dados geometria)
Construindo uma instância de geometria a partir de entrada binária Well-Known
WKB é um formato binário especificado pelo OGC (Open Geospatial Consortium) que permite que os dados sejam trocados geometry entre um aplicativo cliente e um banco de dados SQL. As seguintes funções aceitam entrada WKB para construir geometrias:
Para construir qualquer tipo de instância de geometria a partir da entrada WKB
STGeomFromWKB (tipo de dados geometry)
Para construir uma instância de ponto de geometria a partir da entrada WKB
STPointFromWKB (tipo de dado de geometria)
Para construir uma instância geometria do MultiPoint a partir da entrada WKB
STMPointFromWKB (tipo de dados geometry)
Para construir uma instância de geometria LineString a partir de uma entrada WKB
STLineFromWKB (tipo de dados geometry)
Para construir uma instância de geometria MultiLineString a partir da entrada WKB
STMLineFromWKB (tipo de dados geometry)
Para construir uma instância de Polygon geometry a partir da entrada WKB
STPolyFromWKB (tipo de dados geometria)
Para construir uma instância de MultiPolygon geometry a partir da entrada WKB
STMPolyFromWKB (tipo de dados geometria)
Para construir uma instância geometryCollection da entrada WKB
STGeomCollFromWKB (tipo de dados geometria)
Construindo uma instância de geometria com base na entrada de texto GML
O geometry tipo de dados fornece um método que gera uma geometry instância do GML, uma representação XML de objetos geométricos. O SQL Server dá suporte a um subconjunto de GML.
Para construir qualquer tipo de instância de geometria a partir de uma entrada GML
GeomFromGml (tipo de dados geometry)
Retornando Well-Known texto e Well-Known binário de uma instância de geometria
Você pode usar os seguintes métodos para retornar o formato WKT ou WKB de uma geometry instância:
Para retornar a representação WKT de uma instância de geometria
STAsText (tipo de dados geometria)
ToString (tipo de dados geometry)
Para retornar a representação WKT de uma instância de geometria, incluindo quaisquer valores Z e M
AsTextZM (tipo de dados geometria)
Para retornar a representação WKB de uma instância de geometria
STAsBinary (tipo de dados geométrico)
Para retornar uma representação GML de uma instância de geometria
AsGml (tipo de dado de geometria)
Consultando as propriedades e comportamentos de instâncias de geometria
Todas as geometry instâncias têm várias propriedades que podem ser recuperadas por meio de métodos que o SQL Server fornece. Os tópicos a seguir definem as propriedades e os comportamentos dos tipos de geometria e os métodos para consultar cada um deles.
Informações sobre validade, tipo de instância e coleção de geometria
Depois que uma geometry instância é construída, você pode usar os métodos a seguir para determinar se ela está bem formada, retornar o tipo de instância ou, se for uma instância de coleção, retornar uma instância específica geometry .
Para retornar o tipo de instância de uma geometria
STGeometryType (tipo de dados Geometria)
Para determinar se uma geometria é um determinado tipo de instância
InstanceOf (tipo de dados geometry)
Para determinar se uma instância de geometria está bem formada para seu tipo de instância
STIsValid (tipo de dados geometry)
Para converter uma instância de geometria em uma instância de geometria bem-definida com um tipo de instância
MakeValid (tipo de dados geometry)
Para retornar o número de geometrias em uma instância de coleção de geometria
STNumGeometries (tipo de dados geometry)
Para retornar uma geometria específica em uma instância de coleção de geometria
STGeometryN (tipo de dados de geometria)STGeometryN (tipo de dados de geometria)
Número de pontos
Todas as instâncias não geometry vazias são compostas por pontos. Esses pontos representam as coordenadas X e Y do plano no qual as geometrias são desenhadas.
geometry fornece vários métodos internos para consultar os pontos de uma instância.
Para retornar o número de pontos que compõem uma instância
STNumPoints (tipo de dados geométrico)
Para retornar um ponto específico em uma instância
STPointN
Para retornar um ponto arbitrário que está em uma instância
STPointOnSurface
Para retornar o ponto inicial de uma instância
STStartPoint
Para retornar o ponto final de uma instância
STEndpoint
Para retornar a coordenada X de uma instância de Ponto
STX (tipo de dados geometry)
Para retornar a coordenada Y de uma instância de Ponto
CHIQUEIRO
Para retornar o ponto central geométrico de uma instância de Polígono, CurvePolygon ou MultiPolygon
STCentroid
Dimensão
Uma instância não geometry úmida pode ser 0, 1 ou 2 dimensional. Zero-dimensional geometries, como Point e MultiPoint, não têm comprimento ou área. Objetos unidimensionais, como LineString, CircularString, CompoundCurve, e MultiLineString, têm comprimento. Instâncias bidimensionais, como Polygon, CurvePolygone MultiPolygon, têm área e comprimento. Instâncias vazias relatarão uma dimensão de -1 e uma GeometryCollection relatará uma área dependente dos tipos de seu conteúdo.
Para retornar a dimensão de uma instância
STDimension
Para retornar o comprimento de uma instância
STLength
Para retornar a área de uma instância
STArea
Vazio
Uma instância vaziageometry não tem nenhum ponto. O comprimento de instâncias vazias LineString, CircularString, CompoundCurve e MultiLineString é zero. A área das instâncias vazias Polygon, CurvePolygon, e MultiPolygon é 0.
Para determinar se uma instância está vazia
STIsEmpty.
Simples
Para que uma geometry instância seja simples, ela deve atender aos dois requisitos:
Cada figura da instância não deve se intersectar, exceto em seus pontos de extremidade.
Nenhuma das duas figuras da instância pode se cruzar em um ponto que não pertença a ambos os seus limites.
Observação
Geometrias vazias são sempre simples.
Para determinar se uma instância é simples
STIsSimple.
Limite, Interior e Exterior
O interior de uma geometry instância é o espaço ocupado pela instância e o exterior é o espaço não ocupado.
O limite é definido pelo OGC da seguinte maneira:
PointeMultiPointinstâncias não têm limite.LineStringeMultiLineStringlimites são formados pelos pontos iniciais e pontos finais, removendo aqueles que ocorrem um número par de vezes.
DECLARE @g geometry;
SET @g = geometry::Parse('MULTILINESTRING((0 1, 0 0, 1 0, 0 1), (1 1, 1 0))');
SELECT @g.STBoundary().ToString();
O limite de uma Polygon ou MultiPolygon instância é o conjunto de seus anéis.
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 retornar o limite de uma instância
STBoundary
Envelope
O envelope de uma geometry instância, também conhecida como caixa delimitadora, é o retângulo alinhado ao eixo formado pelas coordenadas mínima e máxima (X,Y) da instância.
Para retornar o envelope de uma instância
STEnvelope
Encerramento
Uma instância fechadageometry é uma figura cujos pontos de partida e pontos de extremidade são os mesmos.
Polygon as instâncias são consideradas fechadas.
Point instâncias não estão fechadas.
Um anel é uma instância simples e fechada LineString .
Para determinar se uma instância está fechada
STIsClosed
Para determinar se uma instância é um anel
STIsRing
Para retornar o anel exterior de uma instância de Polígono
STExteriorRing
Para retornar o número de anéis interiores em um Polígono
STNumInteriorRing
Para retornar um anel interior especificado de um Polígono
STInteriorRingN
SRID (ID de referência espacial)
A SRID (ID de referência espacial) é um identificador que especifica em qual sistema de coordenadas a geometry instância está representada. Duas instâncias com SRIDs diferentes são incomparáveis.
Para definir ou retornar o SRID de uma instância
STSrid
Essa propriedade pode ser modificada.
Determinando relações entre instâncias de geometria
O geometry tipo de dados fornece muitos métodos internos que você pode usar para determinar relações entre duas geometry instâncias.
Para determinar se duas instâncias compõem o mesmo conjunto de pontos
STEquals
Para determinar se duas instâncias são disjuntas
STDisjoint
Para determinar se dois objetos intersectam
STIntersects
Para determinar se duas instâncias se tocam
STTouches
Para determinar se duas instâncias se sobrepõem
STOverlaps
Para determinar se duas instâncias se cruzam
STCrosses
Para determinar se uma instância está dentro de outra
STWithin
Para determinar se uma instância contém outra
STContains
Para determinar se uma instância se sobrepõe a outra
STOverlaps
Para determinar se duas instâncias estão relacionadas espacialmente
STRelate
Para determinar a distância mais curta entre pontos em duas geometrias
STDistance
Instâncias de geometria padronizadas com SRID zero
O SRID padrão para geometry instâncias no SQL Server é 0. Com geometry dados espaciais, o SRID específico da instância espacial não é necessário para executar cálculos; portanto, as instâncias podem residir no espaço planar indefinido. Para indicar espaço planar indefinido nos cálculos de métodos de tipo de geometry dados, o Mecanismo de Banco de Dados do SQL Server usa SRID 0.
Exemplos
Os dois exemplos a seguir mostram como adicionar e consultar dados de geometria.
O primeiro exemplo cria uma tabela com uma coluna de identidade e uma
geometrycolunaGeomCol1. Uma terceira coluna renderiza ageometrycoluna em sua representação do OGC (Open Geospatial Consortium) Well-Known Text (WKT) e usa o métodoSTAsText(). Em seguida, duas linhas são inseridas: uma linha contém uma instância deLineStringgeometry, e uma linha contém uma instância dePolygon.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)); GOO segundo exemplo usa o método
STIntersection()para retornar os pontos onde as duas instânciasgeometryinseridas anteriormente se intersectam.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();