Anteckning
Å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-analysslutpunkt i Microsoft Fabric
Lager i Microsoft Fabric
SQL-databas i Förhandsversion av Microsoft Fabric
Den plana rumsliga datatypen, geometri, representerar data i ett euklidiskt (platt) koordinatsystem. Den här typen implementeras som en CLR-datatyp (Common Language Runtime) i SQL Server.
Geometritypen är fördefinierad och tillgänglig i varje databas. Du kan skapa tabellkolumner av typen geometri och arbeta med geometridata på samma sätt som du använder andra CLR-typer.
Geometridatatypen (planar) som stöds av SQL Server överensstämmer med OGC(Open Geospatial Consortium) Simple Features for SQL Specification version 1.1.0.
Mer information om OGC-specifikationer finns i följande:
OGC-specifikationer, enkel funktionsåtkomst del 1 – Gemensam arkitektur
OGC-specifikationer, enkel funktionsåtkomst del 2 – SQL-alternativ
SQL Server stöder en delmängd av den befintliga GML 3.1-standarden som definieras i följande schema: https://schemas.microsoft.com/sqlserver/profiles/gml/SpatialGML.xsd.
Skapa eller konstruera en ny geometriinstans
Skapa en ny geometriinstans från en befintlig instans
Datatypen geometri innehåller många inbyggda metoder som du kan använda för att skapa nya geometriinstanser baserat på befintliga instanser.
Skapa en buffert runt en geometri
STBuffer (datatyp för geometri)
BufferWithTolerance (datatyp för geometri)
Skapa en förenklad version av en geometri
Reduce (geometridatatyp)
För att skapa det konvexa skrovet i en geometri
STConvexHull (geometridatatyp)
Skapa en geometri från skärningspunkten mellan två geometrier
STIntersection (geometridatatyp)
Skapa en geometri från en union av två geometrier
STUnion (datatyp för geometri)
Skapa en geometri från de punkter där en geometri inte överlappar en annan
STDifference (datatyp för geometri)
Skapa en geometri från de punkter där två geometrier inte överlappar varandra
STSymDifference (datatyp för geometri)
Skapa en godtycklig punktinstans som ligger på en befintlig geometri
STPointOnSurface (datatyp för geometri)
Konstruera en geometriinstans från Well-Known Text-inmatning
Datatypen geometri innehåller flera inbyggda metoder som genererar en geometri från WKT-representationen Open Geospatial Consortium (OGC). WKT-standarden är en textsträng som gör att geometridata kan utbytas i textformat.
Så här konstruerar du alla typer av geometriinstanser från WKT-indata
STGeomFromText (geometridatatyp)
Parsning (datatyp för geometri)
Så här konstruerar du en geometripunktsinstans från WKT-indata
STPointFromText (geometridatatyp)
Så här konstruerar du en MultiPoint-geometriinstans från WKT-indata
STMPointFromText (geometridatatyp)
Så här konstruerar du en LineString-geometriinstans från WKT-indata
STLineFromText (geometridatatyp)
Skapa en geometrisk MultiLineString-instans från WKT-indata
STMLineFromText (geometridatatyp)
Så här konstruerar du en Polygon-geometriinstans från WKT-indata
STPolyFromText (geometridatatyp)
Så här konstruerar du en multipolygoninstans med geometri från WKT-indata
STMPolyFromText (datatyp för geometri)
Så här konstruerar du en GeometryCollection-instans från WKT-indata
STGeomCollFromText (geometridatatyp)
Konstruera en geometriinstans från Well-Known Binary-indata
WKB är ett binärt format som anges av Open Geospatial Consortium (OGC) som tillåter att geometridata utbyts mellan ett klientprogram och en SQL-databas. Följande funktioner accepterar WKB-indata för att konstruera geometrier:
Så här konstruerar du alla typer av geometriinstanser från WKB-indata
STGeomFromWKB (geometridatatyp)
Så här konstruerar du en geometripunktsinstans från WKB-indata
STPointFromWKB (geometridatatyp)
Så här konstruerar du en MultiPoint-geometriinstans från WKB-indata
STMPointFromWKB (Geometridatatyp)
Så här konstruerar du en LineString-geometriinstans från WKB-indata
STLineFromWKB (geometridatatyp)
Så här konstruerar du en MultiLineString-geometriinstans från WKB-indata
STMLineFromWKB (geometridatatyp)
Så här konstruerar du en Polygon-geometriinstans från WKB-indata
STPolyFromWKB (geometridatatyp)
Så här konstruerar du en multipolygoninstans med geometri från WKB-indata
STMPolyFromWKB (geometridatatyp)
Så här konstruerar du en GeometryCollection-instans från WKB-indata
STGeomCollFromWKB (geometridatatyp)
Konstruera en geometriinstans från GML-textindata
Datatypen geometri tillhandahåller en metod som genererar en geometriinstans från GML, en XML-representation av geometriska objekt. SQL Server stöder en delmängd av GML.
Så här konstruerar du alla typer av geometriinstanser från GML-indata
GeomFromGml (geometridatatyp)
Returnera Well-Known Text och Well-Known Binary från en geometriinstans
Du kan använda följande metoder för att returnera antingen WKT- eller WKB-formatet för en geometriinstans :
Så här returnerar du WKT-representationen av en geometriinstans
STAsText (geometrisk datatyp)
ToString (datatyp för geometri)
Så här returnerar du WKT-representationen av en geometriinstans, inklusive Z- och M-värden
AsTextZM (geometridatatyp)
Så här returnerar du WKB-representationen av en geometriinstans
STAsBinary (geometridatatyp)
Returnera en GML-representation av en geometriinstans
AsGml (geometridatatyp)
Fråga efter egenskaper och beteenden för geometriinstanser
Alla geometriinstanser har ett antal egenskaper som kan hämtas via metoder som SQL Server tillhandahåller. I följande avsnitt definieras egenskaper och beteenden för geometrityper och metoderna för att fråga var och en.
Information om giltighet, instanstyp och GeometryCollection
När en geometriinstans har konstruerats kan du använda följande metoder för att avgöra om den är välformad, returnera instanstypen eller, om det är en samlingsinstans, returnera en specifik geometriinstans .
Returnera instanstypen för en geometri
STGeometryType (datatyp för geometri)
Så här avgör du om en geometri är en viss instanstyp
InstanceOf (geometridatatyp)
För att avgöra om en geometriinstans är väl utformad för sin instanstyp
STIsValid (geometridatatyp)
Konvertera en geometriinstans till en välformad geometriinstans med en instanstyp
MakeValid (datatyp för geometri)
Så här returnerar du antalet geometrier i en geometrisamlingsinstans
STNumGeometries (Geometry-datatyp)
Returnera en specifik geometri i en geometrisamlingsinstans
STGeometryN (datatyp för geometri) STGeometryN (geometriDatatyp)
Antal punkter
Alla icke-fyllda geometriinstanser består av punkter. Dessa punkter representerar X- och Y-koordinaterna för planet där geometrierna ritas. geometri innehåller flera inbyggda metoder för att fråga punkterna i en instans.
Så här returnerar du antalet punkter som utgör en instans
STNumPoints (geometridatatyp)
Så här returnerar du en specifik punkt i en instans
STPointN (geometridatatyp)
Returnera en godtycklig punkt som ligger på en instans
STPointOnSurface (datatyp för geometri)
Så här returnerar du startpunkten för en instans
STStartPoint (geometridatatyp)
Så här returnerar du slutpunkten för en instans
STEndpoint (geometridatatyp)
Så här returnerar du X-koordinaten för en Point-instans
STX (geometridatatyp)
Så här returnerar du Y-koordinaten för en punktinstans
STY (geometridatatyp)
Så här returnerar du den geometriska mittpunkten för en Polygon-, CurvePolygon- eller MultiPolygon-instans
STCentroid (geometridatatyp)
Dimension
En icke-tom geometriinstans kan vara 0-dimensionell, 1-dimensionell eller 2-dimensionell. Nolldimensionella geometrier, till exempel Punkt och MultiPoint, har ingen längd eller yta. Endimensionella objekt, till exempel LineString, CircularString, CompoundCurve och MultiLineString, har längd. Tvådimensionella instanser, till exempel Polygon, CurvePolygon och MultiPolygon, har yta och längd. Tomma instanser rapporterar en dimension på -1, och en GeometryCollection rapporterar ett område som är beroende av innehållstyperna.
Så här returnerar du dimensionen för en instans
STDimension (datatyp för geometri)
Så här returnerar du längden på en instans
STLength (geometridatatyp)
Så här returnerar du området för en instans
STArea (datatyp för geometri)
Empty
En tomgeometriinstans har inga punkter. Längden på tomma LineString-, CircularString-, CompoundCurve- och MultiLineString-instanser är noll. Området för tomma Polygon-, CurvePolygon- och MultiPolygon-instanser är 0.
Så här avgör du om en instans är tom
STIsEmpty (datatyp för geometri).
Simple
För att en geometri av instansen ska vara enkel måste den uppfylla båda dessa krav:
Varje figur av instansen får inte korsa sig själv, förutom vid dess slutpunkter.
Inga två siffror av instansen kan korsa varandra vid en punkt som inte ligger inom båda sina gränser.
Note
Tomma geometrier är alltid enkla.
Så här avgör du om en instans är enkel
STIsSimple (geometridatatyp).
Gräns, inre och exteriör
Det inre av en geometriinstans är det utrymme som upptas av instansen, och det yttre är det utrymme som inte upptas av den.
Gränsen definieras av OGC enligt följande:
Point - och MultiPoint-instanser har ingen gräns.
Gränser för LineString och MultiLineString bildas av startpunkter och slutpunkter, vilket tar bort de som inträffar ett jämnt antal gånger.
DECLARE @g geometry;
SET @g = geometry::Parse('MULTILINESTRING((0 1, 0 0, 1 0, 0 1), (1 1, 1 0))');
SELECT @g.STBoundary().ToString();
Gränsen för en Polygon - eller MultiPolygon-instans är uppsättningen av dess ringar.
DECLARE @g geometry;
SET @g = geometry::Parse('POLYGON((0 0, 3 0, 3 3, 0 3, 0 0), (1 1, 1 2, 2 2, 2 1, 1 1))');
SELECT @g.STBoundary().ToString();
Så här returnerar du gränsen för en instans
STBoundary (geometridatatyp)
Envelope
Kuvertet för en geometriinstans, även kallat avgränsningslådan, är den axeljusterade rektangel som bildas av instansens minsta och högsta koordinater (X,Y).
Så här returnerar du kuvertet för en instans
STEnvelope (datatyp för geometri)
Closure
En slutengeometriinstans är en figur vars startpunkter och slutpunkter är desamma. Polygoninstanser anses vara stängda. Punktinstanser är inte stängda.
En ring är en enkel, stängd LineString-instans .
Så här avgör du om en instans är stängd
STIsClosed (geometridatatyp)
Så här avgör du om en instans är en ring
STIsRing (geometridatatyp)
Så här returnerar du den yttre ringen för en Polygon-instans
STExteriorRing (geometridatatyp)
För att returnera antalet inre ringar i en Polygon
STNumInteriorRing (geometridatatyp)
Så här returnerar du en angiven inre ring i en Polygon
STInteriorRingN (geometridatatyp)
Spatial referens-ID (SRID)
SRID (Spatial Reference ID) är en identifierare som anger vilket koordinatsystem geometriinstansen representeras i. Två instanser med olika SRID är ojämförbara.
Ange eller returnera SRID för en instans
STSrid (geometridatatyp)
Note
Den här egenskapen kan ändras.
Fastställa relationer mellan geometriinstanser
Datatypen geometri innehåller många inbyggda metoder som du kan använda för att fastställa relationer mellan två geometriinstanser .
För att avgöra om två instanser består av samma punktuppsättning
STEquals (geometridatatyp)
Så här avgör du om två instanser är uppdelade
STDisjoint (datatyp för geometri)
Så här avgör du om två instanser korsar varandra
STIntersects (geometridatatyp)
För att avgöra om två instanser berör varandra
STTouches (datatyp för geometri)
Så här avgör du om två instanser överlappar varandra
STOverlaps (datatyp för geometri)
Avgör om två instanser överlappar
STCrosses (datatyp för geometri)
Så här avgör du om en instans finns inom en annan
STWithin (datatyp för geometri)
Så här avgör du om en instans innehåller en annan
STContains (datatyp för geometri)
Så här avgör du om en instans överlappar en annan
STOverlaps (datatyp för geometri)
För att avgöra om två instanser är rumsligt relaterade
STRelate (geometridatatyp)
För att fastställa det kortaste avståndet mellan punkter i två geometrier
STDistance (datatyp för geometri)
geometriinstanser Standard till noll SRID
Standard-SRID för geometriinstanser i SQL Server är 0. Med rumsliga geometridata krävs inte det specifika SRID för den rumsliga instansen för att utföra beräkningar. Instanser kan därför finnas i odefinierat planarutrymme. Sql Server Database Engine använder SRID för att ange odefinierat planarutrymme i beräkningarna av metoder för 0.
Remarks
Geometri - och geografityper kan inte användas som tabellkolumner i SQL-analysslutpunkten i Microsoft Fabric eller
Warehouse i Microsoft Fabric.
Examples
Följande två exempel visar hur du lägger till och frågar geometridata.
Example A.
I det här exemplet skapas en tabell med en identitetskolumn och en geometry kolumn GeomCol1. En tredje kolumn renderar geometry kolumnen i dess WKT-återgivning (Open Geospatial Consortium) (OGC) Well-Known Text (WKT) och använder STAsText() metoden. Två rader infogas sedan: en rad innehåller en LineString instans av geometryoch 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),
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
Example B.
I det STIntersection() här exemplet används metoden för att returnera de punkter där de två tidigare infogade geometry instanserna korsar varandra.
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();