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.
S’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de données SQL dans Microsoft Fabric
Retourne un objet qui représente l’ensemble de points d’une instance geography située en dehors d’une autre instance geography.
Syntax
.STDifference ( other_geography )
Arguments
other_geography
Autre instance geography qui indique les points à supprimer de l’instance sur laquelle STDifference() est appelé.
Types de retour
Type de retour SQL Server : geography
Type de retour CLR : SqlGeography
Exceptions
Cette méthode lève ArgumentException si l’instance contient une arête antipodale.
Remarks
Cette méthode retourne toujours une valeur Null si les SRID (identificateurs de référence spatiale) des instances geography ne correspondent pas.
Dans SQL Server, le jeu de résultats possibles retourné sur le serveur a été étendu aux instances FullGlobe. SQL Server prend en charge des instances spatiales qui sont plus grandes qu'un hémisphère. Le résultat peut contenir des segments d'arc de cercle uniquement si les instances d'entrée contiennent des segments d'arc de cercle. Cette méthode n'est pas précise.
Examples
A. Calcul de la différence entre deux instances géographiques
L’exemple suivant utilise STDifference() pour calculer la différence entre deux instances geography.
DECLARE @g geography;
DECLARE @h geography;
SET @g = geography::STGeomFromText('POLYGON((-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))', 4326);
SET @h = geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656)', 4326);
SELECT @g.STDifference(@h).ToString();
B. Utilisation d'un FullGlobe avec STDifference()
L'exemple suivant utilise l'instance FullGlobe. Le premier résultat est une GeometryCollection vide et le second est une instance Polygon.
STDifference() retourne une GeometryCollection vide lorsqu'une instance FullGlobe est le paramètre. Chaque point dans une instance geography appelante est contenu dans une instance FullGlobe.
DECLARE @g geography = 'POLYGON((-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))';
DECLARE @h geography = 'FULLGLOBE';
SELECT @g.STDifference(@h).ToString(),
@h.STDifference(@g).ToString();