我的问题类似于这个问题How to create a PostgreSQL partitioned sequence?
在我的例子中,我使用这段代码将多边形顶点转换为点
SELECT geom, gid, path,nextval('seq_oid1') as seq_id,
rank() OVER (PARTITION BY gid ORDER BY gid) AS pos
FROM (
SELECT DISTINCT ON (geom) geom, path, gid
FROM (
SELECT (ST_DumpPoints(geom)).geom, (ST_DumpPoints(geom)).path, gid
FROM edge_snapping.polygon1
) f
ORDER BY geom, path, gid
) f
ORDER BY gid, path;
但此代码为所有顶点生成序列 ID,而不管多边形 ID。
我想根据多边形 id 分区对点进行索引,并且从每个多边形生成的点应该以 1 的序列 id 开头。感谢您的帮助。因为我不确定在这种情况下该怎么做。
最佳答案
SELECT geom, gid, path,nextval('seq_oid1') as seq_id,
rank() OVER (PARTITION BY gid ORDER BY gid) AS pos
FROM (
SELECT DISTINCT ON (geom) geom, path, gid
FROM (
SELECT (ST_DumpPoints(geom)).geom, (ST_DumpPoints(geom)).path, gid
FROM edge_snapping.polygon1
) f
ORDER BY geom, path, gid
) f
WHERE pos = 1 ORDER BY gid, path;
关于sql - 如何为从多边形顶点生成的点创建 PostgreSQL 分区序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43649144/