Postgresql
如何在 postgres 中獲取幾何列的類型?
我需要確定幾何列的類型並使用以下查詢來完成:
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'
它甚至更好,因為它直接包含許多維度!