如何使用 postgres 从 geom 列添加质心列?

Posted

技术标签:

【中文标题】如何使用 postgres 从 geom 列添加质心列?【英文标题】:How to add a centroid column from the geom column using postgres? 【发布时间】:2021-07-10 01:38:04 【问题描述】:

我在 postgres 的数据库中有下表(table_example):

      id         geom              class        area_total                 
     1255      65f56f6565...       type_1         1244589
     1256      65f56f6566...       type_2         2542542

我需要创建一个新列,从多边形的几何形状中接收多边形质心的值。

基于此链接 (How to add geometry column using pgAdmin),我尝试按如下方式进行所需的操作:

         -- The idea is to first create a column that is of type geometry
         ALTER TABLE table_example 
         ADD COLUMN column_geom_centroid geometry(geom);

        -- And then assign the centroid value to the column
        UPDATE table_example
        SET column_geom_centroid = ST_Centroid(geom)

但是,当我运行第一个命令 (ALTER...) 时,会出现以下错误:

        ERROR:  Invalid geometry type modifier: geom
        LINE 2: ADD COLUMN column_geom_centroid geometry(geom);
                                     ^
        SQL state: 22023
        Character: 70

【问题讨论】:

【参考方案1】:

最好使用 postgis 函数AddGeometryColumn,用于创建几何列 https://postgis.net/docs/AddGeometryColumn.html

例子

SELECT AddGeometryColumn ('my_schema','my_spatial_table','geom_c',4326,'POINT',2, false);

【讨论】:

以上是关于如何使用 postgres 从 geom 列添加质心列?的主要内容,如果未能解决你的问题,请参考以下文章

使用 ggplot2 将颜色列添加到 geom_bar 图

如何从 df 的不同列中获取闪避的 geom_bar (ggplot2)

如何更改几何列的 SRID?

根据 p 值有条件地将 geom_smooth 添加到 ggplot 构面

使用 sqlalchemy 将 onupdate="cascade" 添加到 postgres 中的现有列

使用 facet_grid 和一个因子来确定列的填充颜色时保持列的顺序 (geom_col)