1

我正在尝试使用 PostGIS 在 SQL 语句中执行多个步骤,以基本上将栅格转换为点、缓冲、溶解,然后根据属性确定整体边界,即凹壳。

以下是我所在的位置,但收到错误提示使用 LATERAL FROM 但我不知道我需要做什么。

任何帮助将不胜感激。

[0A000] 错误:聚合函数调用不能包含集合返回函数调用提示:您可能能够将集合返回函数移动到 LATERAL FROM 项中。职位:123

 SELECT name,
    st_union(
            st_buffer(
                    st_transform(
                            (ST_PixelAsCentroids(rast, 1)).geom
                        , 32756),
                    50, 2)
        )
 FROM rasters
 where id < 5
4

1 回答 1

1

只需将函数移动ST_PixelAsCentroids()到 aCROSS JOIN LATERAL并给它一个标签,例如

SELECT name, ST_ASTEXT(
  ST_Union(
    ST_Buffer(
      ST_Transform((j).geom,32756),
      50, 2))
    )
FROM rasters 
CROSS JOIN LATERAL ST_PixelAsCentroids(rast, 1) j
WHERE id < 5
GROUP BY name;

虽然你可以在没有CROSS JOIN LATERAL

SELECT name, ST_ASTEXT(
  ST_Union(
    ST_Buffer(
      ST_Transform((j).geom,32756),
      50, 2))
    )
FROM rasters, ST_PixelAsCentroids(rast, 1) j
WHERE id < 5
GROUP BY name;
于 2021-12-08T10:38:11.430 回答