AddGeometryColumn — ジオメトリカラムを既存の属性テーブルに追加します。デフォルトでは、制約の定義でなく型の変更を使います。use_typmodパラメタをfalseで渡すと制約ベースの古い挙動で動作します。
text AddGeometryColumn(
varchar
table_name, varchar
column_name, integer
srid, varchar
type, integer
dimension, boolean
use_typmod=true)
;
text AddGeometryColumn(
varchar
schema_name, varchar
table_name, varchar
column_name, integer
srid, varchar
type, integer
dimension, boolean
use_typmod=true)
;
text AddGeometryColumn(
varchar
catalog_name, varchar
schema_name, varchar
table_name, varchar
column_name, integer
srid, varchar
type, integer
dimension, boolean
use_typmod=true)
;
ジオメトリカラムを既存の属性テーブルに追加します。schema_name
はスキーマ名です。srid
はSPATIAL_REF_SYSテーブルのエントリを参照する整数でなければなりません。type
は'POLYGON'や'MULTILINESTRING'といった、ジオメトリ型を示す文字でなければなりません。指定したスキーマが存在しない(または現在のsearch_pathからは見えない)場合、または指定したSRID、ジオメトリ型もしくは次元が不正である場合はエラーが投げられます。
変更: 2.0.0では、geometry_columnsがシステムカタログを読むビューになったため、geometry_columnsを更新しないようになりました。デフォルトでは制約を生成せず、PostgreSQLの型変更を使います。この関数でWGS 84のPOINTカラムを構築するのと 変更: 2.0.0では、制約を使う必要がある場合には、 |
変更: 2.0.0では、 ビューについては、geometry_columnsへの手動登録はできなくなりました。しかし、tyomodテーブルジオメトリに対して構築されていて、かつラッパ関数が無いビューは、親テーブルカラムのtypmodの挙動を継承するので、正しく登録されます。他のジオメトリを出力するジオメトリ関数を使うビューについては、ビューのジオメトリカラムが正しく登録されるようにするため、typmodジオメトリへのキャストが必要です。「手動でジオメトリカラムをgeometry_columnsに登録する」を参照して下さい。 |
このメソッドはOpenGIS Simple Features Implementation Specification for SQL 1.1.の実装です
この関数は3次元に対応しています。Zインデクスを削除しません。
このメソッドは曲線ストリングと曲線に対応しています
機能強化: 2.0.0では、use_typmod引数が導入されました。デフォルトでは制約を基にしたものでなくtypmodジオメトリカラムが生成されます。
-- データを保持するスキーマの生成 CREATE SCHEMA my_schema; -- 新しい単純なPostgreSQLテーブルの生成 CREATE TABLE my_schema.my_spatial_table (id serial); -- "id"カラムのみを持つ単純なテーブルの説明 postgis=# \d my_schema.my_spatial_table Table "my_schema.my_spatial_table" Column | Type | Modifiers --------+---------+------------------------------------------------------------------------- id | integer | not null default nextval('my_schema.my_spatial_table_id_seq'::regclass) -- テーブルにジオメトリカラムを追加 SELECT AddGeometryColumn ('my_schema','my_spatial_table','geom',4326,'POINT',2); -- 制約を基にしたPOINTカラムを追加 SELECT AddGeometryColumn ('my_schema','my_spatial_table','geom_c',4326,'POINT',2, false); -- 制約を基にしたCURVEPOLYGONを追加 SELECT AddGeometryColumn ('my_schema','my_spatial_table','geomcp_c',4326,'CURVEPOLYGON',2, false); -- 新しいジオメトリカラムが追加されたことを確認 \d my_schema.my_spatial_table addgeometrycolumn ------------------------------------------------------------------------- my_schema.my_spatial_table.geomcp_c SRID:4326 TYPE:CURVEPOLYGON DIMS:2 (1 row) Table "my_schema.my_spatial_table" Column | Type | Modifiers ----------+----------------------+------------------------------------------------------------------------- id | integer | not null default nextval('my_schema.my_spatial_table_id_seq'::regclass) geom | geometry(Point,4326) | geom_c | geometry | geomcp_c | geometry | Check constraints: "enforce_dims_geom_c" CHECK (st_ndims(geom_c) = 2) "enforce_dims_geomcp_c" CHECK (st_ndims(geomcp_c) = 2) "enforce_geotype_geom_c" CHECK (geometrytype(geom_c) = 'POINT'::text OR geom_c IS NULL) "enforce_geotype_geomcp_c" CHECK (geometrytype(geomcp_c) = 'CURVEPOLYGON'::text OR geomcp_c IS NULL) "enforce_srid_geom_c" CHECK (st_srid(geom_c) = 4326) "enforce_srid_geomcp_c" CHECK (st_srid(geomcp_c) = 4326) -- geometry_columnsビューへの新しいカラムの登録も -- SELECT f_geometry_column As col_name, type, srid, coord_dimension As ndims FROM geometry_columns WHERE f_table_name = 'my_spatial_table' AND f_table_schema = 'my_schema'; col_name | type | srid | ndims ----------+--------------+------+------- geom | Point | 4326 | 2 geom_c | Point | 4326 | 2 geomcp_c | CurvePolygon | 4326 | 2