Sdílet prostřednictvím


Prostorové typy – zeměpisná oblast

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Geografický prostorový datový typ, zeměpis, je implementován jako datový typ CLR (Common Language Runtime) .NET v SQL Serveru. Tento typ představuje data v souřadnicovém systému s kruhovou zemí. Zeměpisný typ SQL Serveru ukládá tři tečky (kulatá země) data, jako jsou souřadnice zeměpisné šířky GPS a délky.

Note

V databázi SQL fabric je možné použít sloupce prostorových typů, ale nebudou zrcadlené na Fabric OneLake.

SQL Server podporuje sadu metod pro geografický prostorový datový typ. To zahrnuje metody v zeměpisné oblasti , které jsou definovány standardem Open Geospatial Consortium (OGC) a sadou rozšíření Microsoftu pro tento standard.

Odolnost proti chybám pro zeměpisné metody může být tak velká jako 1,0e-7 * rozsahů. Rozsahy odkazují na přibližnou maximální vzdálenost mezi body zeměpisného objektu.

Registrace zeměpisného typu

Zeměpisný typ je předdefinovaný a dostupný v každé databázi. Sloupce tabulky typu geografie můžete vytvářet a pracovat se zeměpisnými daty stejným způsobem, jako byste používali jiné typy zadané systémem. Lze použít v trvalých a neuchovaných počítaných sloupcích.

Remarks

V databázi SQL v Microsoft Fabric jsou podporované datové typy geografie a geometrie , ale není možné je zrcadlit s Fabric OneLake.

Examples

A. Zobrazení postupu přidání a dotazování zeměpisných dat

Následující příklady ukazují, jak přidat a dotazovat se na zeměpisná data. První příklad vytvoří tabulku se sloupcem identity a sloupcem geography . GeogCol1 Třetí sloupec vykreslí geography sloupec do reprezentace Open Geospatial Consortium (OGC) Well-Known Text (WKT) a použije metodu STAsText() . Pak se vloží dva řádky: jeden řádek obsahuje LineString instanci geographya jeden řádek obsahuje Polygon instanci.

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. Vrácení průsečíku dvou zeměpisných instancí

Následující příklad používá metodu STIntersection() k vrácení bodů, kde dva dříve vložené geography instance protínají.

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. Použití zeměpisu ve vypočítaném sloupci

Následující příklad vytvoří tabulku s trvalým počítaným sloupcem pomocí zeměpisného typu.

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

Viz také

Prostorová data (SQL Server)