Tipi spaziali - geometry (Transact-SQL)

Si applica a: SQL Server Azure SQL DatabaseIstanza gestita di SQL di Azure

Il tipo di dati spaziali planari geometry è implementato come tipo di dati CLR (Common Language Runtime) in SQL Server. Questo tipo rappresenta i dati in un sistema di coordinate euclideo (piano).

In SQL Server è supportato un set di metodi per il tipo di dati spaziali geometry. Questi metodi includono metodi su geometry definiti dallo standard OGC (Open Geospatial Consortium) e da un set di estensioni Microsoft di tale standard.

La tolleranza agli errori dei metodi geometry può arrivare fino a 1,0e-7 * extent. Il termine extent indica la distanza massima approssimativa tra i punti dell'oggetto geometry.

Registrazione del tipo geometry

Il tipo geometry è predefinito e disponibile in ogni database. È possibile creare colonne di tabella di tipo geometry e operare sui dati geometry nello stesso modo in cui si utilizzano gli altri tipi CLR. Questo tipo può essere utilizzato in colonne calcolate persistenti e non persistenti.

Esempi

R. Informazioni su come aggiungere ed eseguire una query su dati geometry

Nei due esempi seguenti viene illustrato come aggiungere ed eseguire query su dati di tipo geometry. Nel primo esempio viene creata una tabella con una colonna Identity e una colonna geometry, ovvero GeomCol1. Una terza colonna effettua il rendering della colonna geometry nella rappresentazione Well-Known Text (WKT) OGC (Open Geospatial Consortium) e utilizza il metodo STAsText() . Vengono quindi inserite due righe: in una riga è contenuta un'istanza LineString di geometrye in una seconda è contenuta un'istanza Polygon .

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. Restituzione dell'intersezione di due istanze geometry

Nel secondo esempio viene utilizzato il metodo STIntersection() per restituire i punti in cui si intersecano le due istanze geometry inserite in precedenza.

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. Utilizzo del tipo geometry in una colonna calcolata

Nell'esempio seguente viene creata una tabella con una colonna calcolata persistente usando un tipo geometry.

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  
)  

Vedere anche

Dati spaziali (SQL Server)