LoginSignup
0
1

More than 3 years have passed since last update.

PostGISでGeometryTypeを取得する方法

Posted at

テーブルにレコードが存在する

図形データを登録する際に、そのテーブルの図形タイプに適した形式にフォーマットしなければならないケースがあった場合、事前にテーブルの図形タイプを取得しなければなりません。
既にデータが存在するテーブルであれば適当なレコードの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

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1