0
我目前使用的是Postgres 9.1Postgres/Postgis - 查询剪辑光栅中的所有值
我的目标是用多边形剪辑PostGIS栅格。然后,我想要为该多边形中包含的每个栅格像素指定postgres数组或分隔的一组值。这是到目前为止,我已经得到了查询:
SELECT p.gid, (ST_ValueCount(ST_Clip(r.rast, p.geom))).value AS fval
FROM temp_raster AS r, temp_shapefile AS p
WHERE (r.start_time = 1384516800)
GROUP BY gid, fval;
这将输出:
gid | fcstval
-----+---------
1 | 0
1 | 2
2 | 0
2 | 2
3 | 5
4 | 0
4 | 1
4 | 2
4 | 3
4 | 5
这个数据是好的,但我想一个集合的各值的GID是这样的:
gid | fcstval
-----+----------
1 | 0,2
2 | 0,2
3 | 5
4 | 0,1,2,3,5
我遇到的麻烦是试图将这些值聚合到数组或分隔字符串中。这是我尝试在一个数组:
SELECT p.gid, array_agg((ST_ValueCount(ST_Clip(r.rast, p.geom))).value) AS fval
FROM temp_raster AS r, temp_shapefile AS p
WHERE (r.start_time = 1384516800)
GROUP BY gid;
这并不工作,并提供了错误:
ERROR: set-valued function called in context that cannot accept a set
我的猜测是,这是因为我不能这样叫ARRAY_AGG。否则,我有点难以找出如何做到这一点。子查询也许?尽管为了实现这个目标,我仍然无法做出任何事情。
感谢您的帮助!