Dela via


Rumsliga typer – geografi

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Förhandsversion av Microsoft Fabric

Geografisk spatial datatyp, geografi, implementeras som en CLR-datatyp (.NET Common Language Runtime) i SQL Server. Den här typen representerar data i ett jorden runt koordinatsystem. Datatypen SQL Server geography lagrar ellipsoidala data (jorden runt), till exempel GPS-latitud och longitudkoordinater.

Note

I Fabric SQL-databasen tillåts kolumner med rumsliga typer att användas, men speglas inte i Fabric OneLake.

SQL Server har stöd för en uppsättning metoder för den geografiska rumsliga datatypen. Detta omfattar metoder för geografi som definieras av OGC-standarden (Open Geospatial Consortium) och en uppsättning Microsoft-tillägg till den standarden.

Feltoleransen för geografimetoderna kan vara så stor som 1,0e-7 * omfattningar. Omfattningarna refererar till det ungefärliga maximala avståndet mellan punkter i geografiobjektet .

Registrera geografitypen

Geografitypen är fördefinierad och tillgänglig i varje databas. Du kan skapa tabellkolumner av typen geografi och arbeta med geografidata på samma sätt som du använder andra typer av system som tillhandahålls. Kan användas i beständiga och icke-bevarade beräknade kolumner.

Remarks

I SQL-databasen i Förhandsversionen av Microsoft Fabric stöds datatyper för geografi och geometri , men de kan inte speglas i Fabric OneLake.

Examples

A. Visar hur du lägger till och frågar efter geografidata

I följande exempel visas hur du lägger till och frågar efter geografidata. I det första exemplet skapas en tabell med en identitetskolumn och en geography kolumn, GeogCol1. En tredje kolumn renderar geography kolumnen i dess WKT-återgivning (Open Geospatial Consortium) (OGC) Well-Known Text (WKT) och använder STAsText() metoden. Två rader infogas sedan: en rad innehåller en LineString instans av geographyoch en rad innehåller en Polygon instans.

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. Returnerar skärningspunkten mellan två geografiska instanser

I följande exempel används STIntersection() metoden för att returnera de punkter där de två tidigare infogade geography instanserna korsar varandra.

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();  

C. Använda geografi i en beräknad kolumn

I följande exempel skapas en tabell med en bevarad beräknad kolumn med en geografityp .

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  
);  

See Also

Spatial Data (SQL Server)