Вы должны использовать ST_Dump
http://postgis.org/documentation/manual-1.5/ST_Dump.html
Тогда вы получите один ряд на каждый многоугольник. Другие поля будут дублироваться при разделении геометрии. Это как агрегатная функция, но наоборот.
Синтаксис становится немного особенным, поскольку он выводит составной тип данных, поэтому вам нужно извлечь геометрическую часть следующим образом:
SELECT (ST_Dump(the_geom)).geom from mytable;
, поскольку это дает вам больше строк в таблице, вам просто нужно создать новую таблицу из запроса.
тогда вы можете просто создать индекс для этого нового столбца геометрии в новой таблице, и он будет построен на ограничивающих прямоугольниках для каждого отдельного многоугольника.
НТН
/ Никлас
Вы хотите, чтобы ваши полигоны тоже были в одном ряду? Я так и думал, но если вам нужна только таблица с bbox, по одной на строку с идентификатором, ссылающимся на исходный мультиполигон (конечно, вы получите один и тот же идентификатор, повторенный для каждой части мультиполигона), тогда вы можете сделать то же просто распаковываем bboxes что-то вроде:
CREATE TABLE newTable AS
SELECT id, BOX2D((ST_Dump(the_geom)).geom) AS myBox FROM originamTable
Боюсь, я действительно не получаю то, что вы хотите, но у вас есть много возможностей с ST_Dump
в подобных случаях.