sql - 如何为从多边形顶点生成的点创建 PostgreSQL 分区序列?

标签 sql postgresql postgis

我的问题类似于这个问题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/

相关文章:

mysql - 如何获取 pgr_dijkstra pgrouting 中节点序列的距离?

postgresql - 如何将非空间表连接到 Postgis 数据库中的空间表(两个表都在不同的数据库中)

mysql - 如何检查日期范围是否存在

sql - 状态更改之间的天数

python - 将 NULL/Empty 值插入实际字段 Postgresql

sql - PostgreSQL:根据日期识别回访者 - 连接或窗口函数?

database - 如何将几何数据类型用于 postgres 表?

.net - 将 Npgsql 用于 EntityFramework 的 Postgis 地理类型

sql - 在 Oracle 用户定义函数中编写 select 语句

sql - 单个查询中的多个 array_agg() 调用