2017-04-27 8 views
1

私の質問は、このコードポリゴン頂点から生成されたポイントの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; 

を使用してポイントにポリゴン頂点を変換しています私の場合How to create a PostgreSQL partitioned sequence?

この質問に類似しているが、このコードに関係なく、ポリゴンIDのすべての頂点のシーケンスIDを生成します。

ポリゴンIDで区切られたポイントに基づいてインデックスを作成する必要があります。各ポリゴンから生成されるポイントは、シーケンスID 1で始まる必要があります。この場合、私は何をすべきか分かりません。

答えて

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」列が存在しないため、このようなエラーが発生します。 FROM –

+1

SELECT *( DISTINCT ON(GEOM)GEOM、パスを選択し(FROM POS AS GID BY GID ORDER BY(PARTITION)でGEOM、GID、パスSEQ_IDとして、NEXTVAL( 'seq_oid1')、 ランク()を選択、、GIDてパス、 gidは、GEOM BY ORDER F( SELECT(ST_DumpPoints(GEOM))。GEOM、(ST_DumpPoints(GEOM))。経路は、edge_snapping.polygon1 FROM をGID))ORDER F FROM をgidはパス )f3 ここでpos = 1 –

+0

ありがとうございました! –

関連する問題