Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
A CircularString est une collection de zéro ou plus de segments d’arc circulaire continus. Un segment d’arc circulaire est un segment courbé défini par trois points dans un plan bidimensionnel ; le premier point ne peut pas être le même que le troisième point. Si les trois points d’un segment d’arc circulaire sont collineux, le segment d’arc est traité comme un segment de trait.
Important
Pour obtenir une description détaillée et des exemples des nouvelles fonctionnalités spatiales introduites dans SQL Server 2012, y compris le CircularString sous-type, téléchargez le livre blanc, Nouvelles fonctionnalités spatiales dans SQL Server 2012.
Instances de CircularString
Le dessin ci-dessous présente des instances valides CircularString :
Instances acceptées
Une CircularString instance est acceptée s’il est vide ou contient un nombre impair de points, n, où n > 1. Les instances suivantes CircularString sont acceptées.
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 indique que cette CircularString instance peut être acceptée, mais non valide. La déclaration d’instance CircularString suivante n’est pas acceptée. Cette déclaration génère un System.FormatException.
DECLARE @g geometry = 'CIRCULARSTRING(1 1, 2 0, 2 0, 1 1)';
Instances valides
Une instance valide CircularString doit être vide ou avoir les attributs suivants :
Il doit contenir au moins un segment d’arc circulaire (autrement dit, avoir un minimum de trois points).
Le dernier point de terminaison de chaque segment d’arc circulaire de la séquence, à l’exception du dernier segment, doit être le premier point de terminaison du segment suivant dans la séquence.
Il doit avoir un nombre impair de points.
Il ne peut pas se chevaucher sur un intervalle.
Bien que
CircularStringles instances puissent contenir des segments de trait, ces segments de ligne doivent être définis par trois points collineux.
L’exemple suivant montre des instances valides CircularString .
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();
Une CircularString instance doit contenir au moins deux segments d’arc circulaire pour définir un cercle complet. Une CircularString instance ne peut pas utiliser un seul segment d’arc circulaire (tel que (1 1, 3 1, 1 1)) pour définir un cercle complet. Utilisez (1 1, 2 2, 3 1, 2 0, 1 1) pour définir le cercle.
L’exemple suivant montre les instances CircularString qui ne sont pas valides.
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();
Instances avec des points colinéaires
Dans les cas suivants, un segment d’arc circulaire sera traité comme un segment de ligne :
Lorsque les trois points sont collineaires (par exemple, (1 3, 4 4, 7 5)).
Lorsque le premier et le point central sont identiques, mais que le troisième point est différent (par exemple, (1 3, 1 3, 7 5)).
Lorsque le milieu et le dernier point sont identiques, mais que le premier point est différent (par exemple, (1 3, 4 4, 4 4)).
Exemples
A. Instanciation d’une instance Geometry avec un CircularString vide
Cet exemple montre comment créer une instance vide CircularString :
DECLARE @g geometry;
SET @g = geometry::Parse('CIRCULARSTRING EMPTY');
B. Instanciation d’une instance de géométrie à l’aide d’une chaîne circulaire avec un segment d’arc circulaire
L’exemple suivant montre comment créer une CircularString instance avec un seul segment d’arc circulaire (demi-cercle) :
DECLARE @g geometry;
SET @g = geometry:: STGeomFromText('CIRCULARSTRING(2 0, 1 1, 0 0)', 0);
SELECT @g.ToString();
Chapitre C. Instanciation d’une instance géométrique à l’aide d’une ChaîneCirculaire avec plusieurs segments d’arc circulaire
L’exemple suivant montre comment créer une CircularString instance avec plusieurs segments d’arc circulaire (cercle complet) :
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));
Cela produit la sortie suivante :
Circumference = 6.28319
Comparez la sortie quand elle LineString est utilisée au lieu de 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));
Cela produit la sortie suivante :
Perimeter = 5.65685
Notez que la valeur de l’exemple CircularString est proche de 2π (2 * pi), qui est la circonférence réelle du cercle.
D. Déclaration et instanciation d’une instance Geometry avec circularString dans la même instruction
Cet extrait de code montre comment déclarer et instancier une geometry instance avec une CircularString instruction dans la même instruction :
DECLARE @g geometry = 'CIRCULARSTRING(0 0, 1 2.1082, 3 6.3246, 0 7, -3 6.3246, -1 2.1082, 0 0)';
E. Instanciation d’une instance geography avec circularString
L’exemple suivant montre comment déclarer et instancier une geography instance avec un 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. Instanciation d'une instance de géométrie avec un CircularString qui est rectiligne.
L’exemple suivant montre comment créer une CircularString instance qui est une ligne droite :
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('CIRCULARSTRING(0 0, 1 2, 2 4)', 0);
Voir aussi
Vue d’ensemble des types de données spatialesCompoundCurveMakeValid (type de données geography)MakeValid (type de données geometry)STIsValid (type de données geometry)STIsValid (type de données geography)STLength (type de données geometry)STStartPoint (type de données geometry)STEndpoint (type de données geometry)STPointN (type de données geometry)STNumPoints (type de données geometry)STIsRing (type de données geometry)STIsClosed (type de données geometry)STPointOnSurface (type de données geometry)LineString