ST_LargestEmptyCircle — Calcule le plus grand cercle ne recouvrant pas une géométrie.
(geometry, geometry, double precision) ST_LargestEmptyCircle(
geometry geom, double precision tolerance=0.0, geometry boundary=POINT EMPTY)
;
Trouve le plus grand cercle qui ne chevauche pas un ensemble d'obstacles de points et de lignes. (Les géométries polygonales peuvent être incluses en tant qu'obstacles, mais seules leurs lignes de démarcation sont utilisées). Le centre du cercle est contraint de se situer à l'intérieur d'une limite polygonale, qui par défaut est l'enveloppe convexe de la géométrie d'entrée. Le centre du cercle est le point à l'intérieur de la frontière qui est le plus éloigné des obstacles. Le cercle lui-même est fourni par le point central et un point le plus proche situé sur un obstacle déterminant le rayon du cercle.
Le centre du cercle est déterminé avec une précision donnée, spécifiée par une tolérance de distance, à l'aide d'un algorithme itératif. Si la distance de précision n'est pas spécifiée, une valeur par défaut raisonnable est utilisée.
Renvoie un enregistrement avec des champs :
center
- point central du cercle
nearest
- un point de la géométrie le plus proche du centre
radius
- rayon du cercle
Pour trouver le plus grand cercle vide à l'intérieur d'un polygone, voir ST_MaximumInscribedCircle.
Availability: 3.4.0.
Requires GEOS >= 3.9.0.
SELECT radius, ST_AsText(center) AS center, ST_AsText(nearest) AS nearest FROM ST_LargestEmptyCircle( 'MULTILINESTRING ( (10 100, 60 180, 130 150, 190 160), (20 50, 70 70, 90 20, 110 40), (160 30, 100 100, 180 100))');
SELECT radius, ST_AsText(center) AS center, ST_AsText(nearest) AS nearest FROM ST_LargestEmptyCircle( St_Collect( 'MULTIPOINT ((70 50), (60 130), (130 150), (80 90))', 'POLYGON ((90 190, 10 100, 60 10, 190 40, 120 100, 190 180, 90 190))'), 'POLYGON ((90 190, 10 100, 60 10, 190 40, 120 100, 190 180, 90 190))' );