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
Istanza gestita di Azure SQL
Database SQL su Microsoft Fabric
Il tipo di dati spaziali geography viene implementato come tipo di dati .NET Common Language Runtime (CLR) in SQL Server. Questo tipo rappresenta i dati in un sistema di coordinate di tipo terra rotonda. Il tipo di dati geography di SQL Server consente di archiviare dati ellissoidali (terra rotonda), ad esempio coordinate di latitudine e longitudine GPS.
Note
Nel database SQL di Infrastruttura è consentito usare colonne di tipi spaziali, ma non verrà applicato il mirroring a Fabric OneLake.
In SQL Server è supportato un set di metodi per il tipo di dati spaziali geography. Sono inclusi metodi per geography definiti dallo standard OGC (Open Geospatial Consortium) e un set di estensioni Microsoft a tale standard.
La tolleranza agli errori dei metodi geography può arrivare fino a 1,0e-7 * extent. Gli extent fanno riferimento alla distanza massima approssimativa tra i punti dell'oggetto geography .
Registra il tipo di geografia
Il tipo geography è predefinito e disponibile in ogni database. È possibile creare colonne di tabella di tipo geography e usare dati geography nello stesso modo in cui vengono usati gli altri tipi forniti dal sistema. Il tipo può essere utilizzato sia in colonne calcolate persiste che non persisted.
Conversion
La conversione dalla geografia a binario, varbinario, char, varchar, nchar e nvarchar deve essere esplicita. Usare CAST o CONVERT.
La conversione da binario, varbinario, char, varchar, nchar e nvarchar alla geografia può essere implicita o esplicita.
La conversione tra geografia e tutti gli altri tipi di dati non è permessa. Questo include la conversione tra geografia e geometria. 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 geografia utilizza le stesse regole di geography::Parse(). La stringa deve essere Well-Known Testo. Il SRID del risultato è 4326.
La conversione tra geografia e binario o varbinario utilizza il formato di serializzazione nativo SQL Server geografico, 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 geografico , si verifica un errore. Il valore non è troncato.
Osservazioni:
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 geografici
Gli esempi seguenti mostrano come aggiungere ed eseguire query sui dati geografici. Nel primo esempio viene creata una tabella con una colonna Identity e una colonna geography, ovvero GeogCol1. Una terza colonna effettua il rendering della colonna geography 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 geographye 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),
GeogCol1 geography,
GeogCol2 AS GeogCol1.STAsText()
);
GO
INSERT INTO SpatialTable
(
GeogCol1
)
VALUES (geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656 )', 4326));
INSERT INTO SpatialTable
(
GeogCol1
)
VALUES (geography::STGeomFromText('POLYGON((-122.358 47.653 , -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))', 4326));
GO
B. Restituisci l'intersezione di due istanze geografiche
Nell'esempio seguente viene utilizzato il metodo STIntersection() per restituire i punti in cui si intersecano le due istanze geography inserite in precedenza.
DECLARE @geog1 AS geography;
DECLARE @geog2 AS geography;
DECLARE @result AS geography;
SELECT @geog1 = GeogCol1
FROM SpatialTable
WHERE id = 1;
SELECT @geog2 = GeogCol1
FROM SpatialTable
WHERE id = 2;
SELECT @result = @geog1.STIntersection(@geog2);
SELECT @result.STAsText();
C. Usa la geografia in una colonna calcolata
Nell'esempio seguente viene creata una tabella con una colonna calcolata persistente usando un tipo geography.
IF OBJECT_ID('dbo.SpatialTable', 'U') IS NOT NULL
DROP TABLE dbo.SpatialTable;
GO
CREATE TABLE SpatialTable
(
locationId INT IDENTITY (1, 1),
location geography,
deliveryArea AS location.STBuffer(10) PERSISTED
);