Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Punkt końcowy analizy SQL w usłudze Microsoft Fabric
Magazyn w usłudze Microsoft Fabric
Baza danych SQL w usłudze Microsoft Fabric
Planarny typ danych przestrzennych, geometria, reprezentuje dane w układzie współrzędnych euklidesowych (płaskich). Ten typ jest implementowany jako typ danych CLR (Common Language Runtime) w programie SQL Server.
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.
Typ danych geometrycznych (planar) obsługiwany przez program SQL Server jest zgodny z prostymi funkcjami Open Geospatial Consortium (OGC) dla specyfikacji SQL w wersji 1.1.0.
Aby uzyskać więcej informacji na temat specyfikacji OGC, zobacz następujące artykuły:
specyfikacje OGC, prosty dostęp do funkcji — część 1 — wspólna architektura
specyfikacje OGC, prosty dostęp do funkcji — część 2 — opcje SQL
Program SQL Server obsługuje podzestaw istniejącego standardu GML 3.1, który jest zdefiniowany w następującym schemacie: https://schemas.microsoft.com/sqlserver/profiles/gml/SpatialGML.xsd.
Tworzenie lub konstrukcja nowego obiektu geometrii
Tworzenie nowego wystąpienia geometrii na podstawie istniejącego wystąpienia
Typ danych geometrycznych udostępnia wiele wbudowanych metod, których można użyć do tworzenia nowych wystąpień geometrycznych na podstawie istniejących wystąpień.
Aby utworzyć bufor wokół geometrii
STBuffer (geometria typu danych)
BufferWithTolerance (typ danych geometrycznych)
Aby utworzyć uproszczoną wersję geometrii
Redukuj (geometryczny typ danych)
Aby utworzyć wypukły kadłub geometrii
STConvexHull (typ danych geometryczny)
Aby utworzyć geometrię na podstawie przecięcia dwóch geometrii
STIntersection (geometry — typ danych)
Aby utworzyć geometrię na podstawie unii dwóch geometrii
STUnion (geometria typu danych)
Aby utworzyć geometrię na podstawie punktów, w których jedna geometria nie nakłada się na drugą
StDifference (geometria typ danych)
Aby utworzyć geometrię na podstawie punktów, w których dwie geometrie nie nakładają się na siebie
STSymDifference (geometryczny typ danych)
Aby utworzyć wystąpienie dowolnego Punktu, które leży na istniejącej geometrii
STPointOnSurface (geometry— typ danych)
Utwórz wystąpienie geometrii z inputu Well-Known Text.
Typ danych geometrycznych zawiera kilka wbudowanych metod, które generują geometrię na podstawie reprezentacji WKT Open Geospatial Consortium (OGC). Standard WKT to ciąg tekstowy, który umożliwia wymianę danych geometrycznych w postaci tekstowej.
Aby utworzyć dowolny typ wystąpienia geometrii z danych wejściowych WKT
STGeomFromText (typ danych geometrycznych)
Analiza składniowa (typ danych geometrycznych)
Aby utworzyć instancję geometrii punktu na podstawie danych wejściowych WKT
STPointFromText (geometryczny typ danych)
Aby utworzyć obiekt geometryczny MultiPoint z wejściowych danych WKT
STMPointFromText (typ danych geometrycznych)
Aby utworzyć wystąpienie geometryczne LineString z danych wejściowych WKT
STLineFromText (geometryczny typ danych)
Aby utworzyć wystąpienie geometrii MultiLineString z danych wejściowych WKT
STMLineFromText (typ danych geometrycznych)
Aby utworzyć wystąpienie geometryczne wielokąta z danych wejściowych WKT
STPolyFromText (typ danych geometrycznych)
Aby utworzyć wystąpienie geometrii MultiPolygon z danych wejściowych WKT
STMPolyFromText (typ danych geometrycznych)
Aby utworzyć wystąpienie geometryczne GeometryCollection z danych wejściowych WKT
STGeomCollFromText (typ danych geometrycznych)
Skonstruować wystąpienie geometrii z danych wejściowych w formacie Well-Known Binary
WKB to format binarny określony przez Open Geospatial Consortium (OGC), który umożliwia wymianę danych geometrycznych między aplikacją kliencką a bazą danych SQL. Następujące funkcje akceptują dane wejściowe WKB w celu konstruowania geometrii:
Aby utworzyć dowolny typ instancji geometrii z danych wejściowych WKB
STGeomFromWKB (geometryczny typ danych)
Aby utworzyć instancję punktu geometrii z wejściowych danych WKB
STPointFromWKB (geometryczny typ danych)
Aby skonstruować instancję geometrii MultiPoint z wejściowych danych WKB
STMPointFromWKB (geometryczny typ danych)
Aby utworzyć wystąpienie Geometry LineString z danych wejściowych WKB
STLineFromWKB (geometryczny typ danych)
Aby utworzyć wystąpienie geometrii MultiLineString z danych wejściowych formatu WKB
STMLineFromWKB (geometryczny typ danych)
Aby utworzyć instancję geometrii typu Wielokąt z danych wejściowych WKB
STPolyFromWKB (typ danych geometrycznych)
Aby utworzyć wystąpienie geometrii MultiPolygon z danych wejściowych WKB
STMPolyFromWKB (typ danych geometryczny)
Aby utworzyć instancję geometryczną GeometryCollection z danych wejściowych WKB
STGeomCollFromWKB (geometryczny typ danych)
Utwórz instancję geometrii z tekstu GML
Typ danych geometrycznych udostępnia metodę, która generuje wystąpienie geometrii z języka GML, reprezentację XML obiektów geometrycznych. Program SQL Server obsługuje podzestaw języka GML.
Konstruowanie dowolnego typu wystąpienia geometrii z danych wejściowych GML
GeomFromGml (geometry — typ danych)
Zwróć Well-Known Text i Well-Known Binary dla instancji geometrii
Możesz użyć następujących metod, aby zwrócić format WKT lub WKB dla instancji geometrii.
Aby zwrócić reprezentację WKT obiektu geometrii
STAsText (geometria typu danych)
ToString (geometria typu danych)
Aby zwrócić reprezentację WKT wystąpienia geometrii, w tym wszystkie wartości Z i M
AsTextZM (geometryczny typ danych)
Aby zwrócić reprezentację WKB wystąpienia geometrii
STAsBinary (geometry — typ danych)
Aby zwrócić GML-ową reprezentację instancji geometrii
AsGml (geometria typu danych)
Wykonywanie zapytań dotyczących właściwości i zachowań wystąpień geometrii
Wszystkie wystąpienia geometryczne mają wiele właściwości, które można pobrać za pomocą metod zapewnianych przez program SQL Server. W poniższych tematach zdefiniowano właściwości i zachowania typów geometrii oraz metody wykonywania zapytań względem każdego z nich.
Ważność, typ wystąpienia i informacje GeometryCollection
Po skonstruowaniu instancji geometrii można użyć następujących metod, aby sprawdzić, czy jest poprawnie sformułowana, zwrócić typ instancji lub, jeśli jest to instancja kolekcji, zwrócić określoną instancję geometrii.
Aby uzyskać typ instancji obiektu geometrycznego
STGeometryType (geometry— typ danych)
Aby określić, czy geometria jest danym typem wystąpienia
InstanceOf (geometria typu danych)
Aby określić, czy instancja geometrii jest poprawnie sformułowana dla jej typu
STIsValid (typ danych geometrycznych)
Aby przekonwertować wystąpienie geometryczne na dobrze sformułowane wystąpienie geometryczne z typem wystąpienia
MakeValid (geometria typu danych)
Aby zwrócić liczbę geometrii w wystąpieniu kolekcji geometrycznej
STNumGeometries (typ danych geometry)
Aby zwrócić określoną geometrię w wystąpieniu kolekcji geometrycznej
STGeometryN (geometryczny typ danych) STGeometryN (geometryczny typ danych)
Liczba punktów
Wszystkie niepuste wystąpienia geometrii składają się z punktów. Punkty te reprezentują współrzędne X i Y płaszczyzny, na której są rysowane geometrie. geometria udostępnia wiele wbudowanych metod do wykonywania zapytań dotyczących punktów wystąpienia.
Aby zwrócić liczbę punktów tworzących instancję
STNumPoints (geometria typu danych)
Aby zwrócić określony punkt w wystąpieniu
STPointN (geometria typu danych)
Aby zwrócić dowolny punkt, który znajduje się na instancji
STPointOnSurface (geometry— typ danych)
Aby zwrócić punkt początkowy wystąpienia
STStartPoint (geometryczny typ danych)
Aby zwrócić punkt końcowy wystąpienia
STEndpoint (geometryczny typ danych)
Aby zwrócić współrzędną X instancji obiektu Point
STX (geometryczny typ danych)
Aby zwrócić współrzędną Y wystąpienia punktu
STY (geometryczny typ danych)
Aby zwrócić środek geometryczny wystąpienia typu Polygon, CurvePolygon lub MultiPolygon
STCentroid (geometria typu danych)
Dimension
Niepusta instancja geometrii może być 0-, 1-, lub 2-wymiarowa. Geometrie bezwymiarowe, takie jak Point i MultiPoint, nie mają długości ani obszaru. Obiekty jednowymiarowe, takie jak LineString, CircularString, CompoundCurve i MultiLineString, mają długość. Wystąpienia dwuwymiarowe, takie jak Polygon, CurvePolygon i MultiPolygon, mają powierzchnię i długość. Puste instancje będą podawać wymiar -1, a obiekt GeometryCollection będzie zgłaszać obszar zależny od typów jego zawartości.
Aby zwrócić wymiar wystąpienia
STDimension (typ danych geometrycznych)
Aby zwrócić długość instancji
STLength (typ danych geometrycznych)
Aby zwrócić obszar wystąpienia
StArea (geometria typu danych)
Empty
Wystąpienie pustej geometrii nie ma żadnych punktów. Długość pustych wystąpień LineString, CircularString, CompoundCurve i MultiLineString wynosi zero. Obszar pustych wystąpień Polygon, CurvePolygon i MultiPolygon wynosi 0.
Aby określić, czy wystąpienie jest puste
STIsEmpty (geometryczny typ danych).
Simple
Aby geometria wystąpienia była prosta, musi spełniać oba te wymagania:
Każda figura w obiekcie nie może się przecinać sama, z wyjątkiem swoich punktów końcowych.
Żadne dwie figury przypadku nie mogą przecinać się nawzajem w punkcie, który nie znajduje się na obu ich granicach.
Note
Puste geometrie są zawsze proste.
Aby określić, czy wystąpienie jest proste
STIsSimple (geometryczny typ danych).
Granica, wnętrze i zewnętrzna
Wnętrze wystąpienia geometrii to przestrzeń, którą zajmuje wystąpienie, a zewnętrze to przestrzeń, którą nie zajmuje.
Granica jest definiowana przez OGC w następujący sposób:
Instancje Punkt i MultiPoint nie mają granicy.
Granice LineString i MultiLineString są tworzone przez punkty początkowe i punkty końcowe, usuwając te, które występują parzysta liczba razy.
DECLARE @g geometry;
SET @g = geometry::Parse('MULTILINESTRING((0 1, 0 0, 1 0, 0 1), (1 1, 1 0))');
SELECT @g.STBoundary().ToString();
Granicą wystąpienia Wielokąta lub MultiPolygonu jest zestaw jego pierścieni.
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();
Aby zwrócić granicę instancji
STBoundary (geometria typu danych)
Envelope
Koperta wystąpienia geometrii, znana również jako pole ograniczenia, to prostokąt wyrównany do osi utworzony przez współrzędne minimalne i maksymalne (X,Y) wystąpienia.
Zwrócić kopertę wystąpienia
STEnvelope (geometry — typ danych)
Closure
Zamknięte wystąpienie geometrii, to figura, której punkty początkowe i punkty końcowe są takie same. Wystąpienia Polygon są uznawane za zamknięte. Wystąpienia Point nie są zamykane.
Pierścień to proste, zamknięte wystąpienie LineString .
Aby określić, czy wystąpienie jest zamknięte
STIsClosed (geometria typ danych)
Aby określić, czy obiekt jest pierścieniem
StIsRing (geometria typu danych)
Aby uzyskać zewnętrzny pierścień wielokąta
STExteriorRing (typ danych geometrycznych)
Aby zwrócić liczbę pierścieni wewnętrznych w wielokącie
STNumInteriorRing (geometry— typ danych)
Aby zwrócić określony pierścień wewnętrzny wielokąta
STInteriorRingN (geometryczny typ danych)
Identyfikator odwołania przestrzennego (SRID)
Identyfikator odwołania przestrzennego (SRID) to znacznik określający, w jakim układzie współrzędnych jest reprezentowane wystąpienie geometrii. Dwa wystąpienia z różnymi identyfikatorami SRID są nieporównywalne.
Ustawić lub zwrócić identyfikator SRID instancji
Note
Tę właściwość można zmodyfikować.
Określanie relacji między wystąpieniami geometrii
Typ danych geometrycznych udostępnia wiele wbudowanych metod, których można użyć do określania relacji między dwoma wystąpieniami geometrii .
Aby określić, czy dwa wystąpienia składają się z tego samego zestawu punktów
STEquals (geometria typu danych)
Aby ustalić, czy dwa wystąpienia są rozłączne
STDisjoint (typ danych geometryczny)
Aby określić, czy dwa wystąpienia przecinają się
STIntersects (geometry — typ danych)
Aby ustalić, czy dwa wystąpienia się stykają
STTouches (typ danych geometryczny)
Aby określić, czy dwa wystąpienia nakładają się na siebie
STOverlaps (geometria typu danych)
Aby określić, czy dwa wystąpienia są krzyżowe
STCrosses (typ danych geometrycznych)
Aby określić, czy jedno wystąpienie znajduje się w innym
STWithin (typ danych geometrycznych)
Aby określić, czy jedno wystąpienie zawiera inne
StContains (geometry — typ danych)
Aby określić, czy jedno wystąpienie nakłada się na inne
STOverlaps (geometria typu danych)
Aby określić, czy dwa wystąpienia są powiązane przestrzennie
STRelate (typ danych geometrycznych)
Aby określić najkrótszą odległość między punktami w dwóch geometriach
STDistance (geometryczny typ danych)
Instancje geometrii domyślnie do zera SRID.
Domyślny identyfikator SRID dla wystąpień geometrycznych w programie SQL Server to 0. W przypadku danych przestrzennych geometrii konkretny identyfikator SRID wystąpienia przestrzennego nie jest wymagany do wykonywania obliczeń; w związku z tym wystąpienia mogą znajdować się w niezdefiniowanym obszarze planarnym. Aby wskazać niezdefiniowaną przestrzeń planarną w obliczeniach metod typów danych geometrycznych , aparat bazy danych programu SQL Server używa identyfikatora SRID 0.
Remarks
Typy geometrii i geografii nie mogą być używane jako kolumny tabeli w punkcie końcowym analizy SQL w usłudze Microsoft Fabric lub
Magazynie w usłudze Microsoft Fabric.
Examples
W poniższych dwóch przykładach pokazano, jak dodawać dane geometryczne i wykonywać zapytania o nie.
Przykład A.
W tym przykładzie zostanie utworzona tabela z kolumną tożsamości i kolumną geometryGeomCol1. 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
Przykład B.
W tym przykładzie użyto metody STIntersection(), aby zwrócić punkty, w których dwa wcześniej wstawione wystąpienia geometry 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();