Créer, construire et interroger des instances géographiques

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Le type de données spatiales géographiques, geography, représente des données dans un système de coordonnées de monde sphérique. Ce type est implémenté en tant que type de données CLR (Common Language Runtime) .NET dans SQL Server. Le type de données SQL Server geography stocke des données ellipsoïdes, telles que des coordonnées de latitude et de longitude GPS.

Le type geography est prédéfini et disponible dans chaque base de données. Vous pouvez créer des colonnes de table de type geography et opérer sur les données geography comme vous le feriez avec d’autres types fournis par le système.

Création ou construction d'une nouvelle instance geography

Création d'une nouvelle instance geography à partir d'une instance existante

Le type de données geography fournit de nombreuses méthodes intégrées que vous pouvez utiliser pour créer des instances geography basées sur des instances existantes.

Pour créer une mémoire tampon autour d'une géographie
STBuffer (type de données geography)

Pour créer une mémoire tampon autour d'une géographie, en tenant compte d'une tolérance
BufferWithTolerance (type de données geography)

Pour créer une géographie à partir de l'intersection de deux instances géographiques
STIntersection (type de données geography)

Pour créer une géographie à partir de l'union de deux instances géographiques
STUnion (type de données geography)

Pour créer une géographie à partir des points où une géographie n'en chevauche pas une autre
STDifference (type de données geography)

Construction d'une instance geography à partir d'une entrée WKT (Well-Known Text)

Le type de données geography fournit plusieurs méthodes intégrées qui génèrent une géographie à partir de la représentation WKT OGC (Open Geospatial Consortium). La norme WKT est une chaîne de texte qui autorise l'échange de données geography sous forme textuelle.

Pour construire tout type d'instance geography à partir d'une entrée WKT
STGeomFromText (type de données geography)

Parse (type de données geography)

Pour construire une instance Point geography à partir d'une entrée WKT
STPointFromText (type de données geography)

Pour construire une instance MultiPoint geography à partir d'une entrée WKT
STMPointFromText (type de données geography)

Pour construire une instance LineString geography à partir d'une entrée WKT
STLineFromText (type de données geography)

Pour construire une instance MultiLineString geography à partir d'une entrée WKT
STMLineFromText (type de données geography)

Pour construire une instance Polygon geography à partir d'une entrée WKT
STPolyFromText (type de données geography)

Pour construire une instance MultiPolygon geography à partir d'une entrée WKT
STMPolyFromText (type de données geography)

Pour construire une instance GeometryCollection geography à partir d'une entrée WKT
STGeomCollFromText (type de données geography)

Construction d'une instance geography à partir d'une entrée WKB (Well-Known Binary)

WKB est un format binaire spécifié par l’OGC qui autorise l’échange de données Geography entre une application cliente et une base de données SQL. Les fonctions suivantes acceptent l'entrée WKB pour construire des instances geography :

Pour construire tout type d'instance geography à partir d'une entrée WKB
STGeomFromWKB (type de données geography)

Pour construire une instance Point geography à partir d'une entrée WKB
STPointFromWKB (type de données geography)

Pour construire une instance MultiPoint geography à partir d'une entrée WKB
STMPointFromWKB (type de données geography)

Pour construire une instance LineString geography à partir d'une entrée WKB
STLineFromWKB (type de données geography)

Pour construire une instance MultiLineString geography à partir d'une entrée WKB
STMLineFromWKB (type de données geography)

Pour construire une instance Polygon geography à partir d'une entrée WKB
STPolyFromWKB (type de données geography)

Pour construire une instance MultiPolygon geography à partir d'une entrée WKB
STMPolyFromWKB (type de données geography)

Pour construire une instance GeometryCollection geography à partir d'une entrée WKB
STGeomCollFromWKB (type de données geography) STGeomCollFromWKB (type de données geography)

Construction d'une instance geography à partir d'une entrée texte GML

Le type de données geography fournit une méthode qui génère une instance geography à partir de GML, représentation XML d’une instance geography . SQL Server prend en charge un sous-ensemble de GML.

