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 Analytics-végpont a Microsoft Fabricben
Raktár a Microsoft Fabricben
SQL-adatbázis a Microsoft Fabricben
A CircularString nulla vagy több folytonos körívszakasz gyűjteménye. A körívszegmens egy kétdimenziós sík három pontjával meghatározott íves szegmens; az első pont nem lehet ugyanaz, mint a harmadik pont. Ha a körívszegmens mindhárom pontja kollineáris, az ívszegmens vonalszegmensként lesz kezelve.
CircularString-példányok
Az alábbi rajz érvényes CircularString-példányokat mutat be:
Elfogadott esetek
A CircularString-példány akkor fogadható el, ha üres, vagy páratlan számú pontot tartalmaz( n), ahol n > 1. A rendszer a következő CircularString-példányokat fogadja el.
DECLARE @g1 geometry = 'CIRCULARSTRING EMPTY';
DECLARE @g2 geometry = 'CIRCULARSTRING(1 1, 2 0, -1 1)';
DECLARE @g3 geometry = 'CIRCULARSTRING(1 1, 2 0, 2 0, 2 0, 1 1)';
@g3 Azt mutatja, hogy a CircularString-példány elfogadható, de érvénytelen. A következő CircularString-példány deklarációja nem fogadható el. Ez az utasítás kivált egy System.FormatException.
DECLARE @g geometry = 'CIRCULARSTRING(1 1, 2 0, 2 0, 1 1)';
Érvényes példányok
Egy érvényes CircularString-példánynak üresnek kell lennie, vagy a következő attribútumokkal kell rendelkeznie:
- Legalább egy körívszakaszt kell tartalmaznia (azaz legalább három ponttal kell rendelkeznie).
- A sorozat minden körív-szegmensének utolsó végpontjának az utolsó szegmens kivételével a sorozat következő szegmensének első végpontjának kell lennie.
- Páratlan számú ponttal kell rendelkeznie.
- Nem fedheti át önmagát egy intervallumon belül.
- Bár a CircularString-példányok tartalmazhatnak vonalszegmenseket, ezeket a vonalszegmenseket három kollineáris ponttal kell definiálni.
Az alábbi példa érvényes CircularString-példányokat mutat be.
DECLARE @g1 geometry = 'CIRCULARSTRING EMPTY';
DECLARE @g2 geometry = 'CIRCULARSTRING(1 1, 2 0, -1 1)';
DECLARE @g3 geometry = 'CIRCULARSTRING(1 1, 2 0, 2 0, 1 1, 0 1)';
DECLARE @g4 geometry = 'CIRCULARSTRING(1 1, 2 2, 2 2)';
SELECT @g1.STIsValid(), @g2.STIsValid(), @g3.STIsValid(),@g4.STIsValid();
A CircularString-példánynak legalább két körívszakaszt kell tartalmaznia egy teljes kör definiálásához. A CircularString-példányok nem használhatnak egyetlen körívszakaszt (például (1 1, 3 1, 1 1)) a teljes kör definiálásához. Használja a (1 1, 2 2, 3 1, 2 0, 1 1) pontokat a kör definiálásához.
Az alábbi példa érvénytelen CircularString-példányokat mutat be.
DECLARE @g1 geometry = 'CIRCULARSTRING(1 1, 2 0, 1 1)';
DECLARE @g2 geometry = 'CIRCULARSTRING(0 0, 0 0, 0 0)';
SELECT @g1.STIsValid(), @g2.STIsValid();
Kollineáris pontokat tartalmazó példányok
A következő esetekben a körívszegmensek vonalszegmensként lesznek kezelve:
- Ha mindhárom pont kollineáris (például (1 3, 4 4, 7 5)).
- Ha az első és a középső pont azonos, de a harmadik pont eltérő (például (1 3, 1 3, 7 5)).
- Ha a középső és az utolsó pont azonos, de az első pont más (például (1 3, 4 4, 4 4)).
Examples
A. Geometria példány létrehozása üres CircularString használatával
Ez a példa egy üres CircularString-példány létrehozását mutatja be:
DECLARE @g geometry;
SET @g = geometry::Parse('CIRCULARSTRING EMPTY');
B. Egy geometriapéldány példányosítása egy CircularString segítségével, amely egy köríves szegmenst tartalmaz
Az alábbi példa bemutatja, hogyan hozhat létre CircularString-példányt egyetlen körkörös ívszegmenssel (félkörrel):
DECLARE @g geometry;
SET @g = geometry:: STGeomFromText('CIRCULARSTRING(2 0, 1 1, 0 0)', 0);
SELECT @g.ToString();
C. Geometriai objektum létrehozása olyan CircularString használatával, amely több körkörös ívszegmenst tartalmaz.
Az alábbi példa bemutatja, hogyan hozhat létre egy Több köríves szegmenst (teljes kör) tartalmazó CircularString-példányt :
DECLARE @g geometry;
SET @g = geometry::Parse('CIRCULARSTRING(2 1, 1 2, 0 1, 1 0, 2 1)');
SELECT 'Circumference = ' + CAST(@g.STLength() AS NVARCHAR(10));
Itt van az eredmények összessége.
Circumference = 6.28319
Hasonlítsa össze a kimenetet, ha a LineStringet használja a CircularString helyett:
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('LINESTRING(2 1, 1 2, 0 1, 1 0, 2 1)', 0);
SELECT 'Perimeter = ' + CAST(@g.STLength() AS NVARCHAR(10));
Itt van az eredmények összessége.
Perimeter = 5.65685
A CircularString-példa értéke közel 2∏, ami a kör tényleges kerülete.
D. Geometriai példány deklarálása és példányosítása CircularString használatával ugyanabban a kifejezésben
Ez a kódrészlet bemutatja, hogyan deklarálhat és példányosíthat egy geometriai példányt egy CircularString utasítással ugyanabban az utasításban:
DECLARE @g geometry = 'CIRCULARSTRING(0 0, 1 2.1082, 3 6.3246, 0 7, -3 6.3246, -1 2.1082, 0 0)';
E. Földrajzi példány létrehozása CircularString használatával
Az alábbi példa bemutatja, hogyan deklarálhat és példányosíthat földrajzi példányokat egy CircularString használatával:
DECLARE @g geography = 'CIRCULARSTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';
F. Egy egyenes vonalú CircularString használatával geometriai példány létrehozása
Az alábbi példa bemutatja, hogyan hozható létre egyenes vonalú CircularString-példány :
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('CIRCULARSTRING(0 0, 1 2, 2 4)', 0);
Kapcsolódó tartalom
- Térbeli adattípusok áttekintése
- CompoundCurve
- MakeValid (földrajzi adattípus)
- MakeValid (geometriai adattípus)
- STIsValid (geometriai adattípus)
- STIsValid (földrajzi adattípus)
- STLength (geometriai adattípus)
- STStartPoint (geometriai adattípus)
- STEndpoint (geometriai adattípus)
- STPointN (geometriai adattípus)
- STNumPoints (geometriai adattípus)
- STIsRing (geometriai adattípus)
- STIsClosed (geometriai adattípus)
- STPointOnSurface (geometriai adattípus)
- LineString