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 Analytics-eindpunt in Microsoft Fabric
Magazijn in Microsoft Fabric
SQL-database in Microsoft Fabric Preview
Een CircularString is een verzameling van nul of meer doorlopende cirkelvormige boogsegmenten. Een cirkelvormig boogsegment is een gebogen segment dat wordt gedefinieerd door drie punten in een tweedimensionaal vlak; het eerste punt mag niet hetzelfde zijn als het derde punt. Als alle drie de punten van een cirkelvormige boogsegment een arcsegment zijn, wordt het boogsegment behandeld als een lijnsegment.
CircularString instances
In de onderstaande tekening ziet u geldige CircularString-exemplaren :
Accepted instances
Een CircularString-exemplaar wordt geaccepteerd als deze leeg is of een oneven aantal punten bevat, n, waarbij n > 1. De volgende CircularString-exemplaren worden geaccepteerd.
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 geeft aan dat het CircularString-exemplaar mogelijk wordt geaccepteerd, maar niet geldig is. De volgende declaratie van het CircularString-exemplaar wordt niet geaccepteerd. Deze verklaring gooit een System.FormatException.
DECLARE @g geometry = 'CIRCULARSTRING(1 1, 2 0, 2 0, 1 1)';
Valid instances
Een geldig CircularString-exemplaar moet leeg zijn of de volgende kenmerken hebben:
- Het moet ten minste één cirkelvormig boogsegment bevatten (dat wil gezegd minimaal drie punten hebben).
- Het laatste eindpunt voor elk cirkelbogensegment in de reeks, met uitzondering van het laatste segment, moet het eerste eindpunt zijn voor het volgende segment in de reeks.
- Het moet een oneven aantal punten hebben.
- Het mag zichzelf niet overlappen over een interval.
- Hoewel CircularString-exemplaren lijnsegmenten kunnen bevatten, moeten deze lijnsegmenten worden gedefinieerd door drie mspeaire punten.
In het volgende voorbeeld ziet u geldige CircularString-exemplaren .
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();
Een CircularString-exemplaar moet ten minste twee cirkelvormige boogsegmenten bevatten om een volledige cirkel te definiëren. Een CircularString-exemplaar kan geen enkel cirkelvormig boogsegment (zoals (1 1, 3 1, 1 1)) gebruiken om een volledige cirkel te definiëren. Gebruik (1 1, 2 2, 3 1, 2 0, 1 1) om de cirkel te definiëren.
In het volgende voorbeeld ziet u CircularString-exemplaren die niet geldig zijn.
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();
Exemplaren met collinsearpunten
In de volgende gevallen wordt een cirkelvormige boogsegment behandeld als een lijnsegment:
- Wanneer alle drie de punten hoofdletters zijn (bijvoorbeeld (1 3, 4 4, 7 5)).
- Wanneer het eerste en middelste punt hetzelfde zijn, maar het derde punt verschilt (bijvoorbeeld (1 3, 1 3, 7 5)).
- Wanneer het middelste en laatste punt hetzelfde zijn, maar het eerste punt verschilt (bijvoorbeeld (1 3, 4 4, 4 4)).
Examples
A. Instantie van geometrie instantiëren met een lege circularString
In dit voorbeeld ziet u hoe u een leeg CircularString-exemplaar maakt:
DECLARE @g geometry;
SET @g = geometry::Parse('CIRCULARSTRING EMPTY');
B. Instantie van een geometrieexemplaren instantiëren met behulp van een circularstring met één cirkelvormig boogsegment
In het volgende voorbeeld ziet u hoe u een CircularString-exemplaar maakt met één cirkelvormig boogsegment (halve cirkel):
DECLARE @g geometry;
SET @g = geometry:: STGeomFromText('CIRCULARSTRING(2 0, 1 1, 0 0)', 0);
SELECT @g.ToString();
C. Instantie van een geometrieexemplaren instantiëren met behulp van een circularstring met meerdere cirkelvormige boogsegmenten
In het volgende voorbeeld ziet u hoe u een CircularString-exemplaar maakt met meer dan één cirkelvormig boogsegment (volledige cirkel):
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));
Hier is het resultatenoverzicht.
Circumference = 6.28319
Vergelijk de uitvoer wanneer LineString wordt gebruikt in plaats van CircularString:
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));
Hier is het resultatenoverzicht.
Perimeter = 5.65685
De waarde voor het voorbeeld CircularString ligt dicht bij 2∏, wat de werkelijke omtrek van de cirkel is.
D. Een Geometrie-exemplaar declareren en instantiëren met een CircularString in dezelfde instructie
Dit fragment laat zien hoe u een geometrie-exemplaar declareert en instantiëren met een CircularString in dezelfde instructie:
DECLARE @g geometry = 'CIRCULARSTRING(0 0, 1 2.1082, 3 6.3246, 0 7, -3 6.3246, -1 2.1082, 0 0)';
E. Instantie van geografie instantiëren met een circularString
In het volgende voorbeeld ziet u hoe u een geografisch exemplaar declareert en instantiëren met een CircularString:
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. Instantie van geometrie instantiëren met een CircularString die een rechte lijn is
In het volgende voorbeeld ziet u hoe u een CircularString-exemplaar maakt dat een rechte lijn is:
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('CIRCULARSTRING(0 0, 1 2, 2 4)', 0);
Related content
- Overzicht van ruimtelijke gegevenstypen
- CompoundCurve
- MakeValid (geografiegegevenstype)
- MakeValid (geometriegegevenstype)
- STIsValid (geometriegegevenstype)
- STIsValid (geografiegegevenstype)
- STLength (geometriegegevenstype)
- STStartPoint (geometriegegevenstype)
- STEndpoint (geometriegegevenstype)
- STPointN (geometriegegevenstype)
- STNumPoints (geometriegegevenstype)
- STIsRing (geometriegegevenstype)
- STIsClosed (geometriegegevenstype)
- STPointOnSurface (geometriegegevenstype)
- LineString