Convert polygon with filled region inside hole into multiple polygons
I'm not sure if I understood your question correctly, but judging by the picture, my answer is the following,
create three buffer zones of different radius from a point, for example, using part of your script
create table buffers1 as SELECT ST_Buffer(center, 3, 3) AS geom FROM ST_MakePoint(0, 0) AS center;
cut out a smaller one of your choice
CREATE TABLE Buffers32 AS SELECT ST_Difference(a.geom, b.geom) AS geom FROM Buffers3 a, Buffers2 b
Leave buffer 1, and the difference is buffer3 - buffer2, see figure
...
2 method Gabriel De Luca-Cyril what you need : -)...
SELECT (ST_Dump(ST_MakeValid(
(SELECT
ST_MakePolygon(
ST_ExteriorRing(ST_Buffer(center, 10, 10)),
ARRAY[
ST_ExteriorRing(ST_Buffer(center, 6, 6)),
ST_ExteriorRing(ST_Buffer(center, 3, 3))
]
))))).geom
FROM ST_MakePoint(0, 0) AS center;
They are two holes. Since they overlaps, the geometry is not valid.
SELECT ST_MakeValid(
(SELECT
ST_MakePolygon(
ST_ExteriorRing(ST_Buffer(center, 10, 10)),
ARRAY[
ST_ExteriorRing(ST_Buffer(center, 6, 6)),
ST_ExteriorRing(ST_Buffer(center, 3, 3))
]
) AS geom
FROM ST_MakePoint(0, 0) AS center
)
);
Returns a multipolygon, one part with the exterior and the hole, and other part with the island ("nested hole" can be a more precise term).