2
像PostGIS折射中的example一樣。 查詢使用一條線分割一個圓。結果是兩個多邊形。另外,它選擇不同的多邊形(n)並計算每個對象的面積。在PostgreSQL中使用SELECT CASE WHEN選擇從分割產生的最小多邊形
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問題。