Postgresql

如何在 postgres 中獲取幾何列的類型?

  • May 23, 2020

我需要確定幾何列的類型並使用以下查詢來完成:

SELECT type 
FROM   geometry_columns 
WHERE  f_table_schema = 'public' 
      AND f_table_name = 'table_name' 
      AND f_geometry_column = 'col_name' 

它適用於正常幾何圖形,例如點或多邊形。但也有一些花哨的幾何形狀,比如 PointZ。如何確定列是否有它?上面提到的查詢只返回 POINT 。

geometry_columns視圖會小心刪除任何 Z/M 後綴。

您可以直接在系統表中查找 PostGIS 類型修飾符:

SELECT postgis_typmod_type(atttypmod)
FROM pg_attribute
WHERE attrelid = 'public.table_name'::regclass
 AND attname = 'col_name';

(同樣可以用postgis_typmod_srid().)

我發現geometry_columns將維度資訊儲存在另一列中 - coord_dimension

SELECT type, coord_dimension 
FROM   geometry_columns 
WHERE  f_table_schema = 'public' 
      AND f_table_name = 'trafic_lights' 
      AND f_geometry_column = 'position' 

它甚至更好,因為它直接包含許多維度

引用自:https://dba.stackexchange.com/questions/267694