Pour plus d’informations sur le langage GML (Geography Markup Language), consultez la spécification OGC : OGC Specifications, Geography Markup Language (en anglais).

Pour construire tout type d'instance geography à partir d'une entrée GML
GeomFromGML (type de données geography)

Renvoi de données WKT et WKB à partir d'une instance geography

Vous pouvez utiliser les méthodes suivantes pour retourner le format WKT ou WKB d’une instance geography :

Pour retourner la représentation WKT d'une instance geography
STAsText (type de données geography)

ToString (type de données geography)

Pour retourner la représentation WKT d'une instance geography incluant des valeurs Z et M
AsTextZM (type de données geography)

Pour retourner la représentation WKB d'une instance geography
STAsBinary (type de données geography)

Pour retourner une représentation GML d'une instance geography
AsGml (type de données geography)

Interrogation des propriétés et des comportements des instances geography

Toutes les instances geography ont plusieurs propriétés qui peuvent être extraites par le biais des méthodes fournies par SQL Server. Les rubriques suivantes définissent les propriétés et comportements de types géographiques et les méthodes permettant de les interroger.

Informations sur la validité, le type d'instance et GeometryCollection

Après avoir construit une instance geography , vous pouvez utiliser les méthodes suivantes pour retourner le type d’instance ou, dans le cas d’une instance GeometryCollection , pour retourner une instance geography spécifique.

Pour retourner le type d'instance d'une géographie
STGeometryType (type de données geography)

Pour déterminer si une géographie est un type d'instance donné
InstanceOf (type de données geography)

Pour déterminer si une instance géographique est de forme correcte pour son type d'instance
STNumGeometries (type de données geography)

Pour retourner une géographie spécifique dans une instance GeometryCollection
STGeometryN (type de données geography) STGeometryN (type de données geography)

Number of Points

Toutes les instances geography non vides sont constituées de points. Ces points représentent les coordonnées de latitude et de longitude du monde sur lequel les instances geography sont dessinées. Le type de données geography fournit de nombreuses méthodes intégrées pour interroger les points d’une instance.

Pour retourner le nombre de points qui composent une instance
STNumPoints (type de données geography)

Pour retourner un point spécifique dans une instance
STPointN (type de données geometry)

Pour retourner le point de départ d'une instance
STStartPoint (type de données geography)

Pour retourner le point de terminaison d'une instance
STEndpoint (type de données geography)

Dimension

Une instance geography non vide peut avoir 0, 1 ou 2 dimensions. Les instances geography à zéro dimension, telles que Point et MultiPoint, n’ont aucune longueur ou surface. Les objets unidimensionnels, tels que LineString, CircularString, CompoundCurveet MultiLineStringont une longueur. Les instances à deux dimensions, telles que Polygon, CurvePolygonet MultiPolygon, ont une surface et une longueur. Les instances vides indiquent une dimension de -1 et une instance GeometryCollection indique la dimension maximale de son contenu.

Pour retourner la dimension d'une instance
STDimension (type de données geography)

Pour retourner la longueur d'une instance
STLength (type de données geography)

Pour retourner la surface d'une instance
STArea (type de données geography)

Vide

Une instance geographyvide n’a aucun point. La longueur des instances LineString, CircularString, CompoundCurveet MultiLineString vides est nulle. La surface des instances Polygon, CurvePolygon et MultiPolygon vides est nulle.

Pour déterminer si une instance est vide
STIsEmpty (type de données geography)

Fermeture

Une instance geographyfermée est un graphique dont les points de début et de fin sont identiques. Les instancesPolygon sont considérées comme fermées. Les instancesPoint ne sont pas fermées.

Un anneau est une instance LineString simple et fermée.

Pour déterminer si une instance est fermée
STIsClosed (type de données geography)

Pour retourner le nombre d'anneaux dans une instance Polygon
NumRings (type de données geography)

Pour retourner un anneau spécifié d'une instance géographique
RingN (type de données geography)

