Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-database in Microsoft Fabric
Het ruimtelijke gegevenstype planar, geometrie, wordt geïmplementeerd als een common Language Runtime-gegevenstype (CLR) in SQL Server. Dit type vertegenwoordigt gegevens in een Euclidean (plat) coördinaatsysteem.
SQL Server ondersteunt een set methoden voor het ruimtelijke gegevenstype geometrie . Deze methoden omvatten methoden voor geometrie die zijn gedefinieerd door de OGC-standaard (Open Geospatial Consortium) en een set Microsoft-extensies voor die standaard.
De fouttolerantie voor de geometriemethoden kan zo groot zijn als 1,0e-7 * gebieden. De gebieden verwijzen naar de geschatte maximale afstand tussen punten van het geometrieobject .
Registreer het geometrietype
Het geometrietype is vooraf gedefinieerd en beschikbaar in elke database. U kunt tabelkolommen van typegeometrie maken en op geometriegegevens werken op dezelfde manier als andere CLR-typen. Het type kan worden gebruikt in zowel gerepte als niet-gepersisteerde berekende kolommen.
Conversion
De conversie van geometrie naar binair, varbinair, char, varchar, nchar en nvarchar moet expliciet zijn. Gebruik CAST of CONVERT.
De conversie van binair, varbinair, char, varchar, nchar en nvarchar naar geometrie kan impliciet of expliciet zijn.
Conversie tussen geometrie en alle andere datatypes is niet toegestaan. Dit omvat de omzetting tussen geometrie en geografie. Om gegevens tussen deze twee typen te verplaatsen, gebruik je de Well-Known Binary (WKB) of Well-Known Text (WKT) methoden, bijvoorbeeld STAsBinary() met STGeomFromWKB().
De conversie van een stringtype naar geometrie gebruikt dezelfde regels als geometry::Parse(). De string moet Well-Known Text zijn. De SRID van het resultaat is 0.
De conversie tussen geometrie en binair of varbinair gebruikt het SQL Server native serialisatieformaat van geometrie, niet Well-Known binair. Een Well-Known binaire waarde veroorzaakt een fout. Om naar of van Well-Known binaire om te zetten, gebruik STAsBinary() en STGeomFromWKB().
Als de doelstring of binaire type te kort is voor de geometriewaarde , treedt er een fout op. De waarde wordt niet ingekort.
Remarks
In SQL-databases in Microsoft Fabric worden geografie- en geometriedatatypes ondersteund, maar kunnen ze niet worden gespiegeld naar de Fabric OneLake.
Examples
A. Laat zien hoe je geometriegegevens toevoegt en opvraagt
In de volgende twee voorbeelden ziet u hoe u geometriegegevens toevoegt en opvraagt. In het eerste voorbeeld wordt een tabel gemaakt met een identiteitskolom en een geometry kolom. GeomCol1 In een derde kolom wordt de geometry kolom weergegeven in de WEERGAVE OPEN Georuimteal Consortium (OGC) Well-Known Text (WKT) en wordt de STAsText() methode gebruikt. Er worden vervolgens twee rijen ingevoegd: één rij bevat een LineString exemplaar van geometryen één rij bevat een Polygon exemplaar.
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. Geef de doorsnede van twee geometrie-instanties terug
In het tweede voorbeeld wordt de STIntersection() methode gebruikt om de punten te retourneren waarin de twee eerder ingevoegde geometry exemplaren elkaar kruisen.
DECLARE @geom1 AS geometry;
DECLARE @geom2 AS geometry;
DECLARE @result AS 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. Gebruik geometrie in een berekende kolom
In het volgende voorbeeld wordt een tabel gemaakt met een permanente berekende kolom met behulp van een geometrietype .
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
);