Fonctions d'opérations spatiales pour ST_Geometry

Les opérations spatiales utilisent des fonctions de géométrie pour prendre des données en entrée, les analyser, puis générer des données qui découlent de l'analyse effectuée sur les données en entrée.

Les opérations suivantes permettent de créer de nouvelles données à partir de données en entrée.

Mise en mémoire tampon de la géométrie

La fonction ST_Buffer génère une géométrie en entourant une géométrie à une distance spécifiée. Un polygone seul apparaît lorsqu'une géométrie principale est bufferisée ou lorsque les zones tampon d'un ensemble sont suffisamment proches pour se chevaucher. Lorsqu'il existe une séparation suffisante entre les éléments d'un ensemble bufferisé, des objets ST_Polygon de zone tampon individuels résultent en un objet ST_MultiPolygon.

La fonction ST_Buffer accepte à la fois des distances positives et négatives, mais seules les géométries comportant une dimension de 2 (ST_Polygon et ST_MultiPolygon) peuvent appliquer une zone tampon négative. La valeur absolue de la distance de la zone tampon est utilisée lorsque la dimension de la géométrie source est inférieure à 2 ; en d'autres termes, toutes les géométries qui ne sont ni des objets ST_Polygon ni des objets ST_MultiPolygon. En général, les distances de la zone tampon positives génèrent des anneaux de polygone éloignés du centre de la géométrie source et (pour l'anneau extérieur d'un objet ST_Polygon ou d'un objet ST_MultiPolygon) orientés vers le centre lorsque la distance est négative. Pour les anneaux intérieurs d'un ST_Polygon ou d'un ST_MultiPolygon, l'anneau de zone tampon est orienté vers le centre lorsque la distance de la zone tampon est positive et éloigné du centre lorsqu'elle est négative. Le processus de mise en zone tampon fusionne les zones tampon qui se chevauchent. Les distances négatives supérieures à la moitié de la largeur intérieure maximale d'un polygone résultent en une géométrie vide.

