Как в примере из преломлений PostGIS. Запрос разделяет круг на линию. Результат - два многоугольника. Кроме того, он выбирает отдельные многоугольники (n) и вычисляет площадь каждого объекта.
WITH split AS
(SELECT
ST_Split(circle, line) AS geom,
generate_series(1,100) AS n
FROM (
SELECT
ST_MakeLine(ST_MakePoint(10, 10),ST_MakePoint(190, 190)) AS line,
ST_Buffer(ST_GeomFromText('POINT(100 90)'), 50) AS circle) AS foo),
objects AS
(SELECT
n,
ST_GeometryN(split.geom,n) AS geom
FROM split
WHERE n <= ST_NumGeometries(split.geom))
SELECT
n,
ST_Area(objects.geom),
geom
FROM objects
Запрос возвращает два объекта с разными значениями площади.
У меня вопрос, как выбрать самый маленький? Проблема в том, что в некоторых случаях геометрия n = 1 меньше, а для другого многоугольника геометрия n = 2 меньше.
Я попробовал это в своем последнем запросе, но это не сработало. Он не возвращает геометрию.
CASE
WHEN ST_Area(ST_GeometryN(objects.geom,1)) < ST_Area(ST_GeometryN(objects.geom,2))
THEN ST_GeometryN(objects.geom,1)
ELSE ST_GeometryN(objects.geom,2)
END
Я хочу, чтобы после разделения был многоугольник меньшего размера.
Я думал, что здесь может помочь пункт CASE WHEN
. Так что это скорее проблема PostgreSQL.