Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-databas i 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. Typen kan användas i både bevarade och icke-persisterade beräknade kolumner.
Conversion
Omvandling från geografi till binär, varbinär, char, varchar, nchar och nvarchar måste vara explicit. Använd CAST eller CONVERT.
Konvertering från binär, varbinär, char, varchar, nchar och nvarchar till geografi kan vara implicit eller explicit.
Konvertering mellan geografi och alla andra datatyper är inte tillåten. Detta inkluderar omvandling mellan geografi och geometri. För att flytta data mellan dessa två typer, använd metoderna Well-Known Binary (WKB) eller Well-Known Text (WKT), till exempel STAsBinary() med STGeomFromWKB().
Konvertering från en strängtyp till geografi använder samma regler som geography::Parse(). Strängen måste vara Well-Known Text. SRID för resultatet är 4326.
Konvertering mellan geografi och binär eller varbinär använder det SQL Server ursprungliga serialiseringsformatet för geografi, inte Well-Known binär. Ett Well-Known Binärvärde orsakar ett fel. För att konvertera till eller från Well-Known binär, använd STAsBinary() och STGeomFromWKB().
Om målsträngen eller binärtypen är för kort för geografivärdet uppstår ett fel. Värdet är inte förkortat.
Remarks
I SQL-databasen i Microsoft Fabric stöds geografi- och geometridatatyper men kan inte speglas till Fabric OneLake.
Examples
A. Visa hur man lägger till och frågar geografisk data
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 återger geography-kolumnen i sin Open Geospatial Consortium (OGC)-representation i formatet 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. Returnera 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 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. Använd 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
);