geography (Transact-SQL)

Il tipo di dati spaziali di geografia geography viene implementato come un tipo di dati Common Language Runtime (CLR) . NET in SQL Server. Questo tipo rappresenta i dati in un sistema di coordinate di tipo terra rotonda. Il tipo di dati SQL Servergeography consente di archiviare dati ellissoidali (terra rotonda), ad esempio coordinate di latitudine e longitudine GPS.

In SQL Server 2008 è supportato un set di metodi per il tipo di dati spaziali geography. Questi metodi includono metodi sul tipo geography 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 geography, vedere Guida di riferimento ai metodi per il tipo di dati geography.

Registrazione di un tipo geography

Il tipo geography è predefinito e disponibile in ogni database. È possibile creare colonne della tabella di tipo geography e operare sui dati geography nello stesso modo in cui verrebbero utilizzati gli altri tipi forniti dal sistema.

Esempi

Gli esempi seguenti mostrano come aggiungere ed eseguire query sui dati di tipo geography. 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: una contiene un'istanza LineString di geography e la seconda contiene 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(47.656 -122.360, 47.656 -122.343)', 4326));

INSERT INTO SpatialTable (GeogCol1)
VALUES (geography::STGeomFromText('POLYGON((47.653 -122.358, 47.649 -122.348, 47.658 -122.348, 47.658 -122.358, 47.653 -122.358))', 4326));
GO

Nel secondo esempio si utilizza il metodo STIntersection() per restituire i punti dove si intersecano le due istanze geography inserite in precedenza.

DECLARE @geog1 geography;
DECLARE @geog2 geography;
DECLARE @result 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();