postgresql - 在 PostgreSQL/PostGIS 中生成饼状楔形(几何图形)的 ID

标签 postgresql postgis

我有一个查询,它在点层周围 50 米的圆圈(缓冲区)中生成 12 个部分(饼状楔形)。

With buffer as(
SELECT gid as pt_id, (ST_DumpPoints(ST_Buffer(geom,50,3))).geom as geom
FROM my_point_table group by gid, geom
UNION ALL 
SELECT gid as pt_id, geom FROM my_point_table
) 
SELECT gid, (ST_Dump(ST_DelaunayTriangles(ST_Collect(geom),0, 0))).geom geom
FROM buffer
GROUP BY pt_id

我想为这些部分分配 ID,如下所示:

assigning IDs to circle pie-like wedges

我们将非常感谢有关如何执行此操作的建议。

最佳答案

你可以尝试这样的事情

With my_point_table as (
    select 1 as gid, 'POINT(0 0)'::geometry as geom
    union
    select 2 as gid, 'POINT(1 1)'::geometry as geom
), buffer as(
    SELECT gid as pt_id, (ST_DumpPoints(ST_Buffer(geom,50,3))).geom as geom
    FROM my_point_table group by gid, geom
    UNION ALL 
    SELECT gid as pt_id, geom FROM my_point_table
) , tr as (
    SELECT pt_id, (ST_Dump(ST_DelaunayTriangles(ST_Collect(geom),0, 0))).geom geom
    FROM buffer
    GROUP BY pt_id
)
select row_number() OVER (partition by pt_id), pt_id, geom from tr

第一部分是模拟您的“my_point_table”表。

row_number() OVER(按 pt_id 分区) 是为每个功能生成序列号的原因。

关于postgresql - 在 PostgreSQL/PostGIS 中生成饼状楔形(几何图形)的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44336696/

相关文章:

java - Java 和 postgres BigDecimal/numeric 值之间的差异

postgresql - 为什么这个 crosstab() 查询返回重复键?

python - 为什么 sqlalchemy 添加\到“为 postgresql json 字段提供完美的 JSON 字符串?

postgresql - 更改 PostgreSQL 中组角色的默认权限

c++ - 如何在 libpqxx/C++ 准备好的 SQL 语句中将参数绑定(bind)在引号内

postgresql - 在 PostgreSQL 中用特定值填充表的所有列?

php - 如何在 CakePHP 3 中使用 postGIS

sql - 如何使用PostGIS缓冲点图层并查找点是否落在这些缓冲区内,忽略每个缓冲区自己的中心点

postgresql - POSTGIS - 可以合并网络线,以便每个结果代表一个连接集吗?

postgresql - 如何转换不属于spatial_ref_sys 的投影?