Condividi tramite


geometry (Transact-SQL)

Il tipo di dati spaziale planare geometry viene implementato come tipo di dati Common Language Runtime (CLR) 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 sul tipo geometry definiti dallo standard OGC (Open Geospatial Consortium) e un set di estensioni Microsoft a tale standard.

Per ulteriori informazioni sul metodi relativi ai tipi di dati spaziali geometry, vedere Guida di riferimento ai metodi per il tipo di dati 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 verrebbero utilizzati gli altri tipi CLR. Questo tipo può essere utilizzato in colonne calcolate persistenti e non persistenti.

Esempi

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

Nei due esempi seguenti viene illustrato come aggiungere ed eseguire query su dati 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 relativa rappresentazione Well-Known Text (WKT) OCG (Open Geospatial Consortium) e utilizza il metodo STAsText(). Vengono quindi inserite due righe: in una riga è contenuta un'istanza LineString di geometry e 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 utilizzando 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

Concetti

Guida di riferimento ai metodi per il tipo di dati geometry

Dati spaziali (SQL Server)