sql - 应用 ST_VoronoiPolygons 和剪辑输出时传递字段

标签 sql postgresql postgis

我正在执行第 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 = 红色多边形)

Image of the 3 layers

但是,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/

相关文章:

sql - 查询中的表名是否不区分大小写?

sql - 如何使用 sql 连接简化此查询?

postgresql - 要作为列插入表中的栅格记录的像素值

Entity Framework 中的 Postgresql 表继承

postgresql - Geoserver sql View 参数搞乱了 postgis 函数调用

postgresql - 如何将 GeoJSON 多面体插入到 PostGIS 表中?

MySQL - 来自一个查询的两条记录集,具有不同的顺序和限制

mysql - 如何根据两个日期从表中的日期列中获取缺失的日期

sql - 按顺序连接字段 - SQL Server

json - 如何从 postgres JSONB 列获取值?