ST_ConvexHull — Calcule l'enveloppe convexe d'une géométrie.
geometry ST_ConvexHull(
geometry geomA)
;
Calcule l'enveloppe convexe d'une géométrie. L'enveloppe convexe est la plus petite géométrie convexe qui englobe toutes les géométries de l'entrée.
On peut considérer l'enveloppe convexe comme la géométrie obtenue en enroulant un élastique autour d'un ensemble de géométries. Ceci est différent d'une concave hull qui est analogue à un "rétrécissement" des géométries. Une enveloppe convexe est souvent utilisée pour déterminer une zone affectée sur la base d'un ensemble d'observations ponctuelles.
Dans le cas général, l'enveloppe convexe est un polygone. L'enveloppe convexe de deux ou plusieurs points colinéaires est une LineString à deux points. L'enveloppe convexe d'un ou plusieurs points identiques est un Point.
Il ne s'agit pas d'une fonction d'agrégation. Pour calculer l'enveloppe convexe d'un ensemble de géométries, utilisez ST_Collect pour les agréger dans une collection de géométries (par exemple ST_ConvexHull(ST_Collect(geom))
.
Effectué par le module GEOS
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.3
Cette méthode implémente la spécification SQL/MM. SQL-MM IEC 13249-3: 5.1.16
Cette fonction prend en charge la 3D et ne supprime pas l'indice z.
SELECT ST_AsText(ST_ConvexHull( ST_Collect( ST_GeomFromText('MULTILINESTRING((100 190,10 8),(150 10, 20 30))'), ST_GeomFromText('MULTIPOINT(50 5, 150 30, 50 10, 10 10)') )) ); ---st_astext-- POLYGON((50 5,10 8,10 10,100 190,150 30,150 10,50 5))
Utilisation avec ST_Collect pour calculer les enveloppes convexes des ensembles géométriques.
--Get estimate of infected area based on point observations SELECT d.disease_type, ST_ConvexHull(ST_Collect(d.geom)) As geom FROM disease_obs As d GROUP BY d.disease_type;