2017-06-02 48 views
1

我有一个查询,在点图层周围50米的圆(缓冲区)中生成12个部分(饼状楔)。在PostgreSQL/PostGIS中生成饼状楔(几何图形)的ID

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

建议。

+0

所属于[gis.se] –

+0

感谢您指出。我可能会问那里。 –

回答

1

你可以尝试这样的事情

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分区) 是为每个要素生成一个序列号。

+0

非常感谢。这很有帮助,但没有按预期给出结果。我尝试了模拟点和我自己的点层。 ID从1到6依次为12,11,7,8,9,10。任何想法发生了什么? –