Les éléments de base définis dans le précédent article, il est parfois utile de pouvoir utiliser ces derniers afin de composer des éléments plus complexes avec des géométries fusionnées ou présentant des zones d’exclusion.

Sql Server 2008 et Denali (Sql Azure) - type géographique (geography) - MultiPoint, MultiLine, MultiPolygon, Collection - déclaration d'objet et règle de définition

Liens vers les articles liés

Cet article s’inscrit dans la série dédiée aux types géographiques et géométriques :

 

Présentation

Ces types complexes sont en réalité des composés d’éléments simples, autrement dit ils ne sont que des collections d’objets de même type ou non.

Parmi ces objets, on retrouve les éléments suivants :

  • MultiPoint : collection de plusieurs points
  • MultiLineString : collection de plusieurs lignes
  • MultiPolygon : collection de plusieurs polygones
  • Collection : collection de plusieurs géométries composées ou non

Multi geometrie (MultiPoint, MultiLine, MultiPolygon, Collection) au sein de SQL Server

Comme indiqué, les types d”éléments simples associés peuvent varier et composer ce qu’on appelle alors des collections de géométries. Ces collections peuvent tout à fait contenir d’autres collections et donc être imbriquées.

Pour rappel, l’architecture globale peut être représentée comme suit :

Architecture des types géographiques (geography) et géométriques (geometry) en WKT

 

Contraintes techniques

La composition de ces éléments ne présentent pas de difficultés supplémentaires en comparaison de l’utilisation d’objets simples et basiques.

La tâche se complexifie quelque peu lorsque l’on doit composer des collections de géométries elles-mêmes composées et contenant des objets avancés par exemple : un polygone avec trous ou multi-polygones.

Il faut toujours garder à l’esprit les limitations des éléments de manière individuelle pour composer l’objet global.

 

Implémentation technique dans SQL Server

Au niveau de SQL Server, la déclaration de ces éléments est relativement aisée puisqu’il s’agit de composer le WKT adéquat et d’utiliser les méthodes natives permettant d’initialiser une instance de l’objet déclaré.

La déclaration des différents éléments s’opère comme suit :

  • Construction d’une collection de points – MultiPoint 

La construction WKT d’un MultiPoint se présente comme suit :

MULTIPOINT((COORDINATES1),(COORDINATES2)) Ou 
MULTIPOINT((LONGITUDE LATITUDE),(LONGITUDE LATITUDE))

Voici un exemple de WKT pour le MultiPoint :

MULTIPOINT((3 45),(3.5 45))

Au niveau de la déclaration SQL Server :

DECLARE @multipoint AS GEOGRAPHY
SET @multipoint = GEOGRAPHY::STGeomFromText(
'MULTIPOINT((3 45),(3.5 45),(3.5 46),(4 47),(3 47),(3 45))', 4326) SELECT @multipoint

Pour les rendres visibles, nous ajoutons un buffer autour des points :

SELECT @multipoint.STBuffer(10000)

Ce qui donne en exécution :

MultiPoint SQL Server Denali 2011 et SQL Server 2008 R2 SP2

 

  • Construction d’une collection de lignes – MultiLineString

La construction WKT d’un MultiLineString se présente comme suit :

MULTILINESTRING((LINE1),(LINE2))

Ou

MULTILINESTRING((LONGITUDE1 LATITUDE1,
LONGITUDE2 LATITUDE2,
LONGITUDE3 LATITUDE3),
(LONGITUDEA LATITUDEA,
LONGITUDEB LATITUDEB)
)

Voici un exemple de WKT pour le MultiLine :

MULTILINESTRING((3 45,3.5 45),(3.5 46,4 47),(3 47,3 45))

Au niveau de la déclaration SQL Server :

DECLARE @multipolyline AS GEOGRAPHY
SET @multipolyline = GEOGRAPHY::STGeomFromText(
'MULTILINESTRING((3 45,3.5 45),(3.5 46,4 47),(3 47,3 45))', 4326) SELECT @multipolyline

Ce qui donne en exécution :

MultiLineStrings SQL Server Denali 2011 et SQL Server 2008 R2 SP2

  • Construction d’une collection de polygones – MultiPolygon

La construction WKT d’un MultiPolygon se présente comme suit :

MULTIPOLYGON((POLYGON1),(POLYGON2))

Soit :

MULTIPOLYGON(((COORDINATESPOLYGON1)),((COORDINATESPOLYGON2)))

imageA noter les doubles parenthèses qui définissent les polygones.

Voici un exemple de WKT pour le MultiPolygon :

MULTIPOLYGON(((3 45,4 45,4 46,3 45)),((5 46,6 47,5 47,5 46)))

Au niveau de la déclaration SQL Server :

DECLARE @multipolygon AS GEOGRAPHY
SET @multipolygon = GEOGRAPHY::STGeomFromText('MULTIPOLYGON(((3 45,4 45,4 46,3 45)),((5 46,6 47,5 47,5 46)))',4326)
SELECT @multipolygon

Ce qui donne en exécution :

MultiPolygon SQL Server Denali 2011 et SQL Server 2008 R2 SP2

 

image Attention : Dans le cas d’une collection de polygones, la composition de chacun d’entre eux nécessite de respecter les règles de définitions déjà abordées à travers cet article.
Il s’agit notamment de conserver une orientation correcte dans la définition afin de définir le polygone souhaitée et non l’inverse vis à vis du globe terrestre.

  • Construction d’une collection imbriquée

La construction WKT d’une collection de géométries se présente comme suit :

GEOMETRYCOLLECTION(ELEMENT1, ELEMENT2)

Voici un exemple de WKT pour la collection de géométries :

GEOMETRYCOLLECTION(
MULTIPOINT((3 44),(3.5 44),(3.25 44.5)),
MULTILINESTRING((3 45,3.5 45),(3.5 46,4 47),(3 47,3 45)),
POINT(2.75 44),
POLYGON((4 46,3.75 46,4 45,4 46))
)

Au niveau de la déclaration SQL Server :

DECLARE @multigeometry AS GEOGRAPHY
SET @multigeometry = GEOGRAPHY::STGeomFromText('GEOMETRYCOLLECTION(
MULTIPOINT((3 44),(3.5 44),(3.25 44.5)),
MULTILINESTRING((3 45,3.5 45),(3.5 46,4 47),(3 47,3 45)),
POINT(2.75 44),
POLYGON((4 46,3.75 46,4 45,4 46))
)'
,4326) SELECT @multigeometry

Ce qui donne en exécution :

GeometryCollection SQL Server Denali 2011 et SQL Server 2008 R2 SP2

La déclaration de ce type d’élément peut être réalisée de manière unitaire comme ici, ou à l’aide de méthodes dédiées pour générées des géométries, nous verrons dans un prochain article comment exploiter ces méthodes pour générer ces éléments et exploiter SQL Server 2008 pour ce qu’il fait de mieux avec ce type géographique.

 

Conclusions

L’ensemble des objets disponibles dans SQL Server 2008 a été couvert et ils seront très utiles pour stocker, manipuler, organiser ou filtrer vos données.

La prochaine version de SQL Server ‘Denali’ apportera plusieurs nouveaux types de bases et composés pour ces données géographiques et repoussera également les limites en termes de définition, nous aborderons ces nouveautés dans un article dédié.

Cette étape de déclaration et définition d’objet au sein de SQL Server 2008 présentée, nous pourrons, dans les prochains articles nous intéresser à l’utilisation des méthodes et à l’exploitation de ce type géographique disponible à travers les versions de SQL Server 2008 et supérieures ainsi qu’au sein de l’offre SQL Azure.