Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
database SQL di Azure
Azure SQL Istanza gestita
Database SQL in Microsoft Fabric
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. Gli extent fanno riferimento alla distanza massima approssimativa tra i punti dell'oggetto geometry .
Registra il tipo di geometria
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. Il tipo può essere utilizzato sia in colonne calcolate persiste che non persisted.
Conversion
La conversione dalla geometria a binaria, varbinaria, char, varchar, nchar e nvarchar deve essere esplicita. Usare CAST o CONVERT.
La conversione da binario, varbinario, char, varchar, nchar e nvarchar alla geometria può essere implicita o esplicita.
La conversione tra geometria e tutti gli altri tipi di dati non è permessa. Questo include la conversione tra geometria e geografia. Per spostare i dati tra questi due tipi, si usano i metodi Well-Known Binary (WKB) o Well-Known Text (WKT), ad esempio STAsBinary() con STGeomFromWKB().
La conversione da un tipo di stringa a geometria utilizza le stesse regole di geometry::Parse(). La stringa deve essere Well-Known Testo. Il SRID del risultato è 0.
La conversione tra geometria e binario o varbinario utilizza il formato di serializzazione nativo SQL Server della geometria, non Well-Known binario. Un valore binario Well-Known causa un errore. Per convertire in o da Well-Known binario, usare STAsBinary() e STGeomFromWKB().
Se la stringa target o il tipo binario è troppo corto rispetto al valore geometrico , si verifica un errore. Il valore non è troncato.
Remarks
Nel database SQL in Microsoft Fabric, i tipi di dati geografici e geometrici sono supportati ma non possono essere rispecchiati sul Fabric OneLake.
Examples
A. Mostra come aggiungere e interrogare dati di geometria
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. Restituisci l'intersezione di due istanze geometriche
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 AS geometry;
DECLARE @geom2 AS geometry;
DECLARE @result AS 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. Usa la geometria 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
);