У меня есть таблица postgis изолиний, которая определяется следующим образом:
CREATE TABLE myisolines
(
gid serial NOT NULL,
isotime timestamp without timezone,
val numeric(10,4),
geom geometry(LineString,4326)
);
Визуально эти линейные объекты выглядят так:
Я знаю пространственный экстент моих данных, поэтому я могу добавить Bbox, чтобы LineStrings можно было как бы замкнуть.
Я хочу создать таблицу изополигонов myisopolygons
из myisolines
таблицы с полигонами, которые не будут перекрываться, но создают непрерывную поверхность и имеют столбец val
с наименьшим val
из изолиний, из которого был сформирован многоугольник. Я понимаю, что он может быть сформирован из самозакрытой изолинии (островка) или изолинии, закрытой bbox, в этом случае его val
следует взять из этой конкретной изолинии. Визуально это должно выглядеть так:
Я думал, что могу как-то создать топологию, а затем преобразовать грани в полигоны, но я не понимаю, как это сделать правильно. Как это может быть сделано?
Другим вариантом будет рекурсивное использование разностной функции между bbox и каждым созданным многоугольником, но я думаю, что это неправильный способ, и определенно не быстрый.