Udostępnij za pomocą


Typy przestrzenne — geometria (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

Typ danych przestrzennych planarnych, geometria, jest implementowany jako typ danych środowiska uruchomieniowego języka wspólnego (CLR) w programie SQL Server. Ten typ reprezentuje dane w układzie współrzędnych euklidesowych (płaskich).

Program SQL Server obsługuje zestaw metod dla typu danych przestrzennych geometrii . Metody te obejmują metody geometrii zdefiniowane przez standard Open Geospatial Consortium (OGC) i zestaw rozszerzeń firmy Microsoft do tego standardu.

Tolerancja błędów dla metod geometrycznych może być tak duża, jak 1,0e-7 * zakresów. Zakresy odnoszą się do przybliżonej maksymalnej odległości między punktami obiektu geometrii .

Rejestrowanie typu geometrii

Typ geometrii jest wstępnie zdefiniowany i dostępny w każdej bazie danych. Możesz tworzyć kolumny tabeli geometrii typu i działać na danych geometrycznych w taki sam sposób, jak w przypadku innych typów CLR. Można używać w utrwalanych i nietrwałych kolumnach obliczeniowych.

Remarks

W bazie danych SQL w usłudze Microsoft Fabric obsługiwane są typy danych geograficznych i geometrycznych , ale nie można ich dublować w usłudze Fabric OneLake.

Examples

A. Pokazywanie sposobu dodawania danych geometrycznych i wykonywania względem ich zapytań

W poniższych dwóch przykładach pokazano, jak dodawać dane geometryczne i wykonywać zapytania o nie. Pierwszy przykład tworzy tabelę z kolumną tożsamości i kolumną geometry . GeomCol1 Trzecia kolumna renderuje kolumnę geometry w swojej reprezentacji Open Geospatial Consortium (OGC) Well-Known Text (WKT) i używa STAsText() metody . Następnie wstawiane są dwa wiersze: jeden wiersz zawiera LineString wystąpienie geometry, a jeden wiersz zawiera Polygon wystąpienie.

IF OBJECT_ID ( 'dbo.SpatialTable', 'U' ) IS NOT NULL   
    DROP TABLE dbo.SpatialTable;  
GO  
  
CREATE TABLE SpatialTable   
    ( id int IDENTITY (1,1),  
    GeomCol1 geometry,   
    GeomCol2 AS GeomCol1.STAsText() );  
GO  
  
INSERT INTO SpatialTable (GeomCol1)  
VALUES (geometry::STGeomFromText('LINESTRING (100 100, 20 180, 180 180)', 0));  
  
INSERT INTO SpatialTable (GeomCol1)  
VALUES (geometry::STGeomFromText('POLYGON ((0 0, 150 0, 150 150, 0 150, 0 0))', 0));  
GO  

B. Zwracanie przecięcia dwóch wystąpień geometrycznych

W drugim przykładzie STIntersection() użyto metody , aby zwrócić punkty, w których dwa wcześniej wstawione geometry wystąpienia przecinają się.

DECLARE @geom1 geometry;  
DECLARE @geom2 geometry;  
DECLARE @result geometry;  
  
SELECT @geom1 = GeomCol1 FROM SpatialTable WHERE id = 1;  
SELECT @geom2 = GeomCol1 FROM SpatialTable WHERE id = 2;  
SELECT @result = @geom1.STIntersection(@geom2);  
SELECT @result.STAsText();  

C. Używanie geometrii w obliczonej kolumnie

Poniższy przykład tworzy tabelę z utrwałą kolumną obliczeniową przy użyciu typu geometrii .

IF OBJECT_ID ( 'dbo.SpatialTable', 'U' ) IS NOT NULL   
    DROP TABLE dbo.SpatialTable;  
GO  
  
CREATE TABLE SpatialTable  
(  
    locationId int IDENTITY(1,1),  
    location geometry,  
    deliveryArea as location.STBuffer(10) persisted  
)  

Zobacz też

Dane przestrzenne (SQL Server)