2017-04-27 68 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

謝謝你的工作! –