ID de référence spatial (SRID)

L’ID de référence spatial (SRID) est un identificateur spécifiant dans quel système de coordonnées ellipsoïde l’instance geography est représentée. Deux instances geography avec différents SRID ne peuvent pas être comparées.

Pour définir ou retourner le SRID d'une instance
STSrid (type de données geography)

Cette propriété peut être modifiée.

Détermination de relations entre des instances geography

Le type de données geography fournit de nombreuses méthodes intégrées que vous pouvez utiliser pour déterminer les relations entre deux instances geography .

Pour déterminer si deux instances comprennent le même ensemble de points
STEquals (type de données geometry)

Pour déterminer si deux instances sont disjointes
STDisjoint (type de données geometry)

Pour déterminer si deux instances se croisent
STIntersects (type de données geometry)

Pour déterminer le ou les points où deux instances se croisent
STIntersection (type de données geography)

Pour déterminer la distance la plus courte entre des points dans deux instances géographiques
STDistance (type de données geometry)

Pour déterminer la différence en points entre deux instances géographiques
STDifference (type de données geography)

Pour dériver la différence symétrique, ou points uniques, d'une instance geography comparée à une autre instance
STSymDifference (type de données geography)

Les instances geography doivent utiliser un SRID pris en charge

SQL Server prend en charge les SRID basés sur les normes EPSG. Un SRID pris en charge par SQL Server pour les instances geography doit être utilisé pour l’exécution de calculs ou l’utilisation de méthodes avec des données spatiales géographiques. Le SRID doit correspondre à l’un des SRID présents dans l’affichage catalogue sys.spatial_reference_systems . Comme mentionné précédemment, quand vous effectuez des calculs sur vos données spatiales à l’aide du type de données geography , vos résultats dépendent de l’ellipsoïde qui a été utilisée pour créer vos données, car un identificateur de référence spatiale (SRID) spécifique est assigné à chaque ellipsoïde.

SQL Server utilise le SRID par défaut de 4326, qui se mappe au système de référence spatiale WGS 84, quand des méthodes sont utilisées dans des instances geography. Si vous utilisez des données d'un système de référence spatiale autre que WGS 84 (ou SRID 4326), vous devrez déterminer le SRID spécifique pour vos données spatiales geography.

Exemples

Les exemples suivants montrent comment ajouter et interroger des données géographiques.

Exemple A.

Cet exemple crée une table avec une colonne d’identité et une colonne geography, GeogCol1. Une troisième colonne restitue la colonne geography dans sa représentation OGC (Open Geospatial Consortium) WKT (Well-Known Text) et utilise la méthode STAsText() . Deux lignes sont ensuite insérées : une ligne contient une instance LineString de geographyet une ligne contient une instance Polygon .

IF OBJECT_ID ( 'dbo.SpatialTable', 'U' ) IS NOT NULL   
DROP TABLE dbo.SpatialTable;  
GO  
  
CREATE TABLE SpatialTable   
  ( id int IDENTITY (1,1),  
    GeogCol1 geography,   
    GeogCol2 AS GeogCol1.STAsText()
   );  
GO  
  
INSERT INTO SpatialTable (GeogCol1)  
VALUES (geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656)', 4326));  
  
INSERT INTO SpatialTable (GeogCol1)  
VALUES (geography::STGeomFromText('POLYGON((-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))', 4326));  
GO  

Exemple B.

Cet exemple utilise la méthode STIntersection() pour retourner les points où les deux instances geography précédemment insérées se croisent.

DECLARE @geog1 geography;  
DECLARE @geog2 geography;  
DECLARE @result geography;  
  
SELECT @geog1 = GeogCol1 FROM SpatialTable WHERE id = 1;  
SELECT @geog2 = GeogCol1 FROM SpatialTable WHERE id = 2;  
SELECT @result = @geog1.STIntersection(@geog2);  
SELECT @result.STAsText();  

Voir aussi

Données spatiales (SQL Server)