Zones tampon pour différents types de géométries (zones tampon affichées en rouge ou par des lignes externes plus épaisses en cas d'impression en noir et blanc)

Reportez-vous à la rubrique ST_Buffer pour découvrir la syntaxe et un exemple.

ConvexHull

La fonction ST_ConvexHull retourne le polygone d'enveloppe convexe de toute géométrie qui comporte au moins trois sommets formant un convexe. Si les sommets de la géométrie ne forment pas un convexe, ST_ConvexHull retourne une valeur nulle. Par exemple, l'utilisation de ST_ConvexHull sur une ligne composée de deux sommets retournera la valeur null. De la même façon, l'utilisation de l'opération ST_ConvexHull sur une entité ponctuelle retourne une valeur null. La création d'une enveloppe convexe est souvent la première étape lors du mosaïquage d'un ensemble de points pour créer un réseau irrégulier triangulé (TIN).

Reportez-vous à la rubrique ST_ConvexHull pour découvrir la syntaxe et un exemple.

Différence de géométries

La fonction ST_Difference retourne la portion de la géométrie principale non intersectée par la géométrie secondaire-l'opérateur logique AND NOT de l'espace. La fonction ST_Difference fonctionne seulement sur les géométries de dimension semblable et retourne un ensemble comportant la même dimension que les géométries source. Au cas où les géométries source sont identiques, une géométrie vide est retournée.

RemarqueRemarque :

Dans les quatre diagrammes suivants, les premières géométries en entrée sont en noir et les deuxièmes géométries en entrée sont en orange.

La fonction ST_Difference retourne la portion de la première géométrie qui n'est pas intersectée par la seconde.

Reportez-vous à la rubrique ST_Difference pour découvrir la syntaxe et un exemple.

Intersection de géométries

La fonction ST_Intersection retourne l'ensemble d'intersections de deux géométries. L'ensemble d'intersections est toujours retourné comme ensemble constituant la dimension minimale des géométries source. Par exemple, pour un ST_LineString qui intersecte un ST_Polygon, la fonction ST_Polygon retourne cette portion du ST_LineString commun à l'intérieur et à la limite du ST_Polygon en tant que ST_MultiLineString. ST_MultiLineString contient plus d'un ST_LineString si la source ST_LineString a intersecté le ST_Polygon avec deux segments discontinus ou plus. Si les géométries ne s'intersectent pas ou si l'intersection produit une dimension inférieure aux deux géométries source, une géométrie vide est retournée. Voici quelques exemples de la fonction ST_Intersection.

La fonction ST_Intersection retourne l'ensemble d'intersections comme géométrie constituant la dimension minimale des géométries source.
La fonction ST_Intersection retourne l'ensemble d'intersections comme géométrie constituant la dimension minimale des géométries source.
Reportez-vous à la rubrique ST_Intersection pour découvrir la syntaxe et un exemple.

Différence symétrique des géométries

La fonction ST_SymmetricDiff retourne la différence symétrique de deux géométries-l'opérateur logique XOR de l'espace. Les géométries source doivent avoir la même dimension. Si les géométries sont égales, la fonction ST_SymmetricDiff retourne une géométrie vide ; dans le cas contraire, la fonction retourne le résultat comme ensemble.

ST_SymmetricDiff retourne les portions des géométries source qui ne font pas partie de l'ensemble d'intersections. Les géométries source doivent avoir la même dimension.
ST_SymmetricDiff retourne les portions des géométries source qui ne font pas partie de l'ensemble d'intersections. Les géométries source doivent avoir la même dimension.

Reportez-vous à la rubrique ST_SymmetricDiff pour découvrir la syntaxe et un exemple.

Aggrégation de géométries

La fonction ST_Union retourne l'ensemble de deux géométries (l'opérateur booléen logique OR de l'espace). Les géométries source doivent avoir la même dimension. La fonction ST_Union retourne toujours le résultat comme ensemble.

La fonction ST_Union retourne l'ensemble de deux géométries.
La fonction ST_Union retourne l'ensemble de deux géométries.

Reportez-vous à la rubrique ST_Union pour découvrir la syntaxe et un exemple.

Distance minimale

Les fonctions précédentes ont retourné de nouvelles géométries. La fonction ST_Distance accepte deux entités en entrée et retourne la distance minimale entre les deux. La distance minimale séparant des entités disjointes représente la distance la plus courte entre deux emplacements (à vol d'oiseau). Par exemple, ce n'est pas la distance que vous devriez parcourir si vous roulez d'un emplacement à l'autre, mais la distance que vous calculeriez si vous aviez dessiné une ligne droite entre deux emplacements sur une carte. La fonction ST_Distance indique la distance minimale qui sépare deux géométries disjointes. Si les géométries ne sont pas disjointes (par conséquent, si elles sont coïncidentes), la fonction signale une distance minimale nulle.

Distance minimale entre deux points

Agrégations

Les opérations d'agrégation renvoient une géométrie unique comme résultat de l'analyse effectuée sur un ensemble de géométries. La fonction ST_Aggr_ConvexHull renvoie le multi-polygone composé des polygones d'enveloppe convexe de chacun des géométries en entrée. Toute géométrie en entrée ne possédant pas d'enveloppe convexe (toute géométrie en entrée avec moins que trois sommets) n'aura pas d'enveloppe convexe. Si toutes les géométries en entrée ont moins de trois sommets, ST_Aggr_ConvexHull retourne une valeur null.

La fonction ST_Aggr_Intersection renvoie une géométrie unique qui est une agrégation des intersections de toutes les géométries en entrée. Une requête permet de découvrir les nombreuses entités qui s'intersectent. Si vous avez utilisé l'opérateur ST_Intersection, plusieurs entités représentant l'intersection de chaque ensemble de géométries sont renvoyées. Par exemple, en cas d'intersection d'une classe d'entités linéaires et ponctuelles, une géométrie ST_Point est renvoyée pour chaque intersection.

En utilisant plutôt ST_Aggr_Intersection, vous obtenez un ensemble de géométries. Par exemple, si vous souhaitez une géométrie représentant l'intersection des classes d'entités ponctuelles et linéaires mentionnée précédemment, ST_Aggr_Intersection renvoie une géométrie ST_MultiPoint comprenant tous les points d'intersection. Cependant, si seuls un point et une ligne s'intersectent, vous obtenez une géométrie ST_Point.

ST_Aggr_Intersection vous permet de trouver l'intersection de plusieurs géométries, alors que ST_Intersection trouve seulement l'intersection entre deux géométries. Par exemple, si vous souhaitez trouver une propriété couverte par des services spécifiques différents, tels qu'un arrondissement scolaire spécifique, un service téléphonique et un fournisseur d'accès Internet haut débit, et représentée par un conseiller spécifique, vous devez trouver l'intersection de toutes ces surfaces. La recherche de l'intersection de deux de ces surfaces ne renvoie pas toutes les informations dont vous avez besoin. Vous devez donc utiliser la fonction sde.ST_Aggr_Intersection afin de pouvoir évaluer toutes les surfaces dans la même requête.

La fonction ST_Aggr_Union renvoie une géométrie correspondant à l'aggrégation de toutes les géométries fournies. Les géométries en entrée doivent être du même type. Par exemple, vous pouvez agréger ST_LineStrings avec ST_LineStrings ou ST_Polygons avec ST_Polygons, mais vous ne pouvez pas agréger une classe d'entités ST_LineString avec une classe d'entités ST_Polygon. La géométrie qui résulte de l'agrégation est habituellement un ensemble. Par exemple, si vous souhaitez l'agrégation de toutes les parcelles vacantes d'une surface inférieure au demi-acre, la géométrie renvoyée sera un multipolygone, à moins que toutes les parcelles qui répondent aux critères ne soient contiguës ; dans ce cas, un polygone est renvoyé.

Rubriques associées


3/6/2012