2017-04-27 69 views
1

我的问题是类似这样的问题How to create a PostgreSQL partitioned sequence?如何为多边形顶点生成的点创建PostgreSQL分区序列?

在我的情况下,我使用此代码

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
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; 
+0

错误:列“pos”不存在,它给出了这样的错误。 –

+1

SELECT * FROM (SELECT的geom,GID,路径,NEXTVAL( 'seq_oid1')作为seq_id, 秩()OVER(PARTITION BY GID ORDER BY GID)AS POS FROM( SELECT DISTINCT ON(的geom)的geom,路径,GID FROM(SELECT (ST_DumpPoints(GEOM))。的geom,(ST_DumpPoints(GEOM))。路径,GID FROM edge_snapping.polygon1 )的F ORDER BY的geom,路径,GID )的F ORDER BY GID,路径 )f3 WHERE pos = 1 –

+0

谢谢你的工作! –