テーブルにレコードが存在する
図形データを登録する際に、そのテーブルの図形タイプに適した形式にフォーマットしなければならないケースがあった場合、事前にテーブルの図形タイプを取得しなければなりません。
既にデータが存在するテーブルであれば適当なレコードのgeometry列に対してGeometryType関数を使うことで取得することも可能です。
SELECT
GeometryType(geometry_column) AS geometry_type
FROM
polygon_table
LIMIT 1
結果: POLYGON
テーブルにレコードが存在しない
しかし、テーブルにレコードが存在しない場合は上記のような方法は利用できません。
ではどうするかというと、GEOMETRY_COLUMNSビューを利用します。
参考サイトより抜粋
2.0.0より前のPostGISでは、直接編集可能なgeometry_columnsはテーブルでした。時々、実際のジオメトリカラムとの同期が取れていませんでした。PostGIS 2.0.0では、GEOMETRY_COLUMNSは、以前の版と同じ外見構造を持ちますが、データベースシステムカタログから読むビューになりました。構造は次の通りです。
View "public.geometry_columns"
Column | Type | Modifiers
-------------------+------------------------+-----------
f_table_catalog | character varying(256) |
f_table_schema | character varying(256) |
f_table_name | character varying(256) |
f_geometry_column | character varying(256) |
coord_dimension | integer |
srid | integer |
type | character varying(30) |
次のようなSQLで任意のテーブルの図形タイプ(GeometryType)を取得できます
SELECT
"type" AS geometry_type
FROM
geometry_columns
WHERE
f_table_name = 'polygon_table'
結果: POLYGON