Sdílet prostřednictvím


Prostorové typy - geometrie (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Planar spatial data type, geometry, is implemented as a common language runtime (CLR) data type in SQL Server. Tento typ představuje data v euklidovském (plochém) souřadnicovém systému.

SQL Server podporuje sadu metod pro prostorový datový typ geometrie . Tyto metody zahrnují metody geometrie , které jsou definovány standardem Open Geospatial Consortium (OGC) a sadou rozšíření Microsoftu pro tento standard.

Odolnost proti chybám pro metody geometrie může být tak velká jako 1,0e-7 * rozsahů. Rozsahy odkazují na přibližnou maximální vzdálenost mezi body objektu geometrie .

Registrace typu geometrie

Typ geometrie je předdefinovaný a dostupný v každé databázi. Sloupce tabulky s geometrií typu můžete vytvářet a pracovat s daty geometrie stejným způsobem jako jiné typy CLR. Lze použít v trvalých a neuchovaných počítaných sloupcích.

Remarks

V databázi SQL v Microsoft Fabric jsou podporované datové typy geografie a geometrie , ale není možné je zrcadlit s Fabric OneLake.

Examples

A. Ukazuje, jak přidat data geometrie a dotazovat se na data geometrie.

Následující dva příklady ukazují, jak přidat a dotazovat data geometrie. První příklad vytvoří tabulku se sloupcem identity a sloupcem geometry . GeomCol1 Třetí sloupec vykreslí geometry sloupec do reprezentace Open Geospatial Consortium (OGC) Well-Known Text (WKT) a použije metodu STAsText() . Pak se vloží dva řádky: jeden řádek obsahuje LineString instanci geometrya jeden řádek obsahuje Polygon instanci.

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. Vrácení průsečíku dvou instancí geometrie

Druhý příklad používá metodu STIntersection() k vrácení bodů, kde se obě dříve vložené geometry instance protínají.

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. Použití geometrie ve počítaného sloupci

Následující příklad vytvoří tabulku s trvalým vypočítaným sloupcem pomocí typu geometrie .

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  
)  

Viz také

Prostorová data (SQL Server)