Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
SQL-adatbázis a Microsoft Fabricben
A planáris térbeli adattípus ( geometria) általános nyelvi futtatókörnyezeti (CLR) adattípusként van implementálva az SQL Serverben. Ez a típus egy euklideszi (lapos) koordinátarendszer adatait jelöli.
Az SQL Server számos metódust támogat a geometria térbeli adattípusához. Ezek a módszerek közé tartoznak az Open Geospatial Consortium (OGC) szabvány által meghatározott geometriai módszerek, valamint az adott szabványhoz tartozó Microsoft-bővítmények.
A geometriai módszerek hibatűrése akár 1,0e-7 * kiterjedés is lehet. A mértékek a geometriai objektum pontjai közötti közelítő maximális távolságra vonatkoznak.
A geometriatípus regisztrálása
A geometria típusa előre definiálva van, és minden adatbázisban elérhető. A geometria típusú táblaoszlopokat ugyanúgy hozhatja létre, és ugyanúgy kezelheti a geometriai adatokat, mint más CLR-típusokat. Tartós és nem tartós számítási oszlopokban is használható.
Remarks
A Microsoft Fabric SQL-adatbázisában a földrajzi és geometriai adattípusok támogatottak, de nem tükrözhetők a Fabric OneLake-hez.
Examples
A. Geometriai adatok hozzáadása és lekérdezése
Az alábbi két példa bemutatja, hogyan adhat hozzá és kérdezhet le geometriai adatokat. Az első példa egy identitásoszlopot és egy oszlopot geometrytartalmazó táblát GeomCol1 hoz létre. A harmadik oszlop az geometry Open Geospatial Consortium (OGC) Well-Known Text (WKT) ábrázolásába jeleníti meg az oszlopot, és a metódust STAsText() használja. Ezután két sor lesz beszúrva: egy sor egy példányt LineStringgeometry, egy sor pedig egy példányt Polygon tartalmaz.
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. Két geometriai példány metszetének visszaadása
A második példa a STIntersection() metódussal adja vissza azokat a pontokat, ahol a két korábban beszúrt geometry példány metszik egymást.
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. Geometria használata számított oszlopban
Az alábbi példa egy olyan táblát hoz létre, amely egy megőrzött számított oszlopot tartalmaz egy geometriatípus használatával.
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
)