我正在执行第 1 层(点,“几何场”= 几何)的 Voronoi 多边形来创建第 2 层(多边形,“几何场”= 几何)。以下命令有效
CREATE TABLE layer2
AS WITH voronoi (vor)
AS (SELECT ST_Dump(ST_VoronoiPolygons(ST_Collect(geometry)))
FROM layer1) SELECT (vor).path, (vor).geom FROM voronoi
结果看起来像这样(layer1 = 绿点,layer2 = 黑色多边形,layer3 = 红色多边形)
但是,layer2 中没有保留来自 Layer1 的任何字段。我想将 field1 和 field2 从 Layer1 传递到 Layer2。
此外,我想将结果裁剪在单个多边形层(layer3)的边界内。
谢谢
最佳答案
到目前为止还没有答案,但我找到了可以分享的问题解决方案。
它不是很花哨,但很有效。我在第 1 层和第 2 层之间应用空间连接。由于每个多边形内部只有 1 个点(根据 Voronoi 的定义),因此它工作得很好。
执行 voronoi(与上一篇文章相同)
CREATE TABLE layerTMP
AS WITH voronoi (vor)
AS (SELECT ST_Dump(ST_VoronoiPolygons(ST_Collect(geometry)))
FROM layer1) SELECT (vor).path, (vor).geom FROM voronoi;
进行空间连接
CREATE TABLE layer2 AS
SELECT layer1.*,layerTMP.*
FROM layerTMP, layer1
WHERE ST_Contains( layerTMP.geom, layer1.geometry);
从voronoi中删除点图层(layer1)的“几何”列和“路径”列
ALTER TABLE layer2 DROP geometry;
ALTER TABLE WeatherAgri4CastID_grid DROP "path";
希望这能帮助其他用户;-)
关于sql - 应用 ST_VoronoiPolygons 和剪辑输出时传递字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49531535/