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
LineString to jednowymiarowy obiekt reprezentujący sekwencję punktów i segmenty linii łączące je w danych przestrzennych aparatu bazy danych SQL.
Wystąpienia LineString
Na poniższej ilustracji przedstawiono przykłady wystąpień LineString .
Diagram przedstawiający przykłady instancji geometrii LineString.
Jak pokazano na ilustracji:
Rysunek 1 jest prostą, niedomkniętą instancją LineString.
Rysunek 2 jest nieskładnym, niezamkniętym wystąpieniem LineString.
Rysunek 3 jest zamkniętym, prostym wystąpieniem LineString i dlatego jest pierścieniem.
Rysunek 4 przedstawia zamknięte, nieskomplikowane wystąpienie LineString, a więc nie jest pierścieniem.
Zaakceptowane wystąpienia
Zaakceptowane wystąpienia LineString mogą być wprowadzane do zmiennej geometrycznej, ale mogą nie być prawidłowymi wystąpieniami LineString . Aby można było zaakceptować wystąpienie LineString , należy spełnić następujące kryteria. Wystąpienie musi składać się z co najmniej dwóch punktów lub może być puste. Akceptowane są następujące wystąpienia LineString.
DECLARE @g1 geometry = 'LINESTRING EMPTY';
DECLARE @g2 geometry = 'LINESTRING(1 1,2 3,4 8, -6 3)';
DECLARE @g3 geometry = 'LINESTRING(1 1, 1 1)';
@g3 pokazuje, że można zaakceptować wystąpienie LineString , ale nie jest prawidłowe.
Następujące wystąpienie LineString nie jest akceptowane. Zgłasza błąd System.FormatException.
DECLARE @g geometry = 'LINESTRING(1 1)';
Prawidłowe wystąpienia
Aby wystąpienie LineString było prawidłowe, musi spełniać następujące kryteria.
- Wystąpienie LineString musi zostać zaakceptowane .
- Jeśli wystąpienie LineString nie jest puste, musi zawierać co najmniej dwa odrębne punkty.
- Wystąpienie LineString nie może nakładać się na siebie w odstępie co najmniej dwóch kolejnych punktów.
Następujące wystąpienia LineString są prawidłowe.
DECLARE @g1 geometry= 'LINESTRING EMPTY';
DECLARE @g2 geometry= 'LINESTRING(1 1, 3 3)';
DECLARE @g3 geometry= 'LINESTRING(1 1, 3 3, 2 4, 2 0)';
DECLARE @g4 geometry= 'LINESTRING(1 1, 3 3, 2 4, 2 0, 1 1)';
SELECT @g1.STIsValid(), @g2.STIsValid(), @g3.STIsValid(), @g4.STIsValid();
Następujące wystąpienia LineString są nieprawidłowe.
DECLARE @g1 geometry = 'LINESTRING(1 4, 3 4, 2 4, 2 0)';
DECLARE @g2 geometry = 'LINESTRING(1 1, 1 1)';
SELECT @g1.STIsValid(), @g2.STIsValid();
Warning
Wykrywanie nakładających się elementów LineString opiera się na obliczeniach zmiennoprzecinkowych, które nie są dokładne.
Examples
Przykład A.
W poniższym przykładzie pokazano, jak utworzyć instancję geometry LineString z trzema punktami i SRID ustawionym na 0.
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('LINESTRING(1 1, 2 4, 3 9)', 0);
Przykład B.
Każdy punkt w wystąpieniu LineString może zawierać wartości Z (wysokość) i M (mierzenie). W tym przykładzie dodano wartości M do instancji LineString, która została utworzona w poprzednim przykładzie. Wartości M i Z mogą być NULL wartościami.
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('LINESTRING(1 1 NULL 0, 2 4 NULL 12.3, 3 9 NULL 24.5)', 0);
Przykład C.
W poniższym przykładzie zobaczysz, jak utworzyć wystąpienie geometry LineString z dwoma identycznymi punktami. Wywołanie do IsValid wskazuje, że instancja LineString jest nieważna. Wywołanie MakeValid konwertuje wystąpienie LineString na Point.
DECLARE @g geometry
SET @g = geometry::STGeomFromText('LINESTRING(1 3, 1 3)',0);
IF @g.STIsValid() = 1
BEGIN
SELECT @g.ToString() + ' is a valid LineString.';
END
ELSE
BEGIN
SELECT @g.ToString() + ' is not a valid LineString.';
SET @g = @g.MakeValid();
SELECT @g.ToString() + ' is a valid Point.';
END
Oto zestaw wyników.
LINESTRING(1 3, 1 3) is not a valid LineString
POINT(1 3) is a valid Point.
Treści powiązane
- STLength (typ danych geometrycznych)
- STStartPoint (geometryczny typ danych)
- STEndpoint (geometryczny typ danych)
- STPointN (geometria typu danych)
- STNumPoints (geometria typu danych)
- StIsRing (geometria typu danych)
- STIsClosed (Typ danych geometryczny)
- STPointOnSurface (typ danych geometryczny)
- Dane przestrzenne