sql - 将点连接到一个点

标签 sql postgresql postgis spatial-query

我将 postgres 与 postgis 一起用于空间数据。我有一个包含一组交点的表格,下面是表格的结构;

enter image description here

每个点代表两条道路之间的交叉点。但是我有一些道路是三条道路相交而不是两条,为此,正在创建 3 个不同的点。下图显示了问题;

enter image description here

我想将三个不同的点收集到一个点中,该点将代表所有三条道路的交叉点,而不是三个不同的道路。

我正在考虑使用 st_collect 和 st_convexhull 而不是 st_centroid 从点中找到一个点。但我无法让它工作,可能我采取了错误的方法。

如何最好地解决这个问题?

最佳答案

这个例子展示了如何在不使用 st_convexhull 的情况下从 3 个点计算质心点,我不确定我是否理解你为什么要使用 convexhull。

with mypoints as (
    select 1 id, 1 cat, ST_MakePoint(5, 5) geom
    union all
    select 2 id, 1 cat, ST_MakePoint(5, 10) geom
    union all
    select 3 id, 1 cat, ST_MakePoint(8, 8) geom
)
select st_astext(st_centroid(st_collect(geom))) from mypoints group by cat;

关于sql - 将点连接到一个点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15050053/

相关文章:

python - 在 Python/Pandas/PostgreSQL 中将表名作为函数参数传递

sql - 在没有循环的情况下在 SQL 中添加迄今为止的工作日

IN 和 OR 的 SQL 性能问题

php - 多语言翻译模块的数据库模型

linux - postgresql-9.4-postgis-2.1 的包依赖问题

MySQL VS Postgres/POSTGIS 空间数据库支持

json - 在postgres中查询json

mysql - 需要在 SQL 中将一个属性限制为 3 个值

postgresql - 连接到 Docker 容器中的 Postgres 时出现身份验证错误

postgresql - 无法使用终端在 postgres 中删除数据库